Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了SQLite数据库的锁机制,特别关注了读操作的锁获取策略。在具体实验中,验证了事务A能执行UPDATE操作但在尝试COMMIT时失败的情况,最终数据库状态未变。关键点包括UPDATE操作延迟获取EXCLUSIVE锁、内存更改与文件写入分离、COMMIT阶段是关键锁竞争点。SQLite的锁升级延迟设计保证了一致性与并发性能。
200
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式有几种:操作系统原生包格式、语言原生包格式、curl shell 组合和现代二进制打包工具。打包发布需要跨平台编译、打包、摘要、上传和设置分发工件。GoReleaser对构建Go项目的打包和分发做得很好,但不能构建除Go外的任何东西。通过在OSX主机上进行跨平台构建,GoReleaser构建过程可以被破解,并推荐使用GoDownloader生成curl-shell组合。尽管有其他类似GoReleaser的Rust发布工具,但仍有缺陷。对于Rust跨平台构建,推荐使用docker-rustup。
Tec
139
0
0
2024-10-10

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

在 Windows 上构建 Rust 项目时,出现了缺少 OpenSSL 的错误。需要手动操作安装 OpenSSL,并设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR。最后重启 VSCode 即可解决问题。详细步骤可参考相关链接。
Tec
766
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

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

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

在 Rust 中,处理跨平台开发时需要为不同的操作系统提供不同的实现,可通过条件编译实现平台特定代码。然而,这可能导致静态分析工具错误地标记特定代码为"未使用"。解决方法包括使用 `#[allow(dead_code)]` 属性、在测试中使用平台特定代码、条件编译标记方法的可见性以及使用特性标志。其中,使用条件编译属性抑制特定平台的未使用代码警告是一个优雅解决方案,可精确控制警告、保持跨平台一致性、提高代码清晰度和文档完整性。这些策略帮助有效处理平台特定代码和未使用代码警告问题,保持代码的跨平台兼容性和可读性。
Tec
97
0
0
2024-09-13
JS基础|let与var有什么区别?

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

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

使用 http-server 调试油猴脚本

本文介绍了如何高效地开发和调试油猴脚本,通过使用 HTTP 服务器可以避免文件访问权限问题,在任意操作系统上进行开发。具体步骤包括安装 `http-server` 模块、启动 HTTP 服务器、更新油猴脚本以使用 HTTP URL。文章还提到了在浏览器控制台中检查错误信息的方法。这些技巧对于前端开发者处理油猴脚本相关需求非常实用。
Tec
93
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

Python中的泛型类使用方法需要注意,通过typing库中的get_args和get_origin函数可以正确获取泛型参数的类型。对于泛型参数的获取,可以通过dict类型的注解来实现,如Dict[str, int]中的str, int就是Dict的泛型参数。在实例方法中获取泛型参数T的类型需要使用__orig_class__属性。简要分析了Generic源码,说明了为什么必须在init和new方法之后才能使用。通过分析_GenericAlias类的代码实现,展示了为什么需要使用()来实例化对象。最后通过深入研究get_args函数的实现,完整解释了如何获取泛型类型的参数。
1166
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和