Mkdir700's Note

Mkdir700's Note

最新文章

在 zsh 里同时用上 Vim 和 Emacs 快捷键

在 zsh 中使用 vi 模式让命令行具备了 Vim 的编辑能力,但会丢失 Emacs-style 快捷键。通过在 viins keymap 中重新绑定这些操作,可以在普通模式下使用 Vim,插入模式下保留 Emacs-style。这种混合配置让两种操作风格互补,适合习惯 Vim 却不想放弃 Ctrl-A/E/U/K 等经典操作的用户。通过简单配置,实现了命令行操作的灵活性和效率。
VIM
76
0
0
2025-08-21

macOS 代码签名配置指南

该文章介绍了在 macOS 上配置代码签名和公证以确保应用程序能够正常分发和运行的步骤。前置要求包括拥有付费的 Apple Developer Program 会员资格和开发者证书。配置过程包括获取开发者证书、App-Specific Password、设置 GitHub Secrets,以及验证配置。常见问题涵盖了构建时的提示、开发者团队 ID 错误、公证失败等情况,同时提供了安全注意事项和相关链接。文章关键词为 macOS 代码签名配置指南。
206
0
0
2025-06-20

如何对特定 Commit 中的指定文件进行 Revert

在日常开发中,碰到一个 commit 包含多个文件修改,需单独回滚某些文件。最常用的回滚方法是使用 `git checkout`,简单直观,适用于大多数场景。另外,还可用反向补丁实现精确回滚内容,交互式 Revert 提供最大灵活性,手动编辑适用于简单更改。最佳实践包括操作前准备、验证回滚结果和提交信息规范。选择合适方法取决于需求:简单回滚、精确控制、复杂场景或简单更改。确保备份和验证操作,谨慎行事。
83
0
0
2025-05-26

Rust 项目中解决依赖重复编译问题:以 objc2 为例

开发桌面剪贴板同步应用时,遇到了问题:即使代码与 objc2 无关,Rust 编译器每次都重新编译 objc2 库,导致开发效率低下。优化方案包括配置 Cargo、使用 sccache 加速编译等。通过并行编译、依赖差异化处理、缓存优化和增量编译的改进,构建效率得到显著提高。优化后,首次构建略有增加、增量构建减少了80%以上,开发体验从30-60秒缩短至5-10秒。经验总结包括深入了解依赖关系、差异化处理、合理利用缓存和权衡取舍。这些优化技巧不仅适用于解决 objc2 库问题,也可用于其他 Rust 项目,提高开发效率,使编码体验更加流畅。
208
0
1
2025-03-29

Rust 中优雅地实现类型转换:从自定义方法到通用 trait

在 Rust 开发中,优化类型转换代码时遇到了问题,通过使用 From trait 实现改进,解决了传入参数不匹配的错误。最终采用泛型参数方式,使得 From 实现更通用,能够处理不同类型的路径。重要性在于 AsRef trait 提供了灵活引用转换的关键工具,使 API 设计更灵活且避免重复代码。通过这次重构,代码更符合 Rust 惯用法,接口更灵活,并利用了 Rust 强大的类型系统。总体来说,在 Rust 中应优先使用标准 trait 进行类型转换,使用 AsRef / AsMut 实现灵活引用转换,通过泛型参数使 API 更通用。
166
0
0
2025-03-28

分布式事务的挑战:从 Saga 到 2PC,以及 SQLite 的局限性

在构建分布式系统时,保证数据一致性是一个核心挑战。本文探讨了分布式事务管理中的Saga和两阶段提交(2PC)模式,以及在使用SQLite等嵌入式数据库时的特殊挑战。Saga模式通过补偿机制实现最终一致性,但面临数据可见性问题;而2PC追求强一致性,但复杂且增加性能开销。然而,SQLite使用文件级锁定机制,不适合2PC。文章提出接受Saga模式的局限性、更换数据库系统或重新设计系统架构等解决方案,强调根据业务需求和技术限制找到平衡点至关重要。
88
0
0
2025-03-27

什么是 WebRTC 及简单实现

WebRTC (Web Real-Time Communication) is an open-source technology that enables real-time audio, video calls, and peer-to-peer data transfer in web browsers and mobile applications through a simple API without the need for plugins or third-party software. The WebRTC connection establishment process involves multiple steps, including signaling server connection, offer/answer exchange, ICE candidate exchange, connection establishment, and data channel communication. The core components of WebRTC include signaling server, RTCPeerConnection, Offer/Answer, Description, and Channel. ICE (Interactive Connectivity Establishment) plays a crucial role in solving network connectivity issues by addressing NAT traversal, optimal path selection, and connection recovery. ICE consists of candidates, STUN server, and TURN server, and follows a workflow of candidate collection, exchange, connection checks, and optimal path selection. ICE is essential for WebRTC to function in complex network environments, facilitating peer-to-peer communication. The example of a point-to-point chat based on WebRTC demonstrates the importance of signaling servers in managing communication between clients through WebSocket connections in Python.
214
0
0
2025-03-24

什么是向量数据库

向量数据库是一种索引、存储和提供对结构化或非结构化数据及其向量嵌入的访问的数据库。它们允许在生产环境中快速查找和检索相似对象,有时被称为向量搜索引擎。向量数据库通过向量搜索检索数据对象,使用向量嵌入和向量索引实现大规模检索。其中,向量嵌入是固定长度的实数数组,可以捕捉数据对象的语义相似性,如文本、图像和音频。向量索引使用近似最近邻方法进行数据检索,提升搜索速度。与传统数据库相比,向量数据库优化了非结构化数据和语义搜索,适用于 AI 应用中的高维向量嵌入和相似性搜索需求。
131
0
0
2025-03-19

React严格模式下事件监听器失效

在基于 Tauri 和 React 的 UniClipboard 应用中,遇到了与组件中事件监听器相关的问题。通过代码审查发现,问题的根源在于 React 的严格模式(StrictMode)。严格模式故意执行组件双重渲染和函数双重调用,在开发环境中发现潜在问题。具体表现为监听器被设置后很快被取消,不符合预期行为。尝试使用 useRef 失败后,最终采用了全局监听器状态管理的解决方案。通过这个方案,事件监听器成功保持了持续活跃状态,避免了在 React 严格模式下的问题。总结了 React 严格模式、状态管理重要性和全局状态的使用,强调了避免在清理函数中关闭永久资源的重要性。
123
0
0
2025-03-18

Rust 异步线程安全问题解析与修复

在 Rust 异步编程中,错误地在持有 Mutex 锁时使用 .await 可导致编译错误。出错的根本在于 MutexGuard 不是 Send 的,而异步任务可能在线程间切换,违反了 Rust 的线程安全保证。正确的修复模式是在 await 前释放锁,可通过作用域控制、提取数据以确保安全操作。其他解决方案包括使用专为异步设计的锁,如 tokio::sync::Mutex,以及使用更细粒度的锁策略。在 Rust 异步编程中,需要遵循释放锁、避免在锁上使用 await、选择合适的锁等关键原则来确保线程安全。
204
0
0
2025-03-16
阅读更多