Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了SQLite的锁机制,特别是关于读操作的锁获取策略。在SQLite中,读操作的锁策略根据不同上下文而变化,包括事务外的读操作和显式事务内的读操作。不同隔离级别也会影响锁的获取方式。通过一个实验验证了这些行为,展示了事务A在尝试提交时失败,而事务B成功提交,最终数据库状态保持不变。文章总结了SQLite的锁升级是延迟的特点,写操作的内存更改和实际的文件写入是分离的,以及事务的COMMIT阶段是关键的锁竞争点。这种设计既保证了数据一致性,又提供了较好的并发性能。
152
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式包括操作系统原生包格式、语言原生包格式、使用curl shell组合和现代二进制打包工具。打包和发布的步骤包括跨平台编译、打包、摘要、上传和设置分发工件。GoReleaser支持Go项目的打包和发布,在构建过程中可通过破解方法支持Rust项目。GoDownloader是GoReleaser的姊妹项目,可生成curl-shell组合。探索其他Rust发布工具如cargo-release、cargo-deliver和cargo-hublish。对于跨平台构建,可以使用docker-rustup。当前GoReleaser不支持构建Go以外的项目。
Tec
104
0
0
2024-10-10

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

在 Windows 平台构建 Rust 项目时可能会遇到缺少 OpenSSL 的错误,需要手动安装和设置环境变量。通过使用 choco 安装 OpenSSL 并设置 OPENSSL_DIR 和 OPENSSL_LIB_DIR 环境变量,问题可得到解决。最后,重启 VSCode 即可成功构建。详细方法和相关信息可参考提供的链接资源。
Tec
485
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是保证代码质量的关键环节。然而,测试套件变大时,可能出现并行执行测试导致的共享资源冲突问题。解决方案包括使用 serial_test crate 标记应该串行执行的测试,使用互斥锁确保资源访问的独占性,创建独立的测试环境隔离测试,使用一次性初始化减少重复代码,以及使用 #[ignore] 属性分离影响并行执行的测试。选择适当策略取决于具体需求和项目结构,但重要的是意识到并行测试可能带来的潜在问题,并采取措施确保测试可靠性和一致性。
Tec
67
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发,使用条件编译实现平台特定代码是关键。然而,可能出现静态分析工具错误标记代码为"未使用"的问题。解决方法包括使用#[allow(dead_code)]属性忽略警告、在测试中使用平台特定代码、使用条件编译标记方法的可见性以及使用特性标志。另外,通过使用条件编译属性抑制特定平台的未使用代码警告可以精确控制警告、保持跨平台一致性、提高代码清晰度和完整性。这些方法解决了静态分析工具的警告问题,同时保持了代码的跨平台兼容性和可读性,是处理平台特定代码的优雅解决方案。
Tec
73
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
95
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

本文介绍了如何通过使用 HTTP 服务器高效地开发和调试油猴脚本,解决了频繁复制粘贴代码到油猴插件编辑器的低效问题。步骤包括安装和启动`http-server`模块,更新油猴脚本以使用 HTTP URL,并说明了不适用 `@require` 的原因。同时指导如何检查浏览器控制台以确保调试成功。这一方法避免了文件访问权限问题,适用于任意操作系统,提升了对网页的定制化能力,为前端开发带来便利。
Tec
66
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了在 Python 中如何使用泛型,以及如何在实例方法中获取泛型参数T的类型。通过讲解使用 typing 库的 get_args 和 get_origin 函数,以及实例分析 Generic 类的源码,详细说明了如何正确操作泛型参数。重点强调了必须在初始化完成后才能获取泛型参数类型,并展示了如何通过内省功能实现获取泛型参数的类型。文章讲解了类的调用和初始化过程,解释了为什么必须在特定步骤后才能使用泛型参数。文章关键词为:Python 泛型 - 如何在实例方法中获取泛型参数T的类型?, Python, Python技巧。
1092
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和