Mkdir700's Note
Mkdir700's Note
Slow is Smooth, Smooth is Fast.
首页
Tec
工具
归档
说说
友链
关于
最新文章
Tokio:应该使用哪种 mutex?
互斥锁是一种同步原语,用于保护共享数据,确保只有一个线程可以访问。标准库互斥锁在获取锁时会阻塞整个线程,适合短时间持有的场景,而异步互斥锁在获取锁时会挂起当前任务,适合需要在持有锁的同时执行异步操作的场景。标准库互斥锁不能安全地跨越.await点持有锁,可能导致死锁,而异步互斥锁设计为可以跨越.await点持有锁。最佳实践是默认选择标准库互斥锁,特殊需求再使用异步互斥锁,同时可以考虑将互斥锁包装在结构体中。
Rust
90
0
1
2025-03-15
SOLID 原则详解
SOLID 原则是面向对象设计中的五个重要原则,包括单一职责原则(S),开闭原则(O),里氏替换原则(L),接口隔离原则(I),依赖倒置原则(D)。这些原则旨在提高软件设计的灵活性、可维护性和可扩展性。单一职责原则要求一个类只负责一项职责,避免多个职责耦合;开闭原则强调对扩展开放而对修改封闭,通过抽象和多态实现扩展;里氏替换原则指出子类可以替换基类且不影响程序正确性;接口隔离原则要求客户端不应依赖不需要的方法,应使用小而精的接口;依赖倒置原则指高层模块不应直接依赖低层模块,而是依赖抽象,通过依赖注入等方式实现抽象依赖。这些原则的遵循使代码更清晰、灵活,降低耦合度,提高可维护性和复用性。
架构设计
65
0
0
2025-03-14
常见设计模式 Python 实现
本文介绍了三种常见的设计模式的Python实现。首先讨论了单例模式,通过实现一个数据库连接池管理器来确保系统中只有一个连接池实例。其次介绍了工厂模式,设计了一个文件处理系统,支持多种数据格式解析,实现了抽象基类和工厂类。最后讨论了观察者模式,实现了股票市场监控系统,当股票价格变化时通知注册的观察者,包括邮件通知、短信通知和应用内通知。这些设计模式的Python实现为架构设计提供了有用的参考内容。
架构设计
35
0
0
2025-03-14
SQLite 锁机制:读锁策略与并发事务分析
本文深入探讨了SQLite数据库的锁机制,特别是关于读操作的锁获取策略。在不同上下文下,读操作会根据事务外、显式事务内和不同隔离级别的影响来获取SHARED锁。通过具体实验验证了对比事务A和事务B的并发操作,事务A在尝试更新并提交操作时被阻塞,最终数据库状态未发生改变,说明SQLite的锁升级是延迟的,写操作的内存更改与文件写入分离,COMMIT阶段是关键的锁竞争点。这种设计保证了数据一致性和提供了良好的并发性能。
Tec
数据库
SQLite
数据库锁
164
0
3
2024-12-26
使用 GoReleaser 发布 Rust 二进制文件
消费者获得二进制发布的方式包括操作系统原生包格式、语言原生包格式、使用curl shell组合和现代二进制打包工具。发布过程需要跨平台编译、打包、摘要和上传。GoReleaser支持Go项目的打包和分发,但不支持Go以外的构建。通过放置dummy.go文件并在构建后阶段钩入,可以实现GoReleaser支持Rust项目。GoDownloader是GoReleaser的姊妹项目,可生成curl-shell组合用于安装二进制文件。尽管有其他Rust发布工具如cargo-release、cargo-deliver和cargo-hublish,GoReleaser仍是一个出色的选择。
Tec
112
0
0
2024-10-10
解决在 Windows 上 openssl-sys 构建失败的问题
在 Windows 平台构建 Rust 时,若遇到 openssl-sys 构建失败的问题,错误提示缺少 OpenSSL。解决方法为使用 choco 安装 OpenSSL,并设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR。安装完成后,需重启 VSCode 再进行构建。详细步骤参考提供的文章链接。
Tec
Rust
547
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略
在Rust开发中,测试是保证代码质量的重要环节,但并行执行测试可能导致共享资源冲突。解决方案包括使用serial_test crate标记串行测试、使用互斥锁确保资源独占、创建独立测试环境隔离影响、使用测试模块和一次性初始化减少重复、以及使用#[ignore]属性标记易受影响测试。选择合适策略取决于具体需求,但重要的是意识到并行测试可能带来的问题并采取措施保证测试可靠性和一致性。
Tec
Rust
75
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告
在 Rust 中进行跨平台开发时,通过条件编译可实现平台特定代码,例如根据目标平台选择不同的实现。然而,这可能导致静态分析工具错误标记特定代码为"未使用"。解决方法包括使用 #[allow(dead_code)] 属性、在测试中使用平台特定代码、条件编译标记方法的可见性、使用特性标志和条件编译属性抑制特定平台的未使用代码警告。这些方法保持了代码的跨平台兼容性和可读性,是处理平台特定代码和未使用代码警告的优雅解决方案。
Tec
81
0
0
2024-09-13
Airpods 左右固件版本不一致
AirPods 用户遇到耳机右侧断开的问题,发现两只耳机固件版本不一致导致只有一侧有声音。解决方案是等待后台固件升级,或按步骤重新连接左右耳机以确保固件一致。耳机升级是被动触发,用户需将设备靠近进行更新。最后重置连接后,可以正常使用 AirPods。
未定义
数码
701
0
0
2024-07-18
在 MacOS 上获取应用的捆绑标识符(Bundle identifier)
在 MacOS 上,使用`osascript`命令行工具可以执行 AppleScript 和其他 OSA 语言脚本。通过`-e`选项,可以直接在命令行中输入和执行脚本代码,例如获取应用程序的 bundle identifier。Bundle identifier 是一个唯一标识应用程序的字符串,格式类似于反向域名。如果应用程序已安装并运行,命令将返回其 bundle identifier;否则会出现错误信息。
wiki
MacOS
Command
365
0
0
2024-07-17
上一页
下一页