Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了 SQLite 的锁机制,着重分析了读操作的锁获取策略。在不同上下文中,SQLite 的读操作获取锁的策略会有所不同,例如在事务外和显式事务内的表现。通过具体实验验证,展示了在并发事务中,事务 A 的更新操作未被阻塞,但在 COMMIT 阶段失败,最终数据库状态未变。时序图显示了锁升级过程,总结指出 SQLite 的锁升级延迟,写操作内存更改与文件写入分离,COMMIT 阶段是锁竞争点。这种设计在保证数据一致性的同时提供了良好的并发性能。
283
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

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

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

在 Windows 上构建 Rust 时遇到 openssl-sys 错误,缺少 OpenSSL。解决方法是使用 choco 安装 OpenSSL,并设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR。安装完成后重新启动 VSCode 即可。详细步骤可参考相关链接。
Tec
1073
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

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

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

在 Rust 中进行跨平台开发时,使用条件编译实现平台特定代码是一种有效方法。通过 `#[allow(dead_code)]` 属性来忽略静态分析工具可能产生的"未使用代码"警告。通过在测试中使用平台特定代码和条件编译标记方法的可见性,可以确保代码在不同平台上被正确调用。同时,使用特性标志和条件编译属性抑制特定平台的未使用代码警告也是处理平台特定代码的有效策略。这些方法不仅解决了静态分析工具的警告问题,还保持了代码的跨平台兼容性和可读性。因此,处理平台特定代码和未使用代码警告需要综合考虑这些优雅解决方案。
Tec
146
0
0
2024-09-13
JS基础|let与var有什么区别?

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

在 JavaScript 中,var 和 let 用于声明变量,但它们区别主要在作用域和提升方面。var 是函数或全局作用域,let 是块作用域。对于 hoisting,var 会被提升但不初始化,let 未初始化会导致 ReferenceError。重复声明时,var 可以覆盖,let 会报错。在全局对象属性方面,var 会成为全局对象属性,而 let 不会。let 提供更严格的作用域控制和更安全的变量声明方式,更适合现代 JavaScript 开发。
Tec
149
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

在前端学习中,使用油猴脚本可以定制网页,提升用户体验。文章介绍了如何使用 HTTP 服务器高效开发和调试油猴脚本,避免权限问题,并跨操作系统进行开发。通过安装 http-server 模块,启动服务器,并更新油猴脚本以使用 HTTP URL,实现重新加载 JS 脚本的目的。最后,建议检查浏览器控制台以查找错误信息。
Tec
156
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

#Python #Python泛型 先上解决方法: https://stackoverflow.com/questions/57706180/generict-base-class-how-to-get-type-of-t-from-within-instance 再来简单分析下源码。 talk i
1249
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和