Mkdir700's Note

Mkdir700's Note

Tec

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

在使用 SQLite 数据库时,经常会遇到并发事务问题。本文深入探讨了 SQLite 的锁机制,重点是关于读操作的锁获取策略。SQLite 中的读操作锁策略根据不同上下文变化,包括事务外的读操作和显式事务内的读操作等。不同隔离级别也会影响读操作的锁获取。通过实验验证了事务 A 的更新操作不被阻塞,但在尝试提交时失败(database is locked),最终数据库状态维持不变。SQLite 的锁升级是延迟的,写操作的内存更改和文件写入是分离的,事务的 COMMIT 阶段是关键的锁竞争点。这种设计既确保了数据一致性,又提升了并发性能。
192
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式有多种,包括操作系统原生包格式、语言原生包格式、curl shell 组合和现代二进制打包工具。发布过程需要跨平台编译、打包、摘要验证、上传到指定路径和设置分发工件。GoReleaser提供了优秀的打包和分发功能,但仅支持Go项目。破解GoReleaser构建过程可实现Rust项目支持。GoDownloader是GoReleaser的姊妹项目,可生成curl-shell组合用于分发二进制文件。探索其他Rust发布工具如cargo-release、cargo-deliver和cargo-hublish。对于从OSX进行跨平台构建,可以使用docker-rustup。
Tec
134
0
0
2024-10-10

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

在 Windows 下构建 Rust 项目时可能会因缺少 OpenSSL 而失败,需要手动安装和设置环境变量。通过 choco 安装 OpenSSL,设置 OPENSSL_DIR 和 OPENSSL_LIB_DIR 环境变量,并重启 VSCode 后重新构建可解决该问题。详细解决方法可参考相关文档和链接。
Tec
712
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

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

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

在 Rust 中进行跨平台开发时,使用条件编译可以实现平台特定代码,保持接口一致性。然而,可能会遇到静态分析工具错误标记代码未使用的问题。解决方法包括使用 `#[allow(dead_code)]` 属性、在测试中使用平台特定代码、使用条件编译标记方法可见性,以及使用特性标志。另外,可以使用条件编译属性抑制特定平台的未使用代码警告,精确控制代码的行为,保持跨平台一致性,提高代码清晰度和文档完整性。这些方法有效解决静态分析工具的警告问题,保持代码的兼容性和可读性。
Tec
94
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
106
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

学习前端知识时,遇到油猴脚本需求,但频繁复制粘贴代码效率低,通过使用 HTTP 服务器可以高效开发和调试油猴脚本。步骤包括安装 `http-server` 模块、启动服务器、更新脚本使用 HTTP URL。调试时需检查浏览器控制台错误信息。HTTP 服务器避免了文件访问权限问题,适用于任意操作系统。
Tec
90
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了如何在 Python 中使用泛型,通过示例和源码分析详细说明了如何在实例方法中获取泛型参数 `T` 的类型。在源码分析中提到了 `typing` 库中的 `get_args` 和 `get_origin` 函数,以及 `Generic` 泛型类的内部实现机制。通过源码解析展示了如何在类内部通过 `self.__orig_class__` 获取原始类的方法。文章重点解释了 `Generic` 源码结构,以及具体方法的实现过程。文章关键词:`Python, 泛型, Python技巧`。
1155
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和