省下 10% CPU!Uber 揭秘 Go 栈扩容的隐秘代价

本文永久链接 – https://tonybai.com/2026/05/28/uber-reveals-hidden-cost-of-go-stack-growth-10-percent-cpu-savings 大家好,我是Tony Bai。 在顶级互联网巨头的底层架构中,性能优化绝不仅仅是写两段优雅的代码,而是一场“刀尖舔血”的硬核战争。 试想一下,如果你的公司拥有超过 200 万个 CPU 核心(Cores),且其中 65% 的微服务完全由 Go 语言驱动,会发生什么?在 Uber 这样的计算体量下,哪怕仅仅提升 1% 的 CPU 效率,每年都能为公司省下数百万美元的真金白银。 ...

May 28, 2026 · 11 min · Tony Bai

Go 1.27 将默认开启 SIMD for amd64,可移植 SIMD 包提案出炉

本文永久链接 – https://tonybai.com/2026/04/29/go-1-27-default-simd-for-amd64-portable-simd-proposal 大家好,我是Tony Bai。 过去十年,Go 语言以其惊人的简洁和强大的并发能力,席卷了整个云原生领域。但在这片繁荣之下,一个尴尬的“阿喀琉斯之踵”,始终困扰着所有追求极致性能的 Gopher: ...

April 29, 2026 · 7 min · Tony Bai

为什么 Go 社区强调避免不必要的抽象?—— 借用海德格尔哲学寻找“正确”的答案

本文永久链接 – https://tonybai.com/2026/01/16/go-community-the-right-kind-of-abstraction 大家好,我是Tony Bai。 “Go 的哲学强调避免不必要的抽象。” 这句话我们听过无数次。当你试图引入 ORM、泛型 Map/Reduce 、接口或者复杂的设计模式时,往往会收到这样的反馈。这句话本身没有错,但难点在于:到底什么是“不必要”的? ...

January 16, 2026 · 9 min · Tony Bai

Go 安全的“隐形战争”:过去、现在与未来

本文永久链接 – https://tonybai.com/2025/09/25/go-security-past-present-and-future 大家好,我是Tony Bai。 在软件安全领域,最成功的战役,往往是那些从未被公众所知的“隐形战争”。当一门编程语言的安全性被认为是理所当然时,这背后必然有一支团队在持续不断地进行着防御、修复与规划。对于 Go 语言而言,这支团队就是 Google 内部的 Go 安全/密码学团队。 ...

September 25, 2025 · 7 min · Tony Bai

purego 标签到底是什么意思?一场长达六年的社区辩论终于有了定论

purego 标签到底是什么意思?一场长达六年的社区辩论终于有了定论 - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

August 1, 2025 · 5 min · Tony Bai

Go语言中的SIMD加速:以矩阵加法为例

本文永久链接 – https://tonybai.com/2024/07/21/simd-in-go 前些日子,一些资深Gopher,比如fasthttp的作者Aliaksandr Valialkin因函数迭代器加入Go 1.23版本而抱怨Go的演进走错了方向:朝着增加复杂性和隐式代码执行的方向发展,而没有专注于Go语言的基本设计哲学——简单性、生产力和性能。Valialkin希望Go团队能专注于一些性能打磨和优化的环节,比如使用SIMD提升一些计算场景下Go代码的性能,避免Go的某些领地被以性能和安全性著称的Rust抢去! ...

July 21, 2024 · 14 min · Tony Bai

Goroutine调度实例简要分析

前两天一位网友在微博私信我这样一个问题: 抱歉打扰您咨询您一个关于Go的问题:对于goroutine的概念我是明了的,但很疑惑goroutine的调度问题, 根据《Go语言编程》一书:“当一个任务正在执行时,外部没有办法终止它。要进行任务切换,只能通过由该任务自身调用yield()来主动出让CPU使用权。” 那么,假设我的goroutine是一个死循环的话,是否其它goroutine就没有执行的机会呢?我测试的结果是这些goroutine会轮流执行。那么除了syscall时会主动出让cpu时间外,我的死循环goroutine 之间是怎么做到切换的呢? ...

November 23, 2017 · 10 min · Tony Bai

利用缓冲区溢出漏洞Hack应用

我们在平时编码过程中很少考虑代码的安全性(security),与正确性、高性能和可移植性相比,安全性似乎总被忽略。昨天从安全性角度泛泛地Review了一下现有的代码,发现了不少具有安全隐患的地方。我们的程序员的确缺乏系统地有关安全编码方面的训练和实践,包括我在内,在安全编码方面也都是初级选手,脑子中对安全性编码缺乏系统的理解。 ...

December 1, 2011 · 7 min · Tony Bai

也谈C语言的内联函数

有这样一段代码: /* foo.c */ #include “stdio.h” inline void foo() { printf(“inline foo in %s\n”, __FILE__); } int main() { foo(); return 0; } 我采用C99标准,并在不加任何优化选项的情况下编译之: $ gcc -std=c99 foo.c -o foo foo.c: In function ‘foo’: /tmp/ccLGkuIK.o: In function `main’: foo.c:(.text+0×7): undefined reference to `foo’ collect2: ld returned 1 exit status ...

June 22, 2011 · 6 min · Tony Bai

发现一隐藏多年的Bug

C语言程序员在平时工作中,到底如何获取成就感呢?我几乎可以肯定的是:找到一个隐藏已久,多年无人发现的大Bug肯定可以归属到C程序员成就感的范畴中。与操作系统斗、与编译器斗、与内存斗,其乐无穷吗^_^。 ...

September 6, 2008 · 6 min · Tony Bai