Mkdir700's Note
Mkdir700's Note
Slow is Smooth, Smooth is Fast.
首页
标签
归档
友链
关于
首页
标签
归档
友链
关于
最新文章
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
Rust
128
0
0
2025-03-15
Tokio:应该使用哪种 mutex?
基本概念 互斥锁(Mutex)是一种同步原语,用于保护共享数据,确保在任何时刻只有一个线程可以访问这些数据。 两种互斥锁的主要区别 1. 阻塞行为 标准库互斥锁(std::sync::Mutex): 当你调用 .lock() 时,如果锁已被占用,当前线程会阻塞直到获得锁 阻塞意味着线程会暂停
Rust
181
0
1
2025-03-15
SOLID 原则详解
SOLID 原则详解 SOLID是面向对象设计中五个重要原则的首字母缩写,由Robert C. Martin(也被称为"Uncle Bob")提出。这些原则旨在使软件设计更加灵活、可维护和可扩展。下面我将详细解释每一个原则及其实际应用。 S - 单一职责原则 (Single Responsibili
架构设计
111
0
0
2025-03-14
常见设计模式 Python 实现
本文介绍了三种常见的设计模式的实现方法:单例模式、工厂模式和观察者模式。首先,单例模式确保系统中只有一个连接池实例,包括实现和相应测试;工厂模式设计了支持多种数据格式解析的文件处理系统,包括抽象基类、具体解析器类和工厂类的实现;最后,观察者模式实现了股票市场监控系统,包括主题类、观察者类和多种观察者的实现。这些模式在软件架构设计中具有重要作用。
架构设计
97
0
0
2025-03-14
SQLite 锁机制:读锁策略与并发事务分析
本文深入探讨了SQLite数据库的锁机制,特别是关于读操作的锁获取策略。在SQLite中,不同上下文下读操作的锁策略会有所不同,包括事务外的读操作和显式事务内的读操作。实验验证展示了事务A执行UPDATE操作时不会被阻塞,但在尝试COMMIT时失败(database is locked),最终数据库状态保持不变。总结指出SQLite的锁升级是延迟的,写操作的内存更改和文件写入是分离的,而事务的COMMIT阶段是关键的锁竞争点,这种设计既保证数据一致性,又提供了较好的并发性能。
Tec
数据库
SQLite
数据库锁
240
0
3
2024-12-26
使用 GoReleaser 发布 Rust 二进制文件
作为消费者,我们喜欢通过以下方式之一获取二进制发布: 操作系统原生包格式,例如 deb、rpm 等。 语言原生包格式,例如 pip、npm 等。通过这种方式提供纯二进制文件并不常见,但有些项目会这样做,例如 puppeteer,它会下载最新的无头 Chrome 二进制文件。 使用 curl shel
Tec
156
0
0
2024-10-10
解决在 Windows 上 openssl-sys 构建失败的问题
在 Windows 平台构建 Rust 时遇到 OpenSSL 缺失导致的错误,需要手动安装 OpenSSL,并设置环境变量。可以使用 choco 安装 OpenSSL,设置 OPENSSL_DIR 和 OPENSSL_LIB_DIR 环境变量,然后重启 VSCode 再进行构建。这样可以解决在 Windows 上 openssl-sys 构建失败的问题。
Tec
Rust
899
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略
在 Rust 开发中,测试是确保代码质量的关键环节。然而,并行执行测试可能导致共享资源冲突。解决方案包括使用 serial_test crate 标记串行执行测试、使用互斥锁控制资源访问、创建独立测试环境、使用测试模块和一次性初始化、以及使用 #[ignore] 属性分离问题测试。选择合适策略取决于项目需求,但重要的是要意识到并行测试可能带来的潜在问题并确保测试的可靠性和一致性。
Tec
Rust
109
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告
在 Rust 中进行跨平台开发时,可通过条件编译实现平台特定代码,例如根据不同平台选择不同的实现以保持接口一致性。然而,可能会面临静态分析工具误报的未使用代码警告问题。解决方法包括使用属性忽略警告、在测试中使用平台特定代码、条件编译标记方法的可见性以及使用特性标志。另一种方法是使用条件编译属性抑制特定平台的未使用代码警告,以精确控制警告、保持跨平台一致性、提高代码清晰度和文档完整性。这些方法有效处理平台特定代码的问题,保持代码跨平台兼容性和可读性。
Tec
117
0
0
2024-09-13
Airpods 左右固件版本不一致
Airpods 右耳无声,固件不一致解决方案:连接 iPhone 升级固件,分别配对左右耳机。等待固件升级,放入盒内等待一晚。重新配对步骤:长按设置按钮,完成配对。参考 Apple 官方支持,遇到困难可参考相关链接。
未定义
数码
860
0
0
2024-07-18
上一页
下一页