Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了SQLite数据库的并发事务问题,特别关注了读操作的锁获取策略。在实验验证中,事务A可以执行UPDATE操作但在尝试COMMIT时失败(database is locked),最终数据库状态保持不变。关键点包括UPDATE操作不立即获取EXCLUSIVE锁、内存更改与实际写入分离、COMMIT阶段是锁竞争点。SQLite的锁升级是延迟的,写操作延迟到真正需要写入文件时才发生,保证数据一致性且提供较好并发性能。
173
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

作为消费者,我们可以通过多种方式获取二进制发布,如操作系统原生包格式、语言原生包格式、curl shell 组合以及现代二进制打包工具。打包和发布二进制文件需要跨平台编译、打包、摘要验证、上传和设置分发工件。使用 GoReleaser 可以方便构建、生成 sha 256 校验和、上传至 Github 或 Amazon S 3,并生成变更日志等。GoReleaser支持Go项目,但对于构建Rust项目,可以通过设置dummy.go和后阶段脚本来绕过。此外,有姊妹项目Godownloader可生成安装二进制文件的curl-shell组合。最后,尽管存在其他Rust发布工具如cargo-release、cargo-deliver和cargo-hublish,但仍需进一步完善。
Tec
116
0
0
2024-10-10

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

在 Windows 上构建 Rust 时遇到 openssl-sys 错误,缺少 OpenSSL,Linux 下可用包管理工具解决,Windows 需手动操作。解决方法是使用 choco 安装 OpenSSL,并设置环境变量,重启 VSCode 即可。详细解决步骤可参考提供的链接文档。
Tec
582
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是确保代码质量的关键环节。然而,并行执行测试可能会导致共享资源冲突。解决方案包括使用 serial_test crate 进行串行测试、使用互斥锁控制资源访问、创建独立测试环境、使用测试模块和一次性初始化以及使用 #[ignore] 属性标记测试。选择适合项目需求的策略十分重要,保障测试的可靠性和一致性。
Tec
77
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发时,使用条件编译实现平台特定代码是一种有效的做法。通过为不同平台提供最优实现并保持接口一致性,可以提高代码的可维护性。然而,这可能引起静态分析工具错误标记特定代码未使用的问题。解决方法包括添加 #[allow(dead_code)] 属性、在测试中使用平台特定代码、使用条件编译标记方法的可见性,以及使用特性标志来控制代码的编译行为。这些方法能够精确控制代码警告、保持跨平台兼容性、提高代码清晰度和文档完整性,是处理平台特定代码的优雅解决方案。
Tec
83
0
0
2024-09-13
JS基础|let与var有什么区别?

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

在 JavaScript 中,var 和 let 用于声明变量,但它们区别主要在作用域和提升方面。var 是函数作用域或全局作用域,而 let 是块作用域。var 提升到函数或全局作用域顶部,但不初始化;let 提升到块作用域顶部,访问未初始化的 let 会报错。var 允许重复声明变量,let 不允许。var 声明的全局变量成为全局对象属性,let 不会。let 提供更严格的作用域控制和更安全的变量声明方式,适合现代 JavaScript 开发。
Tec
100
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

学习前端知识时,发现油猴插件增强网页定制能力。为高效开发和调试油猴脚本,可使用 HTTP 服务器。通过 Node.js 安装 `http-server`,启动后更新油猴脚本使用 HTTP URL。检查浏览器控制台以排查错误。这一方法可避免复制粘贴代码提升开发效率。
Tec
76
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了在 Python 中如何使用泛型,以及如何在实例方法中获取泛型参数 T 的类型。通过分析源码,可以利用 typing 库的 get_args 和 get_origin 函数来获取泛型参数的具体类型。此外,还详细解释了 Generic 类的源码实现机制,以及通过自定义类的写法来实例化对象的过程。文章深入浅出地解释了 Python 中泛型的工作原理和用法。
1122
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和