Mkdir700's Note

Mkdir700's Note

最新文章

常见设计模式 Python 实现

本文介绍了常见的设计模式在 Python 中的实现,包括单例模式、工厂模式和观察者模式。单例模式中实现了一个数据库连接池管理器,确保系统中只有一个连接池实例,连接池应支持获取连接和释放连接的功能。工厂模式设计了一个支持多种数据格式解析的文件处理系统,系统能处理 CSV、JSON、XML 和 YAML 格式的文件,并将它们转换为统一的内部数据结构。观察者模式实现了一个股票市场监控系统,能通知注册的观察者股票价格变化的情况。这些设计模式提供了灵活性和可扩展性,有助于优化代码结构与功能实现。
28
0
0
2025-03-14

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

本文深入探讨了 SQLite 数据库的锁机制,特别是关于读操作的锁获取策略。在自动提交模式下,单条 SELECT 语句不获取 SHARED 锁;而在显式事务中,会获取 SHARED 锁并持续到事务结束。实验模拟了两个并发事务,验证了写操作的锁升级延迟特点,同时显示了 COMMIT 阶段的关键性。通过分析锁升级过程,得出 SQLite 的写操作内存更改与实际文件写入分离的设计,以及 COMMIT 阶段是锁竞争的关键点。这种设计既确保了数据一致性,又提高了并发性能。
140
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进进制发布的方式可以通过操作系统原生包格式、语言原生包格式、curl shell 组合或现代二进制打包工具等方式实现。对于开源项目,使用 Github Releases 和 Git 标签可以轻松构建一个优秀的发布过程。虽然 GoReleaser 仅支持构建 Go 项目,但可以打包、生成校验和、上传到 Github releases 或 Amazon S 3,并能支持生成变更日志和语义版本。虽然目前 GoReleaser 还不支持 Rust,但可以通过破解方法来满足 GoReleaser 并执行必要的 Rust 构建。另外,godownloader 是 GoReleaser 的姊妹项目,可以帮助生成 curl-shell 组合来分发二进制文件。值得探索的其他 Rust 发布工具包括 cargo-release、cargo-deliver 和 cargo-hublish。
Tec
96
0
0
2024-10-10

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

在 Windows 平台构建 Rust 时可能会遇到 openssl-sys 构建失败的问题,需要手动安装 OpenSSL。使用 choco 安装 OpenSSL,并设置环境变量OPENSSL_DIR和OPENSSL_LIB_DIR,然后重启 VSCode即可解决该问题。详细步骤请参考提供的链接。
Tec
396
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是确保代码质量的关键环节。并行执行测试可能导致共享资源冲突,为解决这一问题,可以使用 serial_test crate 进行串行执行测试,使用互斥锁确保资源访问顺序,创建独立的测试环境避免相互干扰,或使用测试模块和一次性初始化减少重复代码。另外,对于特别受影响的测试,可以使用 #[ignore] 属性标记。选择合适的策略取决于具体需求,但重要的是意识到并行测试可能带来的潜在问题,确保测试的可靠性和一致性。
Tec
62
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发时,使用条件编译可以实现平台特定代码,保持接口一致性。然而,静态分析工具可能出现"未使用代码"警告。解决方法包括使用 `#[allow(dead_code)]` 属性、在测试中使用平台特定代码、标记方法可见性和使用特性标志等。另一种方法是使用条件编译属性抑制特定平台的未使用代码警告,精确控制警告、保持跨平台一致性、提高代码清晰度和文档完整性。这些方法共同解决了处理平台特定代码和未使用代码警告的问题,保持了代码的跨平台兼容性和可读性。
Tec
68
0
0
2024-09-13
Airpods 左右固件版本不一致

Airpods 左右固件版本不一致

AirPods 用户反映右耳机断开问题,导致只有左耳有声音,固件不一致。解决方案为等待自动升级,分别连接左右耳机,等待固件更新,重新配对。可参考苹果官方指南解决连接问题。
579
0
0
2024-07-18
在 MacOS 上获取应用的捆绑标识符(Bundle identifier)

在 MacOS 上获取应用的捆绑标识符(Bundle identifier)

在 MacOS 上,使用<code>osascript </code>命令行工具可以执行 AppleScript 和其他 OSA(Open Scripting Architecture)语言脚本。通过<code>-e</code>选项可以直接在命令行中执行脚本代码,例如获取应用程序的 bundle identifier。Bundle identifier 是一个唯一的字符串,用于标识一个应用程序,通常类似于反向域名格式,如<code>com.companyname.appname</code>。通过命令<code>osascript -e 'id of app &quot;Obsidian&quot;'</code>可以获取名为&quot;Obsidian&quot; 应用程序的 bundle identifier,如果应用程序未安装或未运行,则可能会返回错误信息。
326
0
0
2024-07-17
JS基础|let与var有什么区别?

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

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

使用 http-server 调试油猴脚本

在学习前端知识中,油猴脚本能够提升网页定制化能力。为了高效开发和调试油猴脚本,可以使用 HTTP 服务器来避免文件访问权限问题。具体步骤包括安装和启动 http-server,并更新油猴脚本以使用 HTTP URL。通过在浏览器控制台检查错误信息,可以确保开发过程顺利进行。
Tec
61
0
0
2024-07-12