Mkdir700's Note
Mkdir700's Note
Slow is Smooth, Smooth is Fast.
首页
Tec
工具
归档
说说
友链
关于
最新文章
macOS 代码签名配置指南
本文介绍了在 macOS 上配置代码签名和公证的步骤和要求。前置要求包括 Apple Developer 账户和开发者证书。具体步骤包括获取开发者证书、获取App-Specific Password、配置GitHub Secrets以及验证配置。在验证配置过程中,需要确保配置文件正确、进行测试构建。文章还列举了常见问题以及安全注意事项。最终目的是确保应用能够在 macOS 上正常分发和运行。
24
0
0
2025-06-20
如何对特定 Commit 中的指定文件进行 Revert
在软件开发中,经常需要部分文件回滚,以应对不同场景需求,如热修复、功能拆分、测试回滚、配置管理。有多种方法可实现文件精细化回滚:使用 git checkout 操作简单、不影响其他文件;使用反向补丁可以精确控制回滚内容;交互式 Revert 提供最大控制灵活性;手动编辑适用于简单更改。在操作前需准备工作、验证回滚结果、规范提交信息。选择合适的方法取决于具体需求,操作过程中需谨慎并做好备份和验证工作。
#git
25
0
0
2025-05-26
Rust 项目中解决依赖重复编译问题:以 objc2 为例
开发桌面剪贴板同步应用(UniClipboard)时,解决了与 objc2 库重复编译问题。通过优化 Cargo 配置与使用 sccache 工具,实现提升构建效率的策略。优化措施包括增加并行编译,差异化处理依赖包,优化缓存策略和改进增量编译。优化后首次构建时间略有增加,但适用于大型项目,能显著减少构建时间。经验总结包括深入理解依赖关系,合理利用编译缓存以及权衡速度与代码质量。这些优化技巧适用于处理慢速编译依赖的 Rust 项目,提高开发效率与编码体验。
Rust
86
0
1
2025-03-29
Rust 中优雅地实现类型转换:从自定义方法到通用 trait
在 Rust 开发中,优化类型转换代码是一个常见需求。通过实例介绍了优化类型转换的过程,首先介绍了使用 From trait 的方式,并解决了传入参数不匹配的问题;其次通过讨论 Path 和 PathBuf 的区别,探讨了通用化参数类型遇到的问题;最终采用泛型参数的方式实现了更通用的 From 实现。重点强调了使用 AsRef trait 实现引用转换的重要性,提供了一种统一的方式将类型引用转换为另一类型,并使得 API 设计更加灵活。整体来说,本文通过该案例展示了在 Rust 中优雅地实现类型转换的方法,强调了使用标准 trait、灵活的引用转换和泛型参数来设计更通用的 API。
Rust
69
0
0
2025-03-28
分布式事务的挑战:从 Saga 到 2PC,以及 SQLite 的局限性
构建分布式系统时,数据一致性是核心挑战。文章讨论了 Saga 和 2PC 两种分布式事务管理模式,以及在使用 SQLite 等嵌入式数据库时面临的挑战。Saga 模式通过补偿机制实现最终一致性,但面临数据可见性问题;2PC 提供强一致性,但复杂且有性能开销;SQLite 由于文件级锁定机制限制不适合 2PC。解决方案包括接受 Saga 模式的局限性、更换数据库系统或重新设计系统架构。在权衡一致性、可用性和性能时,需要理解业务需求和技术限制,选择适合特定场景的解决方案。
分布式
40
0
0
2025-03-27
什么是 WebRTC 及简单实现
WebRTC(Web Real-Time Communication)是一项开源技术,通过简单的API实现实时语音、视频通话和点对点数据传输,无需安装插件或第三方软件。WebRTC连接建立过程包括信令交换、Offer/Answer交换、ICE候选交换等步骤。核心组件包括信令服务器、RTCPeerConnection、Offer和Answer以及通道。ICE技术解决了网络连接问题,包括NAT穿透、最佳路径选择和连接恢复。实现基于WebRTC的点对点聊天需要信令服务器进行offer、answer和ICE candidate的转发。
61
0
0
2025-03-24
什么是向量数据库
向量数据库是一种索引、存储和提供对结构化或非结构化数据及其向量嵌入的访问的数据库。它允许在生产环境中快速查找和检索相似对象,有时也被称为向量搜索引擎。通过向量搜索检索数据对象,利用向量嵌入和向量索引来实现。向量嵌入是机器学习模型生成的固定长度实数数组,捕捉数据对象的语义相似性。向量索引采用近似最近邻方法,如HNSW算法,以提高检索速度。向量数据库区别于传统数据库,优化非结构化数据的存储和检索方式,提供高效的语义搜索能力。同时,向量数据库支持全面解决方案,适用于各种用例,从大规模AI应用到刚刚入门的用户。
向量数据库
63
0
0
2025-03-19
React严格模式下事件监听器失效
在基于 Tauri 和 React 的 UniClipboard 应用中,遇到了事件监听器在严格模式下被设置和取消的问题。根源在于 React 的严格模式,导致监听器在挂载和模拟卸载时重复执行。尝试使用 useRef 的方案失败,最终采用全局监听器状态管理解决了问题。通过在外部管理监听器状态,保持监听器活跃,避免重复设置,成功解决了事件监听器失效的情况。这个解决方案在 React 严格模式下有效,日志显示监听器持续活跃,不再出现取消监听和停止监听的现象。总结了 React 严格模式、状态管理的重要性和全局状态的使用,强调了避免在清理函数中关闭永久资源的重要性。通过解决这个问题,加深了对 React 组件生命周期和事件监听器管理的理解。
React
56
0
0
2025-03-18
Rust 异步线程安全问题解析与修复
在 Rust 异步编程中,常见错误是在持有 Mutex 锁时使用 .await,导致编译错误。此错误源于 MutexGuard 不是 Send 的,异步任务在 .await 点可能在不同线程间切换,违反了 Rust 的线程安全保证。解决方案是在 .await 前释放锁,通过额外作用域确保 MutexGuard 在 .await 之前释放,并推荐使用 tokio::sync::Mutex 或减少锁的持有时间。总结时要注意不在持有 Mutex 时使用 .await,释放所有 MutexGuard,使用异步友好的锁,以及控制锁的生命周期。
Rust
74
0
0
2025-03-16
Tokio:为什么异步互斥锁比同步互斥锁更"昂贵"
异步互斥锁相比于同步互斥锁更"昂贵"的原因在于其复杂的内部实现和与异步运行时的集成,包括管理任务等待队列、唤醒机制、额外内存消耗、CPU指令执行等。通常异步互斥锁内部仍使用同步互斥锁,增加了间接层。建议只在需要在持锁期间执行异步操作时使用异步互斥锁,否则推荐使用标准同步互斥锁,以避免额外开销。
Rust
57
0
0
2025-03-15
阅读更多