Mkdir700's Note

Mkdir700's Note

Tec

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

在使用SQLite数据库时,经常会遇到并发事务的问题。本文深入探讨了SQLite的锁机制,特别是关于读操作的锁获取策略。SQLite中的读操作获取锁的策略根据不同上下文而变化,包括事务外的读操作和显式事务内的读操作。通过实验验证了在并发事务中,事务A能执行UPDATE操作但在尝试COMMIT时失败,数据库状态保持不变。SQLite的锁升级是延迟的,写操作的内存更改和实际文件写入是分离的,COMMIT阶段是关键的锁竞争点。这种设计保证了数据一致性,同时提供较好的并发性能。
160
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获得二进制发布的方式包括操作系统原生包格式、语言原生包格式、curl shell 组合和现代二进制打包工具。打包和发布二进制文件需要跨平台编译、打包、摘要验证、上传和设置分发工件等步骤。GoReleaser在构建和分发Go项目方面表现出色,但不支持Go以外的项目。通过破解的方法,可以实现GoReleaser构建过程的定制化。辅助项目GoDownloader提供生成curl-shell组合的功能。探索其他Rust发布工具如cargo-release、cargo-deliver、cargo-hublish。对于在OSX上进行Rust跨平台构建,可考虑使用docker-rustup。
Tec
111
0
0
2024-10-10

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

在 Windows 平台上构建 Rust 项目时可能会遇到 OpenSSL 缺失导致的错误。解决方法是使用 choco 安装 OpenSSL,并设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR。最后,重启 VSCode 可以顺利构建项目。这解决了在 Windows 上 openssl-sys 构建失败的问题。
Tec
518
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

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

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

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

使用 http-server 调试油猴脚本

本文介绍了在学习前端知识中碰到小需求需要使用油猴插件的背景,以及如何通过使用 HTTP 服务器高效地开发和调试油猴脚本。通过安装和启动 HTTP 服务器,更新油猴脚本以使用 HTTP URL,并在浏览器控制台检查错误信息,可以提升对网页的定制化能力和开发效率。文章关键词包括油猴脚本、前端以及使用 http-server 调试油猴脚本。
Tec
69
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了在 Python 中如何获取泛型参数的类型,通过使用 `typing` 库中的 `get_args` 和 `get_origin` 函数来实现。对于泛型类,可以通过 `get_args` 获取泛型参数,通过 `get_origin` 获取原始类。在实例方法中获取泛型参数T的类型需要借助 `self.__orig_class__`,并给出了相应的解决方法。此外,通过分析 `Generic` 类的源码,说明了为什么必须在 `__init__, __new__` 之后才能使用泛型参数的类型。文章揭示了 Python 中关于泛型参数类型获取的原理和实现细节。
1104
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和