Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了SQLite数据库的锁机制,特别是关于读操作的锁获取策略。在SQLite中,不同上下文下读操作的锁策略会有所不同,包括事务外的读操作和显式事务内的读操作。实验验证展示了事务A执行UPDATE操作时不会被阻塞,但在尝试COMMIT时失败(database is locked),最终数据库状态保持不变。总结指出SQLite的锁升级是延迟的,写操作的内存更改和文件写入是分离的,而事务的COMMIT阶段是关键的锁竞争点,这种设计既保证数据一致性,又提供了较好的并发性能。
240
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

作为消费者,我们喜欢通过以下方式之一获取二进制发布: 操作系统原生包格式,例如 deb、rpm 等。 语言原生包格式,例如 pip、npm 等。通过这种方式提供纯二进制文件并不常见,但有些项目会这样做,例如 puppeteer,它会下载最新的无头 Chrome 二进制文件。 使用 curl shel
Tec
156
0
0
2024-10-10

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

在 Windows 平台构建 Rust 时遇到 OpenSSL 缺失导致的错误,需要手动安装 OpenSSL,并设置环境变量。可以使用 choco 安装 OpenSSL,设置 OPENSSL_DIR 和 OPENSSL_LIB_DIR 环境变量,然后重启 VSCode 再进行构建。这样可以解决在 Windows 上 openssl-sys 构建失败的问题。
Tec
899
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

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

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

在 Rust 中进行跨平台开发时,可通过条件编译实现平台特定代码,例如根据不同平台选择不同的实现以保持接口一致性。然而,可能会面临静态分析工具误报的未使用代码警告问题。解决方法包括使用属性忽略警告、在测试中使用平台特定代码、条件编译标记方法的可见性以及使用特性标志。另一种方法是使用条件编译属性抑制特定平台的未使用代码警告,以精确控制警告、保持跨平台一致性、提高代码清晰度和文档完整性。这些方法有效处理平台特定代码的问题,保持代码跨平台兼容性和可读性。
Tec
117
0
0
2024-09-13
JS基础|let与var有什么区别?

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

在 JavaScript 中,var 和 let 都用于声明变量,但它们有一些重要的区别,这些区别主要体现在作用域和提升(hoisting)方面。 1. 作用域(Scope) var 声明的变量是函数作用域(Function Scope)或全局作用域(Global Scope)。 let 声明的变量
Tec
118
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

在学习前端知识时,碰到了需要使用油猴插件的小需求。油猴脚本提升了网页定制能力,但在本地开发时频繁复制粘贴代码效率低。通过使用 HTTP 服务器,避免了文件权限问题,可在任意操作系统上开发油猴脚本。安装 http-server 模块,启动服务器并更新油猴脚本以使用 HTTP URL。检查浏览器控制台以确保调试准确。
Tec
123
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了如何在Python中使用泛型。通过分析源码,发现可以使用`typing`库的`get_args`和`get_origin`函数来获取泛型参数的类型和原始类。文章详细解释了这两个函数的用法,并提供了在实例方法中获取泛型参数类型的方法。同时,还简要分析了`Generic`类的源码结构,说明了为什么必须在`__init__`和`__new__`之后才能使用这些类型参数。文章结尾给出了主要关键字"Python, Python技巧",强调了文章围绕Python泛型展开的内容。
1198
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和