Mkdir700's Note

Mkdir700's Note

最新文章

Tokio:为什么异步互斥锁比同步互斥锁更"昂贵"

The feature that the async mutex offers over the blocking mutex is the ability to keep it locked across an .await point. This makes the async mutex mo
181
0
0
2025-03-15

Tokio:应该使用哪种 mutex?

Mutex是一种同步原语,用于保护共享数据。标准库互斥锁会阻塞线程,而异步互斥锁会挂起当前任务而不会阻塞整个线程。标准库互斥锁不安全地跨越.await点持有锁,可能导致死锁,而异步互斥锁设计可以跨越.await点持有锁。标准库互斥锁性能开销较小适合短时间持有,而异步互斥锁由于支持异步操作性能开销较大适合需要执行异步操作的场景。最佳实践是默认选择标准库互斥锁,除非有特殊需求,还应考虑包装模式和对于IO资源使用专门的管理任务。Tokio与Rust相关。
238
0
1
2025-03-15

SOLID 原则详解

SOLID principles, including Single Responsibility Principle, Open/Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, and Dependency Inversion Principle, aim to improve software design flexibility, maintainability, and scalability. Each principle is detailed with core ideas, explanations, code examples, and benefits. By adhering to these principles, code becomes clearer, more concise, easier to test and maintain, and reduces coupling between classes. Following these principles leads to enhanced code extensibility, reduced risk of code modifications, lower maintenance costs, and improved system stability.
154
0
0
2025-03-14

常见设计模式 Python 实现

本文介绍了三种常见的设计模式在 Python 中的实现:单例模式、工厂模式和观察者模式。在单例模式中,实现了一个数据库连接池管理器,确保系统中只有一个连接池实例;在工厂模式中,设计了支持多种数据格式解析的文件处理系统,包括实现了 CSV、JSON、XML 和 YAML 文件格式的解析器;在观察者模式中,实现了一个股票市场监控系统,支持多种类型的观察者,如邮件通知、短信通知和应用内通知。这些设计模式为软件架构提供了灵活性和可扩展性。
127
0
0
2025-03-14

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

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

使用 GoReleaser 发布 Rust 二进制文件

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

Airpods 左右固件版本不一致

问题 我的耳机是 airpod3,刚买来的半年一直都是正常的,之后右边耳机总是会断开,也就是总是只有左边这只耳机有声音。 然后根据这里的步骤尝试忘记并重连 airpods,然后莫名奇妙一对耳机,建立两个耳机连接,我这里忘记截图了,总之,在设置界面能看到两个 airpods,实际上就是两个耳机分别建立
986
0
0
2024-07-18