## Go 的垃圾回收器:总结 Go 的垃圾回收器 (GC) 能够高效地管理内存,而不会使程序长时间停止。它是一种**非移动、并发、三色、标记-清除**回收器——这意味着对象保持在原地,它与你的代码并行运行,使用颜色编码来跟踪对象,并识别/回收未使用的内存。 GC 在四个阶段运行:**清除终止、标记、标记终止与清除准备、以及清除**。**标记阶段**从“根”(goroutine 栈、全局变量)开始追踪可达对象,利用工作队列和一种新颖的**基于 span 的扫描**方法(Go 1.26 引入)以提高效率。**写屏障**在标记期间拦截指针更新,以确保不会遗漏任何存活对象。**清除阶段**延迟地、按需地回收未标记的对象,在分配期间进行。 GC 周期由 **GC 调速器**(基于堆增长和 `GOGC` 设置)、**系统监视器**(用于空闲程序)或通过 `runtime.GC()` 手动触发。 像 **内联标记位** 和 **基于 span 的扫描**(GreenTea GC)这样的关键创新通过增强缓存局部性和启用 SIMD 优化来提高性能。**标记协助** 通过招募应用程序 goroutine 来帮助 GC 在高分配速率期间保持同步。 这使得 Go 能够提供自动内存管理,并最大限度地减少对正在运行的应用程序的干扰。
## 工程质量保证的未来
许多工程领导质疑专门的质量保证 (QA) 团队的必要性,提倡“工程负责质量”,以避免因交接和 perceived 的激励不足造成的延误。然而,完全取消 QA 会忽略其价值——熟练的测试是一项独特的专业知识,自动化测试至关重要,并且某些情况*需要*专门的质量监督。
共识倾向于将质量责任*融入*工程团队内部,强调“左移”方法,即 QA 专家充当顾问,改进流程而不是充当把关人。一个关键原则是“测试金字塔”:优先考虑工程师创建的大量快速单元测试,以及较少且较慢的 UI 测试。
新兴的一种潜在演变是“自动化验证工程师”(AVE) 的角色。这侧重于利用人工智能来大幅改进自动化测试,提供更快的反馈并提高整体开发速度。AVE 将专注于测试人工智能生成的代码,识别“幻觉”和错误。
最终,理想的方法取决于组织。虽然从没有 QA 开始通常是最好的,但现有的团队应专注于自动化,将 QA 嵌入到工程工作流程中,并可能重新定义角色,以拥抱自动化验证,并成为战略资产,而不是瓶颈。
## 负担得起的技术的终结:一场迫在眉睫的硬件危机
数十年间,消费者一直享受着越来越便宜、越来越强大的技术产品。这个时代正在结束。硬件行业正在发生结构性转变,将大规模数据中心——受“人工智能”需求推动——置于个人消费者之上,导致价格上涨、选择减少以及潜在的长期短缺。
制造商越来越专注于与谷歌和亚马逊等超级规模公司签订有利可图的合同,实际上扼杀了消费者市场。西部数据和美光等主要厂商正在减少或退出面向消费者的生产,导致竞争有限,并推高了RAM和SSD等组件的成本。这不是暂时的短缺;预测表明这些问题将持续到未来很长一段时间。
结果?预计设备价格会上涨,配置会减少,可修复性和可升级性会下降。拥有硬件可能成为一种奢侈品,可能导致未来通过订阅和云服务租用计算能力——失去数字独立性。
虽然中国制造商可能成为未来的供应来源,但地缘政治因素使情况复杂化。建议很明确:维护现有的硬件,如果可能的话,有策略地升级,并认识到轻松负担得起的技术升级的日子可能已经结束。
## 南斯拉夫失落的域名:数字考古
在关于互联网历史和消失域名的讨论之后,作者踏上了一段旅程,试图重建前南斯拉夫已失效的“.yu”顶级域名网站列表。.yu域名于2010年随着南斯拉夫解体而被废除,并且没有保留完整的档案。
受到Anat Ben-David和Kaloyan Kolev的研究启发,他们之前使用互联网档案的Wayback Machine识别了大约17,460个.yu网站,作者旨在扩展此列表。直接搜索所有*.yu域名被Wayback Machine阻止,但查询子域名如*.co.yu则成功了,尽管速度较慢。
突破性进展来自于发现“www.yu”,这是一个由南斯拉夫ISP维护的网站,其中包含已注册的.yu域名的全面列表。作者利用Wayback Machine的CDX API和诸如`wget`之类的工具,成功地编译了一个包含**21,864**个域名的列表,其中**13,292**个已在Wayback Machine中存档。
提供了一个可下载的.CSV文件,该文件提供了对一个不再存在的国家的数字过去的窥视。作者建议进一步探索相关资源,如memodata.net,并联系研究人员以获取可能更完整的列表。
## jsongrep:一款快速的 JSON 搜索工具
jsongrep 是一款新的、快速的命令行工具,用于搜索 JSON 文档,灵感来自 ripgrep。它接收一个查询和一个 JSON 输入,打印匹配指定路径的值。其核心创新在于其搜索引擎:与像 `jq` 和 `jmespath` 这样的工具*解释*路径表达式不同,jsongrep 将查询*编译*成确定性有限自动机 (DFA)。这允许单次扫描搜索,每个输入符号的工作量为 O(1),从而带来显著的速度提升。
查询语言支持点符号路径用于嵌套字段、通配符用于任何键或数组索引、交替以及递归下降以进行深度搜索。jsongrep 利用一个五阶段流水线:解析(使用零拷贝 `serde_json_borrow`)、查询解析为抽象语法树 (AST)、通过 Glushkov 算法构建 NFA、DFA 确定化,最后,由 DFA 引导的 JSON 树的深度优先搜索。
与其他工具(如 `jq`、`jmespath` 等)的基准测试表明,jsongrep 具有速度优势,尤其是在大型数据集上。虽然 jsongrep 优先考虑搜索速度而非完整的 JSON 转换功能(缺乏过滤器或算术运算),但其基于 DFA 的引擎和零拷贝解析使其成为高效 JSON 数据检索的理想选择。该项目是开源的,并提供了一个库 crate,用于将搜索引擎嵌入到其他 Rust 项目中。