谷歌的 Diff Match Patch 库
谷歌的 Diff Match Patch 库提供了三个算法用于对纯文本进行同步操作:
- Diff: 比较两段纯文本并高效地返回差异列表。
- Match: 给定一个搜索字符串,在一段纯文本中找到最佳模糊匹配,同时考虑精确度和位置。
- Patch: 将一系列补丁应用于纯文本,即使底层文本不匹配也会尽最大努力应用补丁。
该库最初于2006年为 Google Docs 构建,现已移植到 C++、C#、Dart、Java、JavaScript、Lua、Objective C 和 Python 等多种语言。它实现了迈尔斯差异算法,并通过一些预处理和后处理步骤来提高性能和输出质量。该库还实现了一种 Bitap 匹配算法,作为灵活的匹配和修补策略的核心。该存储库包含了库的使用演示、API 参考、不同层级的差异比较、处理结构化内容的指南、补丁序列化格式以及开发者支持渠道等资源。
https://github.com/google/diff-match-patch
Rust编程语言实践速成课程
这门课程由Nathan Stocks主讲,是一门快节奏、有趣且内容丰富的Rust编程语言实践速成课程。课程旨在为学习者提供Rust语言的基础知识,帮助他们攻克Rust的陡峭学习曲线。
该课程采用动手实践的方式,针对每个主题都设有专门的练习,并包含多个综合项目让学习者运用所学知识。课程内容涵盖了使用cargo创建项目、编写代码、编译和运行程序等方方面面的知识。
https://www.udemy.com/course/ultimate-rust-crash-course/?couponCode=GIVETHANKS2024
Rust英雄小说
这篇文章采用有趣的虚构故事情节,比喻性地讲述了Rust编程语言的兴起和应对大规模并发请求挑战的过程。
故事背景设置在数字世界中,一个名为Scalator的反派通过发起大量并发请求攻击,导致系统崩溃和性能下降。传统编程语言如C等无法应对这种攻击。
2009年,Mozilla工程师Graydon Hoare创造了Rust编程语言,将系统级编程与卓越的安全性和速度融合,为对抗Scalator做好准备。
随后,Rust凭借其所有nership模型、Option类型、借用检查器等特性,成功防御了Scalator的各种攻击手段。Rust以其异步超级能力处理了大规模并发请求。
最终,Rust战胜了Scalator,成为数字世界的保护者,让系统能够轻松处理大规模请求。现在,Rust正在传播其影响力,激励新一代程序员。
但故事的结尾揭示,一个名为Magnitor的新威胁将带来千万亿级的并发请求,对Rust提出了更大挑战。故事将有新的续篇。
https://brutally-honest.medium.com/the-rise-of-rust-as-high-performance-superhero-8f898e769331
skim - 一个通用的模糊查找器工具
skim是一个通用的模糊查找器工具,能帮你节省大量时间。它提供了一个单一的可执行文件sk,可以在任何你想使用grep的地方替代grep使用。
该README详细介绍了skim的安装方法、使用方式、按键绑定、搜索语法、退出代码含义、自定义配置(如按键重新绑定、排序规则、颜色主题等)、高级主题(交互模式、执行外部程序、预览窗口、字段支持、作为库使用)以及FAQ。
它支持多种包管理器进行安装,也提供了作为Vim插件的安装方式。使用时可以作为过滤器,也可以作为交互界面调用其他命令。支持各种搜索语法组合,按键绑定丰富。同时,skim高度可定制化,支持自定义按键绑定、排序规则、颜色主题等。
https://github.com/skim-rs/skim
rust-prettifier-for-lldb - 为LLDB调试器添加Rust相关的漂亮打印功能
rust-prettifier-for-lldb为LLDB调试器添加Rust相关的漂亮打印功能。由于最近从CodeLLDB中移除了Rust特定的漂亮打印功能,调试Rust(特别是枚举类型)变得非常困难。该脚本旨在作为一种临时修复,直到生态系统状况得到改善。
该脚本提供了在独立LLDB、VSCode中使用CodeLLDB扩展和lldb-dap扩展时加载脚本的说明。它还包括一些配置示例,以及与第三方crate集合类型的兼容性说明。
该脚本目前支持LLDB 19.0.0、19.1.0-codelldb版本和最新稳定版Rust 1.62.0。但由于Rust标准库内部和LLDB表示的变化,这只是一种临时的解决方案,可能会过时。作者希望Rust自身的Pretty Printers最终能发布功能齐全的版本,从而取代这种临时修复。
https://github.com/cmrschwarz/rust-prettifier-for-lldb
Zed编辑器中用到的Rope数据结构中的一些优化技术
该文章主要介绍了Rope数据结构中的一些优化技术,以提高文本编辑器在转换offset和point之间的效率。
-
背景介绍:Rope数据结构是一种用于存储字符串的数据结构,由一个B树组成,每个节点最多存储128个字节的字符串。
-
问题所在:在将offset转换为point(行号和列号)时,需要遍历每个字符,统计换行符,这个过程效率很低。
-
优化方法:利用了一些位运算优化技术,如并行位计数、无分支选择等,大大加快了统计换行符的速度。
-
通过带有视频的配对编程,作者学习并分享了这些位运算优化技术,进一步优化了Rope在处理制表符时的效率。
该文章深入探讨了在文本编辑器等需要高效字符串处理的应用中,如何通过数据结构和算法层面的优化来提升性能。
https://zed.dev/blog/zed-decoded-rope-optimizations-part-1
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论