Go 的甜蜜16 岁:一份来自官方的年度成绩单与未来路线图

本文永久链接 – https://tonybai.com/2025/11/15/go-turns-16 大家好,我是Tony Bai。 今年的 Go 官方16岁“庆生”文章,来得比以往时候都要晚一些。 往年,我们总能在 11 月 10 日或 11 日,准时收到这份来自 Go 团队的年度“家庭来信”。但今年,日历翻过了好几天,官方博客却依旧静悄悄。前几天,我还在知识星球上和星友们“抱怨”:“今年 Go 官方居然没有发 16 周年庆生纪念文章,比较反常啊!是忙忘了?还是没人有空写?” ...

November 15, 2025 · 9 min · Tony Bai

从《凡人修仙传》到《三体》:顶尖程序员的“降维打击”与“法则”之力

本文永久链接 – https://tonybai.com/2025/10/24/from-fanren-to-three-body-top-programmers-power 大家好,我是Tony Bai。 在上篇文章中,我们论道了程序员的修仙境界。但一个更深层的问题随之而来:决定一个修士(程序员)最终高度的,究竟是什么?是掌握了更多华丽的“法术”(框架/工具),还是洞悉了其背后的“天地法则”(底层原理)? 在《凡人修仙传》的后期,韩天尊与道祖们的斗法,早已不是简单的法宝对轰,而是对时间、空间等“至尊法则”的掌控。谁对法则的理解更深,谁就能言出法随,改天换地。 ...

October 24, 2025 · 7 min · Tony Bai

一个 Kubernetes 集群的“珠峰攀登”:从 10 万到 100 万节点的极限探索

本文永久链接 – https://tonybai.com/2025/10/20/k8s-1m-intro 大家好,我是Tony Bai。 在云原生的世界里,Kubernetes 集群的规模,如同一座待征服的高峰。业界巨头 AWS 已将旗帜插在了 10 万节点的高度,这曾被认为是云的“天际线”。然而,一位前OpenAI工程师(曾参与OpenAI 7.5k节点的Kubernetes集群的建设)发起了一个更雄心勃勃、甚至堪称“疯狂”的个人项目:k8s-1m。他的目标,是向着那座从未有人登顶的、充满未知险峻的**“百万节点”**之巅,发起一次单枪匹马的极限攀登。 ...

October 20, 2025 · 7 min · Tony Bai

自定义Hash终迎标准化?Go提案maphash.Hasher接口设计解读

自定义Hash终迎标准化?Go提案maphash.Hasher接口设计解读 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

April 17, 2025 · 9 min · Tony Bai

Go map使用Swiss Table重新实现,性能最高提升近50%

本文永久链接 – https://tonybai.com/2024/11/14/go-map-use-swiss-table 在2024月11月5日的Go compiler and runtime meeting notes中,我们注意到了一段重要内容,如下图红框所示: 这表明,来自字节的一位工程师在两年多前提出的“使用Swiss table重新实现Go map”的建议即将落地,目前该issue已经被纳入Go 1.24里程碑。 ...

November 14, 2024 · 16 min · Tony Bai

Go unique包:突破字符串局限的通用值Interning技术实现

本文永久链接 – https://tonybai.com/2024/09/18/understand-go-unique-package-by-example Go的1.23版本中引入了一个新的标准库包unique,为Go开发者带来了高效的值interning能力。这种能力不仅适用于字符串类型值,还可应用于任何可比较(comparable)类型的值。 本文将简要探讨interning技术及其在Go中的实现方式,通过介绍unique包的功能,帮助读者更好地理解这一技术及其实际应用。 1. 从string interning技术说起 通常提到interning技术时,指的是传统的字符串驻留(string interning)技术。它是一种优化方法,旨在减少程序中重复字符串的内存占用,并提高字符串比较操作的效率。其基本原理是将相同的字符串值在内存中只存储一次,所有对该字符串的引用都指向同一内存地址,而不是为每个相同字符串创建单独的副本。下图展示了使用和不使用string interning技术的对比: ...

September 18, 2024 · 14 min · Tony Bai

Go语言map类型变量背后的那些事儿

本文永久链接 – https://tonybai.com/2022/03/15/the-underlying-of-a-map-type-variable 切片(slice)和map是Go语言中最常用的两种原生复合数据类型,同时也是最容易使初学者感觉迷惑和“掉坑”的两个类型,这很大程度是因为Go runtime层的存在。什么是Go runtime层?可以参考我在《Go语言第一课FAQ》中的解释。 ...

March 15, 2022 · 5 min · Tony Bai

Uber Go语言编码规范

Uber是世界领先的生活出行服务提供商,也是Go语言的早期adopter,根据Uber工程博客的内容,大致可以判断出Go语言在Uber内部扮演了十分重要的角色。Uber内部的Go语言工程实践也是硕果累累,有大量Go实现的内部工具被Uber开源到github上,诸如被Gopher圈熟知的zap、jaeger等。2018年年末Uber将内部的Go风格规范开源到github,经过一年的积累和更新,该规范已经初具规模,并受到广大Gopher的关注。本文是该规范的中文版本,并”夹带“了部分笔者的点评,希望对国内Gopher有所帮助。 注:该版本基于commit 3baa2bd翻译,后续不会持续更新。 一. 介绍 样式(style)是支配我们代码的惯例。术语“样式”有点用词不当,因为这些约定涵盖的范围不限于由gofmt替我们处理的源文件格式。 ...

October 12, 2019 · 17 min · Tony Bai