Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了SQLite数据库中的锁机制,特别是关于读操作的锁获取策略。对于事务外的读操作和显式事务内的读操作,获取锁的策略有所不同。在不同隔离级别下,读操作的锁处理也会有所影响。通过一个实验验证了在并发事务中,如果一个事务长期持有 shared 锁不释放,另一个事务可能无法提交成功。实验结果显示了SQLite的锁升级机制,表明写操作的内存更改和实际的文件写入是分离的,而事务的COMMIT阶段是最关键的锁竞争点。这种设计保证了数据一致性,同时提高了并发性能。
167
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式包括操作系统原生包格式、语言原生包格式、curl shell 组合以及现代二进制打包工具。发布过程需要跨平台编译、打包、摘要验证、上传与设置分发工件。GoReleaser支持构建Go项目并拥有打包、生成校验和、上传等功能,但目前不支持构建Go以外的项目。通过破解方法和dummy.go文件,可以实现在GoReleaser中执行Rust构建。姊妹项目Godownloader可以生成curl-shell组合用于分发二进制文件。探索其他Rust发布工具如cargo-release、cargo-deliver和cargo-hublish,同时docker-rustup可用于在OSX上进行跨平台构建。
Tec
113
0
0
2024-10-10

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

在 Windows 平台构建 Rust 时可能遇到 openssl-sys 缺失的错误,需手动安装 OpenSSL。使用 choco 安装 OpenSSL 后,设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR,重启 VSCode 可解决问题。参考链接提供更多信息。
Tec
549
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是确保代码质量的关键。然而,并行执行测试可能会导致共享资源冲突。解决方案包括使用 serial_test crate 进行串行执行测试,使用互斥锁控制资源访问,创建独立的测试环境隔离测试,使用测试模块和一次性初始化共享初始化逻辑,以及使用 #[ignore] 属性标记容易受影响的测试。在选择策略时需考虑实际需求和项目结构,对大多数情况来说,使用 serial_test 或创建独立的测试环境是最有效的方法。需要注意并行测试可能带来的潜在问题,确保测试的可靠性和一致性。
Tec
76
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发时,通过条件编译可实现平台特定代码,例如根据目标平台选择不同的实现。然而,这可能导致静态分析工具错误标记特定代码为"未使用"。解决方法包括使用 #[allow(dead_code)] 属性、在测试中使用平台特定代码、条件编译标记方法的可见性、使用特性标志和条件编译属性抑制特定平台的未使用代码警告。这些方法保持了代码的跨平台兼容性和可读性,是处理平台特定代码和未使用代码警告的优雅解决方案。
Tec
81
0
0
2024-09-13
JS基础|let与var有什么区别?

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

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

使用 http-server 调试油猴脚本

本文介绍了如何使用 HTTP 服务器来高效地开发和调试油猴脚本,避免了频繁复制粘贴代码到油猴插件编辑器的低效问题。通过使用 Node.js 和 http-server 模块,可以在任意操作系统上进行开发。具体步骤包括安装 http-server、启动服务器、更新油猴脚本使用 HTTP URL,并在浏览器控制台检查错误信息。这种方法提升了对网页的定制化能力,特别适用于前端开发中涉及油猴脚本的需求。
Tec
72
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文主要介绍了在 Python 中使用泛型的方法,以及如何在实例方法中获取泛型参数 T 的类型。通过讲解 typing 库中的 get_args 和 get_origin 函数,可以实现获取类的泛型参数和原始类。文章还分析了 Generic 类的源码实现原理,以及在实例化泛型类后获取泛型参数类型的方法。整体来说,这篇文章涵盖了 Python 泛型的基本概念和实现技巧。
1114
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和