Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了在SQLite数据库中的锁机制,特别是关于读操作的锁获取策略。文章介绍了在不同上下文下读操作获取锁的策略,以及不同隔离级别对读操作的影响。通过一个具体实验验证了在并发事务中,事务A执行UPDATE操作不被阻塞但在尝试COMMIT时失败的情况。最终数据库状态保持不变,验证了SQLite的锁升级是延迟的特点。总结指出SQLite的锁升级延迟直到需要写入数据库文件时才发生,同时写操作的内存更改与实际文件写入是分离的,COMMIT阶段是关键的锁竞争点。这种设计保证了数据的一致性和良好的并发性能。
243
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的常见方式包括操作系统原生包格式、语言原生包格式、curl shell 组合和现代二进制打包工具。打包和发布需要跨平台编译、打包、摘要、上传至提供者以及设置分发工件。GoReleaser为Go项目提供了出色的打包和分发功能,但不能构建Go以外的项目。通过破解GoReleaser构建过程,可以实现与Rust项目的集成。另外,GoDownloader是GoReleaser的姊妹项目,可生成curl-shell组合。探索其他Rust发布工具如cargo-release、cargo-deliver和cargo-hublish,以支持Rust跨平台构建。
Tec
159
0
0
2024-10-10

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

在 Windows 平台下构建 Rust 时可能出现缺少 OpenSSL 的错误,需要手动安装并设置环境变量。使用 choco 安装 OpenSSL,并设置 OPENSSL_DIR 和 OPENSSL_LIB_DIR 环境变量,然后重启 VSCode 即可解决问题。详细步骤请参考提供的链接。这为解决在 Windows 上使用 Rust 构建时遇到的 openssl-sys 构建失败问题提供了有效的解决方案。
Tec
925
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

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

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

在 Rust 中进行跨平台开发时,使用条件编译实现平台特定代码是常见的做法。通过 `#[allow(dead_code)]` 属性、在测试中使用平台特定代码、使用条件编译标记方法的可见性以及使用特性标志等策略,可以处理平台特定代码和未使用代码警告的问题。这些方法不仅可以精确控制警告,也能保持跨平台一致性,提高代码清晰度和文档完整性。总体而言,这些方法是处理平台特定代码的优雅解决方案,帮助有效管理不同平台环境下的代码实现。
Tec
119
0
0
2024-09-13
JS基础|let与var有什么区别?

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

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

使用 http-server 调试油猴脚本

本文介绍了如何高效地开发和调试油猴脚本,通过使用 HTTP 服务器避免文件访问权限问题,并跨操作系统进行开发。具体步骤包括安装并启动 `http-server` 模块,更新油猴脚本以使用 HTTP URL。在浏览器控制台检查错误信息以确保调试效果。这对学习前端知识、油猴脚本开发都有实际应用意义。
Tec
127
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文讨论了在 Python 中如何获取泛型参数 T 的类型,首先介绍了如何通过 typing 库的 get_args 和 get_origin 函数来获取类的泛型参数和原始类,然后详细解释了在实例方法中获取泛型参数的类型,并提供了解决方法。接着,对 Generic 类的源码进行了简要分析,说明了为什么必须在 \__init\__, \__new\__ 之后才能使用。最后,通过示例和代码解析阐述了 _GenericAlias、\__call\__ 方法和 get_args 的关系,帮助读者更好地理解泛型参数和类的使用方式。
1205
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和