Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了 SQLite 数据库的锁机制,特别是关于读操作的锁获取策略。在自动提交模式下,单条 SELECT 语句不获取 SHARED 锁;而在显式事务中,会获取 SHARED 锁并持续到事务结束。实验模拟了两个并发事务,验证了写操作的锁升级延迟特点,同时显示了 COMMIT 阶段的关键性。通过分析锁升级过程,得出 SQLite 的写操作内存更改与实际文件写入分离的设计,以及 COMMIT 阶段是锁竞争的关键点。这种设计既确保了数据一致性,又提高了并发性能。
140
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式包括操作系统原生包格式、语言原生包格式、curl shell 组合和现代二进制打包工具。打包和发布需要跨平台编译、打包、摘要验证和上传至提供者等步骤。GoReleaser在构建和分发Go项目方面表现出色,但不支持Go以外的项目。通过在GoReleaser中加入dummy.go文件和后续钩子来实现对Rust项目的支持。godownloader可以生成curl-shell组合,便于分发二进制文件。探索其他类似于GoReleaser的Rust发布工具如cargo-release、cargo-deliver和cargo-hublish。对于从OSX进行跨平台构建,docker-rustup是一个可行方案。
Tec
95
0
0
2024-10-10

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

在 Windows 平台下使用 Rust 构建时,出现了缺少 OpenSSL 的错误。解决方法是通过 choco 安装 OpenSSL,并设置相应环境变量。安装完毕后,需设置 OPENSSL_DIR 和 OPENSSL_LIB_DIR 环境变量,然后重启 VSCode 进行构建。这样可以解决在 Windows 上使用 rust-openssl 时出现的构建失败问题。
Tec
388
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是确保代码质量的关键环节。并行执行测试可能导致共享资源冲突,为解决这一问题,可以使用 serial_test crate 进行串行执行测试,使用互斥锁确保资源访问顺序,创建独立的测试环境避免相互干扰,或使用测试模块和一次性初始化减少重复代码。另外,对于特别受影响的测试,可以使用 #[ignore] 属性标记。选择合适的策略取决于具体需求,但重要的是意识到并行测试可能带来的潜在问题,确保测试的可靠性和一致性。
Tec
62
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发需要处理平台特定代码和未使用代码警告。条件编译提供了有效处理不同平台实现的方式,但可能导致静态分析工具错误标记代码。解决方法包括使用 #[allow(dead_code)] 属性、在测试中使用平台特定代码、条件编译标记方法可见性和使用特性标志。其中,使用条件编译属性抑制特定平台的未使用代码警告是一种精确控制、保持一致性、清晰、维护文档完整性的优雅解决方案。这些方法有助于保持代码的跨平台兼容性和可读性。
Tec
66
0
0
2024-09-13
JS基础|let与var有什么区别?

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

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

使用 http-server 调试油猴脚本

在学习前端知识中,油猴脚本能够提升网页定制化能力。为了高效开发和调试油猴脚本,可以使用 HTTP 服务器来避免文件访问权限问题。具体步骤包括安装和启动 http-server,并更新油猴脚本以使用 HTTP URL。通过在浏览器控制台检查错误信息,可以确保开发过程顺利进行。
Tec
61
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了在 Python 中如何利用 `typing` 库中的 `get_args` 和 `get_origin` 函数来获取泛型参数的类型。首先讲解了如何通过 `Dict[str, int]` 这样的表示方式来具体标注字典内键值对的类型,以及如何使用 `get_args` 和 `get_origin` 分别获取泛型参数和原始类。接着详细介绍了在实例方法中如何获取泛型参数 `T` 的实际类型,需要通过 `self.__orig_class__` 属性来获取原始类。最后对 `Generic` 类的源码进行了简要分析,解释了为什么必须在 `__init__` 和 `__new__` 之后才能使用泛型参数的类型。文章关键词包括 Python 泛型和 Python 技巧。
1065
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和