<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Inline on Tony Bai</title><link>https://tonybai.com/tags/inline/</link><description>Recent content in Inline on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Thu, 15 May 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/inline/index.xml" rel="self" type="application/rss+xml"/><item><title>手把手带你玩转GOEXPERIMENT=jsonv2：Go下一代JSON库初探</title><link>https://tonybai.com/2025/05/15/go-json-v2/</link><pubDate>Thu, 15 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/15/go-json-v2/</guid><description>本文永久链接 – https://tonybai.com/2025/05/15/go-json-v2 大家好，我是Tony Bai。 Go 语言标准库中的 encoding/json 包，无疑是我们日常开发中使用频率最高的包之一。它为 Go 社区服务了十多年，几乎无处不在。但与此同时，它也因一些历史遗留的 API 缺陷、行为不一致以及在某些场景下的性能瓶颈而受到过不少讨论和批评。社区中甚至涌现出像...</description></item><item><title>Go开发者必看！Uber如何利用PGO将Go服务性能优化推向新高度？</title><link>https://tonybai.com/2025/04/11/uber-go-pgo-optimization/</link><pubDate>Fri, 11 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/11/uber-go-pgo-optimization/</guid><description>Go开发者必看！Uber如何利用PGO将Go服务性能优化推向新高度？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FA...</description></item><item><title>2024年Go语言盘点：排名历史新高，团队新老传承</title><link>https://tonybai.com/2025/01/06/the-2024-review-of-go-programming-language/</link><pubDate>Mon, 06 Jan 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/01/06/the-2024-review-of-go-programming-language/</guid><description>2024年Go语言盘点：排名历史新高，团队新老传承 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 *...</description></item><item><title>Go编译的几个细节，连专家也要停下来想想</title><link>https://tonybai.com/2024/11/11/some-details-about-go-compilation/</link><pubDate>Mon, 11 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/11/some-details-about-go-compilation/</guid><description>本文永久链接 – https://tonybai.com/2024/11/11/some-details-about-go-compilation 在Go开发中，编译相关的问题看似简单，但实则蕴含许多细节。有时，即使是Go专家也需要停下来，花时间思考答案或亲自验证。本文将通过几个具体问题，和大家一起探讨Go编译过程中的一些你可能之前未曾关注的细节。 &amp;gt; 注：本文示例使用的环境为Go 1.23.0、...</description></item><item><title>Go未用代码消除与可执行文件瘦身</title><link>https://tonybai.com/2024/05/05/dead-code-elimination-and-executable-file-slimming-in-go/</link><pubDate>Sun, 05 May 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/05/05/dead-code-elimination-and-executable-file-slimming-in-go/</guid><description>本文永久链接 – https://tonybai.com/2024/05/05/dead-code-elimination-and-executable-file-slimming-in-go 在日常编写Go代码时，我们会编写很多包，也会在编写的包中引入了各种依赖包。在大型Go工程中，这些直接依赖和间接依赖的包数目可能会有几十个甚至上百个。依赖包有大有小，但通常我们不会使用到依赖包中的所有导出函数...</description></item><item><title>Go 1.22中值得关注的几个变化</title><link>https://tonybai.com/2024/02/18/some-changes-in-go-1-22/</link><pubDate>Sun, 18 Feb 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/02/18/some-changes-in-go-1-22/</guid><description>本文永久链接 – https://tonybai.com/2024/02/18/some-changes-in-go-1-22 美国时间2024年2月6日，正当中国人民洋溢在即将迎来龙年春节的喜庆祥和的气氛中时，Eli Bendersky代表Go团队在Go官博发文“Go 1.22 is released!”，正式向世界宣告了Go 1.22版本的发布！ &amp;gt; 注：大家可以从Go官网下载Go 1.22的...</description></item><item><title>Go 1.22新特性前瞻</title><link>https://tonybai.com/2023/12/25/go-1-22-foresight/</link><pubDate>Mon, 25 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/25/go-1-22-foresight/</guid><description>本文永久链接 – https://tonybai.com/2023/12/25/go-1-22-foresight 美国时间2023年12月20日，Go官方宣布Go 1.22rc1发布，开启了为期2个多月的、常规的公测之旅，Go 1.22预计将于2024.2月份正式发布！ 除了在官网下载Go 1.22rc1版本进行新特性体验之外，我们还可以通过在线的Go Playground选择“Go dev b...</description></item><item><title>通过实例理解Go静态单赋值（SSA）</title><link>https://tonybai.com/2022/10/21/understand-go-ssa-by-example/</link><pubDate>Fri, 21 Oct 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/10/21/understand-go-ssa-by-example/</guid><description>本文永久链接 – https://tonybai.com/2022/10/21/understand-go-ssa-by-example 在上一篇文章《通过实例理解Go内联优化》中，我们探讨了Go编译器在编译中端进行的内联优化。内联优化基于IR中间表示进行，不过Go编译过程不止有一种IR表示，这点和龙书《编译原理(第二版)》的在第六章“中间代码生成”一开始处的讲解是一致的，即在将给定源语言的一个程...</description></item><item><title>通过实例理解Go内联优化</title><link>https://tonybai.com/2022/10/17/understand-go-inlining-optimisations-by-example/</link><pubDate>Mon, 17 Oct 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/10/17/understand-go-inlining-optimisations-by-example/</guid><description>本文永久链接 – https://tonybai.com/2022/10/17/understand-go-inlining-optimisations-by-example * * * 移动互联网时代，直面C端用户的业务系统规模一般都很庞大，系统消耗的机器资源也很可观，系统使用的CPU核数、内存都是在消耗公司的真金白银。在服务水平不下降的前提下尽量降低单服务实例的资源消耗，即我们俗称的“少吃草多...</description></item><item><title>Go 1.18中值得关注的几个变化</title><link>https://tonybai.com/2022/04/20/some-changes-in-go-1-18/</link><pubDate>Wed, 20 Apr 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/04/20/some-changes-in-go-1-18/</guid><description>本文永久链接 – https://tonybai.com/2022/04/20/some-changes-in-go-1-18 &amp;gt; 从3月23日开始，我居家办公了20+天。这期间我本来是应该有时间写下这篇综述类文章的，但是封了两天后，抢菜、带娃的事情就开始困扰着我。我实在没有下笔写下这篇文章的心思。4月13日终于解封了，上班后的气象就是不一样，人也精神了很多，于是这篇文章也被提上了日程。希望新冠疫...</description></item><item><title>Go 1.17新特性详解：使用基于寄存器的调用惯例</title><link>https://tonybai.com/2021/08/20/using-register-based-calling-convention-in-go-1-17/</link><pubDate>Fri, 20 Aug 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/08/20/using-register-based-calling-convention-in-go-1-17/</guid><description>本文永久链接 – https://tonybai.com/2021/08/20/using-register-based-calling-convention-in-go-1-17 除了Go语言特性与go module有重要变化之外，Go编译器与Go运行时也都有着优化与改进，这两方面的变化对Go程序的构建与运行影响巨大。在这个系列的最后一篇中，我们来看看编译器与运行时中那些值得关注的变化。 1. ...</description></item><item><title>Go 1.17中值得关注的几个变化</title><link>https://tonybai.com/2021/08/17/some-changes-in-go-1-17/</link><pubDate>Tue, 17 Aug 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/08/17/some-changes-in-go-1-17/</guid><description>本文永久链接 – https://tonybai.com/2021/08/17/some-changes-in-go-1-17 Go核心开发团队在去年GopherCon大会上给Go泛型的定调是在2022年2月份的Go 1.18版本中发布，那可是自Go诞生以来语法规范变动最大的一次，这让包括笔者在内的全世界的Gopher们都满怀期待。 不过别忘了，在Go 1.18这个“网红版本”发布前，还有一个“实...</description></item><item><title>通过实例理解Go逃逸分析</title><link>https://tonybai.com/2021/05/24/understand-go-escape-analysis-by-example/</link><pubDate>Mon, 24 May 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/05/24/understand-go-escape-analysis-by-example/</guid><description>本文永久链接 – https://tonybai.com/2021/05/24/understand-go-escape-analysis-by-example 翻看了一下自己的Go文章归档，发现自己从未专门写过有关Go逃逸分析（escape analysis）的文章。关于Go变量的逃逸分析，大多数Gopher其实并不用关心，甚至可以无视。但是如果你将Go应用于性能敏感的领域，要完全压榨出Go应用...</description></item><item><title>记一次go panic问题的解决过程</title><link>https://tonybai.com/2019/04/04/notes-about-fixing-a-go-panic-problem/</link><pubDate>Thu, 04 Apr 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/04/04/notes-about-fixing-a-go-panic-problem/</guid><description>一. Panic问题概述 ------------ 本周收到客户在bugclose上填写的一个issue：添加一个下发通道后，pushd程序panic并退出了！程序panic时输出的stacktrace信息摘录如下： panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: se...</description></item><item><title>Goroutine调度实例简要分析</title><link>https://tonybai.com/2017/11/23/the-simple-analysis-of-goroutine-schedule-examples/</link><pubDate>Thu, 23 Nov 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/11/23/the-simple-analysis-of-goroutine-schedule-examples/</guid><description>前两天一位网友在微博私信我这样一个问题： &amp;gt; 抱歉打扰您咨询您一个关于Go的问题：对于goroutine的概念我是明了的，但很疑惑goroutine的调度问题, 根据《Go语言编程》一书：“当一个任务正在执行时，外部没有办法终止它。要进行任务切换，只能通过由该任务自身调用yield()来主动出让CPU使用权。” 那么，假设我的goroutine是一个死循环的话，是否其它goroutine就没有执行...</description></item><item><title>也谈C语言的restrict类型修饰符</title><link>https://tonybai.com/2011/11/18/also-talk-about-restrict-type-qualifier-in-c/</link><pubDate>Fri, 18 Nov 2011 00:00:00 +0800</pubDate><guid>https://tonybai.com/2011/11/18/also-talk-about-restrict-type-qualifier-in-c/</guid><description>restrict关键字是C99标准中新引入的一个类型修饰符(type qualifier)。如果你看过GNU C库的源码或是其manual，你就会发现restrict修饰符被广泛地应用在GNU C库中。restrict关键字到底是用来做什么的呢？估计很多对C语言细节研究不够的程序员都无法给出答案，我个人也只是停留在&amp;#34;知道&amp;#34;这一关键字的层次上，于是乎今天我又对着C99规范钻研了一番，略有收获，这里也...</description></item><item><title>也谈C语言的内联函数</title><link>https://tonybai.com/2011/06/22/also-talk-about-inline-function-in-c/</link><pubDate>Wed, 22 Jun 2011 00:00:00 +0800</pubDate><guid>https://tonybai.com/2011/06/22/also-talk-about-inline-function-in-c/</guid><description>有这样一段代码： /\* foo.c \*/ #include  &amp;#34;stdio.h&amp;#34; inline void foo() {     printf(&amp;#34;inline foo in %s\\n&amp;#34;, \_\_FILE\_\_); } int main() {     foo();     return 0; } 我采用C99标准，并在不加任何优化选项的情况下编译之： $ gcc -std=c99 foo...</description></item></channel></rss>