Mkdir700's Note

Mkdir700's Note

Tec

SQLite 锁机制:读锁策略与并发事务分析

本文深入探讨了 SQLite 数据库的锁机制,特别是关于读操作的锁获取策略。在事务外的读操作中,单条 SELECT 语句不会获取 SHARED 锁,而在显式事务内的读操作中,会获取 SHARED 锁并持续到事务结束。不同隔离级别也会影响读操作的锁获取方式。通过实验模拟了并发事务,验证了事务 A 能执行 UPDATE 操作但在 COMMIT 时失败,最终数据库状态保持不变。文章总结了 SQLite 的锁升级延迟特性以及 COMMIT 阶段的关键性,表明了其在保证数据一致性和提供较好并发性能方面的设计优势。
114
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式包括操作系统原生包格式、语言原生包格式、curl shell组合和现代二进制打包工具。发布二进制文件需跨平台编译、打包、摘要验证和上传至特定路径。GoReleaser专注于构建Go项目,支持生成变更日志和上传至Github releases或Amazon S3。虽然GoReleaser无法构建Go以外的项目,但可通过破解方法实现与Rust的整合。另外,GoDownloader是GoReleaser的姊妹项目,可自动生成curl-shell组合来分发二进制文件。此外,探索其他类似GoReleaser的Rust发布工具如cargo-release等。
Tec
72
0
0
2024-10-10

解决在 Windows 上 openssl-sys 构建失败的问题

在 Windows 平台构建 Rust 时可能出现 openssl-sys 错误,提示缺少 OpenSSL。在 Linux 下可用包管理工具解决,但在 Windows 下需手动操作。解决方法是使用 choco 安装 OpenSSL,并设置环境变量。安装完成后,设置 OPENSSL_DIR 和 OPENSSL_LIB_DIR 环境变量,重启 VSCode 后即可构建成功。详细教程见关键词中提供的链接。
Tec
266
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

解决 Rust 测试中的并行执行冲突:保护共享资源的策略

在 Rust 开发中,测试是保证代码质量的关键环节。然而,当测试套件变大时,并行执行测试可能导致共享资源冲突。解决方案包括使用 serial_test crate 标记串行执行测试、使用互斥锁控制资源访问、创建独立测试环境和使用测试模块一次性初始化。另外,可以使用 #[ignore] 属性标记受影响的测试,单独运行。选择合适策略取决于需求和项目结构,但重要的是意识到并行测试可能带来的问题,并采取措施确保测试可靠性。
Tec
50
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

在 Rust 中进行跨平台开发时,使用条件编译实现平台特定代码是一种有效策略。通过 `#[allow(dead_code)]` 属性、测试中使用平台特定代码、条件编译标记方法的可见性以及特性标志,可以解决由于不同平台而引起的未使用代码警告问题。这些方法保持代码的一致性和可读性,同时确保在特定平台上提供最佳实现,是处理平台特定代码和未使用代码警告的优雅解决方案。
Tec
53
0
0
2024-09-13
JS基础|let与var有什么区别?

JS基础|let与var有什么区别?

在 JavaScript 中,使用 `var` 和 `let` 声明变量具有不同的作用域和提升机制。`var` 的作用域可以是函数或全局,而 `let` 的作用域是块级的。变量提升方面,`var` 在函数或全局作用域顶部提升但不初始化,而 `let` 在块级作用域顶部提升,未初始化访问会报错。重复声明中,`var` 允许重复声明,而 `let` 不允许。在全局变量方面,`var` 的全局变量成为全局对象属性,而 `let` 不会。因此,`let` 提供更严格的作用域控制,更安全,更适合现代 JavaScript 开发。
Tec
83
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

本文介绍了在学习前端知识时碰到一个小需求,需要使用油猴(Tampermonkey)脚本。作者发现频繁复制粘贴代码到油猴插件编辑器中效率低下,因此提出通过使用 HTTP 服务器来高效开发和调试油猴脚本的方法。具体步骤包括安装和启动 `http-server`,更新油猴脚本以使用 HTTP URL,并检查浏览器控制台以确认错误。这种方法避免了文件访问权限问题,适用于任何操作系统,提升了对网页的定制化能力。
Tec
55
0
0
2024-07-12
如何在 Python 中混合使用同步和异步函数?

如何在 Python 中混合使用同步和异步函数?

异步编程可以提高应用程序的性能和吞吐量,因为它可以充分利用 CPU 和 I/O 资源。当某个任务被阻塞时,事件循环可以切换到另一个任务,从而避免浪费 CPU 时间。此外,异步编程还可以简化代码,使其更易于维护和调试。我们最常用的是同步编程,在同步场景中,某个任务被阻塞时,整个线程都会被挂起,直到
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

本文主要介绍了在 Python 中如何通过 `typing` 库中的 `get_args` 和 `get_origin` 函数来获取泛型参数的类型信息。通过示例代码展示了在实例方法中如何获取泛型参数 `T` 的类型。文章还简要分析了 `Generic` 类的源码,解释了为什么必须在 `__init__, __new__` 执行后才能使用泛型参数。通过分析 `Generic` 类的源码,展示了其内部的实现逻辑,以及泛型类的实例化过程。文章关键词:Python 泛型 - 如何在实例方法中获取泛型参数T的类型?,Python,Python技巧
1043
0
1
2023-02-23
1143. 最长公共子序列