Web Analytics

并发测试神器 synctest的“成人礼”:从goroutine泄漏到微妙的竞态,Go团队如何修复三大“首日bug”?

本文永久链接 – https://tonybai.com/2025/09/29/synctest-bugs-in-go-1-25 大家好,我是Tony Bai。 Go 1.25的发布,为我们带来了一个期待已久的“并发测试神器”—— testing/synctest。这个在Go 1.24中作为实验性功能首次亮相的包,承诺将我们从time.Sleep、channel和各种脆弱的同步技巧中解放出来,让我们能够编写出快速、可靠、确定性的并发测试。 ...

September 29, 2025 · 8 min · Tony Bai

“可移植性”的隐藏成本:Go为何要重塑maphash并划定新的运行时边界?

本文永久链接 – https://tonybai.com/2025/09/23/go-maphash-portability-costs-and-runtime-boundaries 大家好,我是Tony Bai。 对于大多数Go开发者来说,标准库似乎是一个浑然天成的整体。我们理所当然地使用着fmt、net/http和encoding/json,很少去思考它们内部的依赖关系和架构边界。然而,在标准库光鲜的外表之下,一场关于其核心架构的深刻变革正在悄然发生,而hash/maphash这个看似不起眼的包,正处在这场变革的风暴中心。 ...

September 23, 2025 · 6 min · Tony Bai

Go 1.25中值得关注的几个变化

本文永久链接 – https://tonybai.com/2025/08/15/some-changes-in-go-1-25 大家好,我是Tony Bai。 北京时间2025年8月13日,Go 团队如期发布了 Go 语言的最新大版本——Go 1.25。按照惯例,每次 Go 大版本发布时,我都会撰写一篇“Go 1.x 中值得关注的几个变化”的文章。自 2014 年的 Go 1.4 版本起,这一系列文章已经伴随大家走过了十一个年头。 ...

August 15, 2025 · 8 min · Tony Bai

为何Go语言迟迟未能拥抱 io_uring?揭秘集成的三大核心困境

本文永久链接 – https://tonybai.com/2025/08/11/why-go-not-embrace-iouring 大家好,我是Tony Bai。 在 Linux I/O 的世界里,io_uring 如同划破夜空的流星,被誉为“终极接口”。它承诺以无与伦比的效率,为数据密集型应用带来革命性的性能提升。正如高性能数据库 ScyllaDB 在其官方博文中所展示的,io_uring 能够将系统性能推向新的高峰。 ...

August 11, 2025 · 7 min · Tony Bai

Go json/v2实战:告别内存爆炸,掌握真流式Marshal和Unmarshal

本文永久链接 – https://tonybai.com/2025/08/09/true-streaming-support-in-jsonv2 大家好,我是Tony Bai。 Go 开发者长期以来面临一个痛点:标准库 encoding/json 在处理大型 JSON 数据时,即使使用 Encoder/Decoder,也因其内部的全量缓冲机制而导致巨大的内存开销。备受期待的 encoding/json/v2 提案(#71497)旨在从根本上解决这一问题。通过引入全新的底层包 encoding/json/jsontext,v2 实现了真正的流式处理能力。本文将通过具体的、可量化的基准测试,向你展示 v1 的内存陷阱,并演示如何使用 json/v2 高效地实现流式处理大规模 JSON 数据,彻底告别内存爆炸的烦恼。 ...

August 9, 2025 · 6 min · Tony Bai

Go 1.24用户报告:Datadog如何借助 Swiss Tables版map节省数百 GB 内存?

本文永久链接 – https://tonybai.com/2025/07/22/go-swiss-table-map-user-report 大家好,我是Tony Bai。 Datadog 的故事始于一次对Go 1.24内存回归问题的追踪。在与 Go 社区协作修复了该问题后,他们在部署修复版本的过程中,观察到了一个意料之外的现象:在高流量环境中,内存使用不仅恢复了正常,甚至大幅下降。一个名为 shardRoutingCache 的巨型内存 map,其堆内存占用减少了约 500 MiB,考虑到 Go 的垃圾回收机制(GOGC=100),这相当于节省了近 1 GiB 的物理内存。 ...

July 22, 2025 · 6 min · Tony Bai

Go 1.25新特性前瞻:GC提速,容器更“懂”Go,json有v2了!

Go 1.25新特性前瞻:GC提速,容器更“懂”Go,json有v2了! - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

June 14, 2025 · 9 min · Tony Bai

Go运行时底层接口标准化?“GOOS=none”欲为Go铺设通往裸金属、固件和微控制器的桥梁

Go运行时底层接口标准化?“GOOS=none”欲为Go铺设通往裸金属、固件和微控制器的桥梁 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

May 13, 2025 · 7 min · Tony Bai

解读“Cheating the Reaper”:在Go中与GC共舞的Arena黑科技

解读“Cheating the Reaper”:在Go中与GC共舞的Arena黑科技 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

May 6, 2025 · 8 min · Tony Bai

Rob Pike的“抱怨”与Go的“解药”:直面软件膨胀的四大根源

Rob Pike的“抱怨”与Go的“解药”:直面软件膨胀的四大根源 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

April 27, 2025 · 9 min · Tony Bai