Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了 SQLite 的锁机制,特别是关于读操作的锁获取策略。在自动提交模式下,单条 SELECT 语句不会获取 SHARED 锁;在显式事务中,会获取 SHARED 锁并持续到事务结束。不同隔离级别也会影响读操作的锁获取。通过一个实验验证了这些行为,展示了事务 A 在执行 UPDATE 操作时不被阻塞,但在 COMMIT 时失败;最终数据库状态保持不变。SQLite 的锁升级是延迟的,写操作的内存更改和文件写入是分离的,COMMIT 阶段是关键的锁竞争点。这种设计既保证了数据一致性,又提供了良好的并发性能。
202
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式包括操作系统原生包格式、语言原生包格式、使用 curl shell 组合和现代二进制打包工具。打包和发布包括跨平台编译、打包、摘要、上传和设置分发工件。GoReleaser支持Go项目的打包和分发,但不支持Go以外的任何东西。破解GoReleaser构建过程可通过dummy.go文件和后阶段钩入来进行。神秘的Godownloader是GoReleaser的姊妹项目,可生成curl-shell组合,方便安装二进制文件。探索其他类似于GoReleaser的Rust发布工具,如cargo-release、cargo-deliver和cargo-hublish。如果想在OSX进行Rust跨平台构建,可尝试docker-rustup。
Tec
142
0
0
2024-10-10

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

在 Windows 平台构建 Rust 项目时若遇到 OpenSSL 缺失错误,需手动安装 OpenSSL。通过 choco 安装 OpenSSL,并设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR 后,重新启动 VSCode 即可解决问题。详细操作见提供的链接。该过程解决了在 Windows 上 openssl-sys 构建失败的问题。
Tec
778
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是确保代码质量的关键环节。并行执行测试可能导致共享资源冲突。解决方案包括使用 serial_test crate 进行串行测试,互斥锁控制资源访问,创建独立测试环境,使用测试模块和一次性初始化,以及忽略特殊测试。选择适当策略取决于项目需求,但重要的是意识到并行测试可能带来的问题,并采取措施确保测试可靠性。
Tec
92
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发时,使用条件编译实现平台特定代码是关键。通过条件编译,可以为不同平台提供最优实现,并保持接口一致性。然而,这可能导致静态分析工具错误标记代码为未使用。解决方法包括使用属性忽略警告、在测试中使用特定代码、标记方法可见性以及使用特性标志。其中,使用条件编译属性抑制特定平台的未使用代码警告是一种优雅解决方案,能精确控制警告、保持一致性、提高代码清晰度和完整性。这些策略帮助处理平台特定代码和未使用代码警告,确保代码跨平台兼容性和可读性。
Tec
99
0
0
2024-09-13
JS基础|let与var有什么区别?

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

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

使用 http-server 调试油猴脚本

最近学习前端知识,遇到使用油猴脚本的需求。油猴插件提升网页定制化能力,但本地开发效率低。文章介绍了如何使用 HTTP 服务器高效开发和调试油猴脚本。通过安装和启动 `http-server`,避免了文件访问权限问题,可在任何操作系统上进行开发。更新油猴脚本使用 HTTP URL,避免使用 `@require` 标签,确保 JS 脚本每次页面加载都重新加载。通过检查浏览器控制台,可以查看任何错误信息。
Tec
97
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了如何在Python中正确获取泛型类的参数类型。通过讲解`typing`库中的`get_args`和`get_origin`函数,解释了如何从泛型类中获取泛型参数以及原始类。文章还分析了`Generic`类的源代码,探讨了为什么必须在`__init__`和`__new__`之后才能使用泛型参数。最后,通过示例和源码解释了如何在实例方法中获取泛型参数`T`的真实类型。文章关键词:Python泛型 - 如何在实例方法中获取泛型参数T的类型?, Python, Python技巧.
1172
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和