Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了 SQLite 数据库的锁机制,重点关注读操作的锁获取策略。在不同上下文下,读操作获取锁的方式会有所变化,包括自动提交模式下和显式事务内的读操作。实验验证表明,事务 A 能够执行 UPDATE 操作但在 COMMIT 阶段失败(database is locked),而事务 B 成功提交。SQLite 的锁升级是延迟的,写操作的内存更改和实际写入文件是分离的,COMMIT 阶段是关键的锁竞争点。这种设计保证了数据一致性并提高了并发性能。
250
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式包括操作系统原生包格式、语言原生包格式、curl shell 组合以及现代二进制打包工具。打包和发布需要跨平台编译、打包、摘要验证、上传到提供者和设置分发工件。GoReleaser支持构建Go项目并能打包、上传到Github releases或Amazon S3,但无法构建Go以外的内容。使用dummy.go文件和后阶段钩入可破解GoReleaser构建过程,而godownloader可生成shell脚本。探索其他类似于GoReleaser的Rust发布工具,如cargo-release、cargo-deliver和cargo-hublish。如果需要在OSX进行Rust跨平台构建,可使用docker-rustup。
Tec
170
0
0
2024-10-10

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

在 Windows 上构建 Rust 时出现 openssl-sys 错误,需要手动安装 OpenSSL。使用 choco 安装 OpenSSL 后,设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR,重启 VSCode 即可解决问题。详细步骤可参考引用链接。该方法适用于解决 Windows 上 OpenSSL 构建失败的问题。
Tec
967
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是确保代码质量的关键环节。并行执行测试可能导致共享资源冲突问题,影响测试的有效性。为解决这一问题,可以使用 serial_test crate 进行测试串行执行,使用互斥锁控制资源访问,创建独立的测试环境隔离测试,或者利用测试模块和一次性初始化共享初始化逻辑。另外,可以使用 #[ignore] 属性标记并独立运行特定测试。选择合适的策略可有效保护共享资源,确保测试的可靠性和一致性。
Tec
114
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发时,使用条件编译可以实现平台特定代码,保持接口一致性。然而,静态分析工具可能会误标特定代码为“未使用”。解决方法包括使用#[allow(dead_code)]属性、在测试中使用平台特定代码、使用条件编译标记方法的可见性和使用特性标志。另外,可以使用条件编译属性来抑制特定平台的未使用代码警告,精确控制代码行为并保持跨平台一致性。这些解决方案保证了代码的兼容性和清晰性,有效处理了平台特定代码和未使用代码警告的问题。
Tec
126
0
0
2024-09-13
JS基础|let与var有什么区别?

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

在 JavaScript 中,var 和 let 用于声明变量,有作用域和提升方面的重要区别。var 是函数作用域或全局作用域,而 let 是块作用域。通过示例可见,var 声明的变量会被提升但未初始化,而 let 则会导致 ReferenceError。重复声明方面,var 允许重复声明,let 不允许。此外,var 声明的全局变量会成为全局对象属性,而 let 不会。综上,let 提供更严格的作用域控制和更安全的变量声明,更适合现代 JavaScript 开发。
Tec
134
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

本文介绍了如何通过使用 HTTP 服务器高效地开发和调试油猴脚本。通过安装和启动 `http-server` 模块,可以避免文件访问权限问题,并适用于任何操作系统。更新油猴脚本以使用 HTTP URL,而非静态 URL,以便每次页面加载都重新加载 JS 脚本。调试时,可以在目标网页上检查浏览器控制台以查看错误信息。这种方法提升了开发效率,特别适用于前端开发人员。
Tec
135
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了在 Python 中如何获取泛型参数的类型。首先提供了解决方法的链接,然后通过分析代码展示了如何使用 `typing` 库中的 `get_args` 和 `get_origin` 函数来获取泛型参数的具体类型。文章还讨论了在实例方法中获取泛型参数 `T` 类型的方法,并解释了为什么必须在初始化完成后才能使用。最后,对 `Generic` 源码进行了简要分析,说明了在 Python 中对于泛型类和参数的处理方式。
1216
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和