Mkdir700's Note
Mkdir700's Note
Slow is Smooth, Smooth is Fast.
首页
Tec
工具
归档
说说
友链
关于
Rust
#分布式
1
#向量数据库
1
#React
1
#架构设计
2
#Command
1
#工具分享
5
#SQLite
1
#数据库锁
1
#Rust
7
#生产力
0
#区块链
1
#钱包
1
#数码
1
#MacOS
1
#基础
1
#Web3
0
#油猴脚本
1
#前端
2
#nft
1
#加密货币
0
#VIM
1
#协程
1
#前缀和
1
#滑动窗口
1
#数组
2
#贪心
0
##排序
1
#双指针
2
#代理模式
1
#数据库
1
#MySQL
2
#Flask
1
#MySQL进阶
2
#设计模式
1
#Python技巧
4
#刘禹锡
1
#Python
4
#情感
1
#矩阵
2
#二分查找
4
#剑指offer
1
#动态规划
3
#BFS
1
#二叉查找
0
#多源BFS
1
#赞美
1
#李白
1
#花
2
#元稹
1
#诗词
3
#Docker
4
#秋
1
#唐朝
3
#Airflow
5
#ETL
4
#文字加密
1
#JS逆向
5
#gRPC接口
2
#Canvas反爬
1
#AST
2
#JS
2
#字体加密
1
#瑞数
3
#爬虫
8
Rust 项目中解决依赖重复编译问题:以 objc2 为例
开发桌面剪贴板同步应用时遇到了重复编译问题,即使修改与 objc2 库无关的代码仍需重新编译,严重影响效率。通过优化 Cargo 配置和使用 sccache 加速编译,提升构建效率。采用并行编译、区分优化级别、优化缓存策略等措施,显著改进了构建速度并提升了开发体验。经验总结包括理解依赖关系、差异化处理、合理利用缓存和权衡取舍。这些优化技巧适用于处理慢速编译依赖的 Rust 项目,提高开发效率并改善编码体验。
Rust
32
0
1
2025-03-29
Rust 中优雅地实现类型转换:从自定义方法到通用 trait
在 Rust 开发中,优化类型转换代码是常见需求。通过使用标准的 `From` trait 实现,从自定义方法过渡到更符合 Rust 风格的实现。解决了参数类型不匹配、编译错误等问题,最终采用泛型参数方式实现更通用的 `From` 实现。`AsRef` trait 的重要性在于提供了灵活的引用转换工具,带来代码风格更符合 Rust 惯例、接口更灵活、更好利用类型系统等优势。在 Rust 中,标准 trait优先使用于类型转换,同时借助 `AsRef` / `AsMut` 实现灵活的引用转换,通过泛型参数使 API更通用。
Rust
26
0
0
2025-03-28
Rust 异步线程安全问题解析与修复
在 Rust 异步编程中,持有 Mutex 锁时使用 .await 会导致编译错误,因为 MutexGuard 不是 Send 的,违反了线程安全保证。解决方法是在 .await 前释放锁,通过作用域控制确保 MutexGuard 在 await 之前释放。其他解决方案包括使用专为异步设计的锁如 tokio::sync::Mutex,以及减少锁的持有时间。在 Rust 异步编程中,必须注意锁的使用方式,避免在持有锁时使用 .await,释放所有 MutexGuard 后再调用 await,考虑使用异步友好的锁,优先使用作用域块控制锁的生命周期。
Rust
38
0
0
2025-03-16
Tokio:为什么异步互斥锁比同步互斥锁更"昂贵"
异步互斥锁相较于同步互斥锁更昂贵的原因在于其内部实现复杂,需要管理任务等待队列和唤醒机制,以及与异步运行时的集成带来的额外开销。通常在内部仍然使用同步互斥锁,增加了一层间接性,同时需要创建和管理Future对象。因此,在不需要跨越.await点持有锁的情况下,推荐使用标准同步互斥锁。只有在需要在持有锁的同时执行异步操作时,异步互斥锁的额外开销才是值得的。
Rust
24
0
0
2025-03-15
Tokio:应该使用哪种 mutex?
互斥锁用于保护共享数据,确保每次只有一个线程可以访问。标准库互斥锁在调用`lock()`时会阻塞线程,而异步互斥锁使用`lock().await`会挂起当前任务。标准库互斥锁不支持跨越`.await`点持有锁,可能导致死锁,而异步互斥锁专门设计支持。性能方面,标准库互斥锁开销小适合短时间持有,而异步互斥锁因支持异步操作开销较大适合长时间持有。使用标准库互斥锁适合纯内存数据且锁持有时间短,而使用异步互斥锁适合需要在持有锁时执行异步操作或保护IO资源。最佳实践是默认选择标准库互斥锁且对于IO资源考虑使用专门的管理任务。
Rust
45
0
1
2025-03-15
解决在 Windows 上 openssl-sys 构建失败的问题
在 Windows 上使用 Rust 构建时,可能会遇到 openssl-sys 缺少 OpenSSL 的问题。解决方法包括使用 choco 安装 OpenSSL,设置相应环境变量,并重启 VSCode。这样可以解决在 Windows 平台上手动操作 OpenSSL 缺失导致构建失败的情况。通过安装 OpenSSL 并设置环境变量,可以顺利构建 Rust 项目而不再受到 OpenSSL 缺失的限制。
Tec
Rust
348
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略
在 Rust 开发中,测试是确保代码质量的关键环节。然而,并行执行测试可能会导致共享资源冲突。解决方案包括使用 serial_test crate 进行串行执行测试、使用互斥锁确保资源独占、创建独立测试环境隔离影响、使用测试模块和一次性初始化减少重复代码、以及使用 ignore 属性标记特殊测试并单独运行。选择合适策略取决于具体需求和项目结构,但要意识到并行测试可能带来的问题,采取措施确保测试可靠性和一致性。
Tec
Rust
60
0
0
2024-09-13