<?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>Golang on Tony Bai</title><link>https://tonybai.com/tags/golang/</link><description>Recent content in Golang on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Fri, 26 Jun 2026 18:06:21 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/golang/index.xml" rel="self" type="application/rss+xml"/><item><title>偿还十年技术债：深度拆解 Go 1.27 的 GODEBUG 强力清理计划</title><link>https://tonybai.com/2026/06/26/policy-for-removing-godebug-flags/</link><pubDate>Fri, 26 Jun 2026 18:06:21 +0800</pubDate><guid>https://tonybai.com/2026/06/26/policy-for-removing-godebug-flags/</guid><description>&lt;p&gt;&lt;img alt="题图" loading="lazy" src="https://tonybai.com/images/wp-content/uploads/2026/policy-for-removing-godebug-flags-1.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tonybai.com/2026/06/26/policy-for-removing-godebug-flags"&gt;本文永久链接&lt;/a&gt; – &lt;a href="https://tonybai.com/2026/06/26/policy-for-removing-godebug-flags"&gt;https://tonybai.com/2026/06/26/policy-for-removing-godebug-flags&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;大家好，我是Tony Bai。&lt;/p&gt;
&lt;p&gt;2012 年 3 月，Go 1.0 的发布确立了那条被奉为开源界圣经的规则——&lt;strong&gt;Go 1 兼容性保证（Go 1 compatibility guarantee）&lt;/strong&gt;。它承诺的大意：任何符合 Go 1 规范的程序，在未来的 Go 1.x 版本中，无需修改即可直接编译并正确运行。&lt;/p&gt;</description></item><item><title>浏览器里的“安全阴谋”：为什么 Go 1.27 的 UUIDv7 会离奇丧失随机性？</title><link>https://tonybai.com/2026/06/25/go-1-27-uuid-newv7-always-generates-uuid-with-7000-on-browsers/</link><pubDate>Thu, 25 Jun 2026 16:46:56 +0800</pubDate><guid>https://tonybai.com/2026/06/25/go-1-27-uuid-newv7-always-generates-uuid-with-7000-on-browsers/</guid><description>&lt;p&gt;&lt;img alt="题图" loading="lazy" src="https://tonybai.com/images/wp-content/uploads/2026/go-1-27-uuid-newv7-always-generates-uuid-with-7000-on-browsers-1.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tonybai.com/2026/06/25/go-1-27-uuid-newv7-always-generates-uuid-with-7000-on-browsers"&gt;本文永久链接&lt;/a&gt; – &lt;a href="https://tonybai.com/2026/06/25/go-1-27-uuid-newv7-always-generates-uuid-with-7000-on-browsers"&gt;https://tonybai.com/2026/06/25/go-1-27-uuid-newv7-always-generates-uuid-with-7000-on-browsers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;大家好，我是Tony Bai。&lt;/p&gt;
&lt;p&gt;在刚刚发布&lt;a href="https://tonybai.com/2026/06/24/go-1-27-foresight"&gt;第一个候选版本（RC1）的 Go 1.27&lt;/a&gt; 中，一个让开发者感到贴心的特性升级，莫过于标准库终于原生内建了 &lt;strong&gt;uuid&lt;/strong&gt; 包。我们终于可以告别第三方依赖，用最地道、最安全的方式在标准库里生成高并发、时间有序的 &lt;strong&gt;UUIDv7&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>Go 1.27新特性前瞻：泛型方法落地，标准库内建 UUID</title><link>https://tonybai.com/2026/06/24/go-1-27-foresight/</link><pubDate>Wed, 24 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/24/go-1-27-foresight/</guid><description>本文永久链接 – https://tonybai.com/2026/06/24/go-1-27-foresight 大家好，我是Tony Bai。 随着 2026 年中 Go 1.27 开发分支的功能冻结与首个RC版本的发布，Go 语言生态再次迎来了一个令人瞩目的关键节点。 回望刚刚过去的半年，Go 语言在 Go 1.26 中通过 Green Tea GC 和 逃逸分析升级 实现了极致的性能压榨。...</description></item><item><title>屠榜 CNCF！为什么在云原生时代，Go 语言能把 Java、C++ 和 Rust 堵在门外？</title><link>https://tonybai.com/2026/06/22/why-is-go-dominating-in-cncf-landscape/</link><pubDate>Mon, 22 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/22/why-is-go-dominating-in-cncf-landscape/</guid><description>本文永久链接 – https://tonybai.com/2026/06/22/why-is-go-dominating-in-cncf-landscape 大家好，我是Tony Bai。 如果你去翻阅 CNCF（云原生计算基金会）的全景图（Landscape），你会发现一个极其震撼、甚至近乎垄断的现象： 从奠定容器时代基础的 **Docker**，到统治现代云编排的 **Kubernetes**...</description></item><item><title>为什么说“编译通过，就能运行”？Google 专家 Alice 揭秘 Rust 的工程美学与底层逻辑</title><link>https://tonybai.com/2026/06/16/why-if-it-compiles-it-runs-rust-engineering-aesthetics-and-logic/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/16/why-if-it-compiles-it-runs-rust-engineering-aesthetics-and-logic/</guid><description>本文永久链接 – https://tonybai.com/2026/06/16/why-if-it-compiles-it-runs-rust-engineering-aesthetics-and-logic 大家好，我是Tony Bai。 在软件工程界，有一句流传甚广、近乎玄学的名言：“如果你的 Rust 代码通过了编译，那么它就已经可以正确运行了。” 对于被 Java 的空指针异常（NullP...</description></item><item><title>谷歌 SRE 重磅白皮书：当 AI 自动写出 10 倍代码，谁来阻止系统崩溃？</title><link>https://tonybai.com/2026/06/15/google-ai-in-sre/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/15/google-ai-in-sre/</guid><description>本文永久链接 – https://tonybai.com/2026/06/15/google-ai-in-sre 大家好，我是Tony Bai。 整个软件工程界正在经历一场由生成式 AI 引发的**“效率大爆炸”**。 随着 GitHub Copilot、Claude Code、Codex 以及OpenClaw、Hermes等各类AI Agent 的普及，企业编写代码、构建功能并将其推向生产环境的...</description></item><item><title>别再省 Token 了！硅谷新共识：浪费算力才是唯一捷径</title><link>https://tonybai.com/2026/06/14/stop-saving-tokens-silicon-valley-consensus-waste-compute-shortcut/</link><pubDate>Sun, 14 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/14/stop-saving-tokens-silicon-valley-consensus-waste-compute-shortcut/</guid><description>本文永久链接 – https://tonybai.com/2026/06/14/stop-saving-tokens-silicon-valley-consensus-waste-compute-shortcut 大家好，我是Tony Bai。 你是不是也曾在写 Prompt（提示词）时斤斤计较，为了省下那几元钱的 Token 而字斟句酌？你是不是也曾疯狂收藏各种“保姆级提示词教程”，试图摸索出调...</description></item><item><title>Linux 内核顶级维护者：写了 35 年 C，是 Rust 让我重新找回了编程的乐趣</title><link>https://tonybai.com/2026/06/13/linux-maintainer-greg-kh-switched-to-rust-after-35-years-of-c/</link><pubDate>Sat, 13 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/13/linux-maintainer-greg-kh-switched-to-rust-after-35-years-of-c/</guid><description>本文永久链接 – https://tonybai.com/2026/06/13/linux-maintainer-greg-kh-switched-to-rust-after-35-years-of-c 大家好，我是Tony Bai。 在开源软件的宏大版图中，Linux 内核无疑是那座最古老、最庞大、也最不容有失的钢铁巨塔。它由数千万行 C 语言代码铸就，运行在世界上每一个数据中心、每一台智能手机...</description></item><item><title>拒领上亿、封杀 AI：Zig 之父为什么 10 年不发 1.0？</title><link>https://tonybai.com/2026/06/12/zig-father-refuses-funding-bans-ai-why-no-1-0-in-a-decade/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/12/zig-father-refuses-funding-bans-ai-why-no-1-0-in-a-decade/</guid><description>本文永久链接 – https://tonybai.com/2026/06/12/zig-father-refuses-funding-bans-ai-why-no-1-0-in-a-decade 大家好，我是Tony Bai。 在技术圈，有一门名为 **Zig** 的系统级编程语言，它没有铺天盖地的营销，没有背后财大气粗的金主干爹，甚至它的代码仓库在 2025 年末从 GitHub 直接“硬核跑路...</description></item><item><title>写地道的 Go 语言，是否能让你成为了一个更好的开发者？</title><link>https://tonybai.com/2026/06/11/writing-idiomatic-go-make-you-better/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/11/writing-idiomatic-go-make-you-better/</guid><description>本文永久链接 – https://tonybai.com/2026/06/11/writing-idiomatic-go-make-you-better 大家好，我是Tony Bai。 在技术圈里，Go 语言（Golang）一直扮演着一个特立独行、甚至有些“格格不入”的角色。 如果你去问一个写 Java、Python、TypeScript 或是 C++ 的程序员对 Go 的第一印象，得到的回答大概...</description></item><item><title>C++ 的权力游戏：一部关于妥协、背叛与重生的“史诗神剧”</title><link>https://tonybai.com/2026/06/10/the-story-of-cpp/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/10/the-story-of-cpp/</guid><description>本文永久链接 – https://tonybai.com/2026/06/10/the-story-of-cpp 大家好，我是Tony Bai。 如果将人类现代软件工业比作一部庞大的机器，那么支撑其运转的最核心骨架中，无疑很大一部分由**C++**支撑。从你手中的智能手机操作系统、每天刷的短视频推荐引擎、华尔街每秒百万次的高频交易系统，到驱动大语言模型（LLM）的底层算力矩阵，C++ 几乎无处不在...</description></item><item><title>RSA 将死？Let’s Encrypt 押注 MTCs 迎战后量子时代</title><link>https://tonybai.com/2026/06/10/lets-encrypt-adopts-mtcs-preparing-for-post-quantum-security/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/10/lets-encrypt-adopts-mtcs-preparing-for-post-quantum-security/</guid><description>本文永久链接 – https://tonybai.com/2026/06/10/lets-encrypt-adopts-mtcs-preparing-for-post-quantum-security 大家好，我是Tony Bai。 当你在浏览器地址栏看到那把绿色的小锁，或是敲下 https:// 时，你正在被人类历史上最伟大的密码学基础设施——Web PKI（公钥基础设施）保护着。 长久以来，这...</description></item><item><title>终结十年纠结：Go 新提案允许 Example 支持任意函数签名</title><link>https://tonybai.com/2026/06/09/go-proposal-examples-to-support-arbitrary-function-signatures/</link><pubDate>Tue, 09 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/09/go-proposal-examples-to-support-arbitrary-function-signatures/</guid><description>本文永久链接 – https://tonybai.com/2026/06/09/go-proposal-examples-to-support-arbitrary-function-signatures 大家好，我是Tony Bai。 在 Go 语言的开发日常中，编写 ExampleXxx 示例代码不仅是完善文档的必经之路，更是一门绝佳的“活文档”艺术。 通过在 “\_test.go” 文件中编写...</description></item><item><title>2026年，大厂重构核心系统为何集体投向 Go？</title><link>https://tonybai.com/2026/06/08/the-real-reason-big-tech-is-switching-to-go/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/08/the-real-reason-big-tech-is-switching-to-go/</guid><description>本文永久链接 – https://tonybai.com/2026/06/08/the-real-reason-big-tech-is-switching-to-go 大家好，我是Tony Bai。 在软件工程中，核心技术栈的迁移是一项高风险、高成本的决策。 然而，在近期的技术演进中，我们看到了一股明显的趋势：全球科技巨头与快速成长的 AI 独角兽们，正在不约而同地将核心系统向 Go 语言（Gol...</description></item><item><title>别把 Go 写成 Java：毁掉项目从过度架构开始</title><link>https://tonybai.com/2026/06/05/stop-writing-go-like-java-avoid-over-architecting/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/05/stop-writing-go-like-java-avoid-over-architecting/</guid><description>本文永久链接 – https://tonybai.com/2026/06/05/stop-writing-go-like-java-avoid-over-architecting 大家好，我是Tony Bai。 前不久，Go 语言社区 Reddit (r/golang) 上爆发了两场激烈的争论。 这两个帖子的主题直击了无数 Go 开发者的灵魂深处： 1. 我们该如何构建一个大型的 Go 模块化单体...</description></item><item><title>AI 时代如何真正掌握一门新技术？这份非主流学习指南建议永久收藏</title><link>https://tonybai.com/2026/06/04/master-new-tech-in-ai-era-counter-intuitive-learning-guide/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/04/master-new-tech-in-ai-era-counter-intuitive-learning-guide/</guid><description>本文永久链接 – https://tonybai.com/2026/06/04/master-new-tech-in-ai-era-counter-intuitive-learning-guide 大家好，我是Tony Bai。 最近，在开发者社区 Reddit 的 Golang（Go语言）板块上，一个求助帖引发了跨越语言和技术栈的集体共鸣。 发帖人是一位刚入行两年的新人，他的帖子大意是： &amp;gt; *...</description></item><item><title>开源维护者的困境</title><link>https://tonybai.com/2026/06/04/the-maintainers-dilemma/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/04/the-maintainers-dilemma/</guid><description>本文永久链接 – https://tonybai.com/2026/06/04/the-maintainers-dilemma 大家好，我是Tony Bai。 开源软件的繁荣建立在一种隐形的“社会契约”之上：贡献者贡献智慧，维护者投入精力审核。然而，当维护者面对成百上千个待处理的拉取请求（PR）而精疲力竭时，这个契约正滑向崩塌。 AI 的介入似乎提供了一线生机，但也带来了一个灵魂拷问：如果代码是 ...</description></item><item><title>Go 生态17年大浪淘沙：2026年最值得引入的10个“神仙级”QoL工具包</title><link>https://tonybai.com/2026/06/03/10-god-tier-go-qol-libraries-to-use-in-2026/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/03/10-god-tier-go-qol-libraries-to-use-in-2026/</guid><description>本文永久链接 – https://tonybai.com/2026/06/03/10-god-tier-go-qol-libraries-to-use-in-2026 大家好，我是Tony Bai。 在软件工程中，有一个词叫 **QoL（Quality of Life，生产体验/开发幸福感）**。 Go语言（Golang）凭借极简的语法、强悍的并发能力和超快的编译速度，成为了现代后端和云原生的绝对...</description></item><item><title>再见样板代码！Go 官方新提案：函数一键转接口</title><link>https://tonybai.com/2026/06/02/no-more-boilerplate-go-proposal-function-to-interface-conversion/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/02/no-more-boilerplate-go-proposal-function-to-interface-conversion/</guid><description>本文永久链接 – https://tonybai.com/2026/06/02/no-more-boilerplate-go-proposal-function-to-interface-conversion 大家好，我是Tony Bai。 在 Go 语言日常开发中，有一个设计几乎人人写过，但写多了又让人觉得极其繁琐、甚至有些“脱裤子放屁”的样板代码。 假设你需要一个只读数据的 io.Reader...</description></item><item><title>AI 优化 1.5ms，手写 0.02ms！Ghostty 作者痛批 AI 编程“平庸陷阱”</title><link>https://tonybai.com/2026/05/30/ghostty-creator-slams-ai-coding-performance-1-5ms-vs-0-02ms/</link><pubDate>Sat, 30 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/30/ghostty-creator-slams-ai-coding-performance-1-5ms-vs-0-02ms/</guid><description>本文永久链接 – https://tonybai.com/2026/05/30/ghostty-creator-slams-ai-coding-performance-1-5ms-vs-0-02ms 大家好，我是Tony Bai。 在开源界，**Mitchell Hashimoto** 这个名字几乎无人不知。作为 HashiCorp 的联合创始人，他一手打造了 Vagrant、Terraform、...</description></item><item><title>无痛消灭技术债：Google I/O 2026 开启 Go 自动重构时代</title><link>https://tonybai.com/2026/05/29/google-io-2026-automated-go-refactoring-eliminating-technical-debt/</link><pubDate>Fri, 29 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/29/google-io-2026-automated-go-refactoring-eliminating-technical-debt/</guid><description>本文永久链接 – https://tonybai.com/2026/05/29/google-io-2026-automated-go-refactoring-eliminating-technical-debt 大家好，我是Tony Bai。 在软件开发的世界里，一直存在着一个令人绝望的“二选一”魔咒。 你要么选择 Python 或 JavaScript：它们写起来如丝般顺滑，能让你在周五下午迅...</description></item><item><title>省下 10% CPU！Uber 揭秘 Go 栈扩容的隐秘代价</title><link>https://tonybai.com/2026/05/28/uber-reveals-hidden-cost-of-go-stack-growth-10-percent-cpu-savings/</link><pubDate>Thu, 28 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/28/uber-reveals-hidden-cost-of-go-stack-growth-10-percent-cpu-savings/</guid><description>本文永久链接 – https://tonybai.com/2026/05/28/uber-reveals-hidden-cost-of-go-stack-growth-10-percent-cpu-savings 大家好，我是Tony Bai。 在顶级互联网巨头的底层架构中，性能优化绝不仅仅是写两段优雅的代码，而是一场“刀尖舔血”的硬核战争。 试想一下，如果你的公司拥有超过 **200 万个 CP...</description></item><item><title>从 Go 迁移到 Rust</title><link>https://tonybai.com/2026/05/27/migrate-go-to-rust/</link><pubDate>Wed, 27 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/27/migrate-go-to-rust/</guid><description>本文永久链接 – https://tonybai.com/2026/05/27/migrate-go-to-rust 大家好，我是Tony Bai。 在现代后端系统编程领域，Go 和 Rust 无疑是最耀眼的两大双子星。它们都拥有静态类型、编译型、单二进制文件分发等优异特性。然而，这两门语言在底层的设计哲学、运行时权衡以及开发者体验上，走向了截然不同的方向。 Matthias Endler（Cor...</description></item><item><title>悄悄用 Go 重写 AI 基础设施：NVIDIA 的 GPU 云平台为何选择 Go？</title><link>https://tonybai.com/2026/05/26/why-nvidia-chose-go-to-rewrite-their-ai-infrastructure/</link><pubDate>Tue, 26 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/26/why-nvidia-chose-go-to-rewrite-their-ai-infrastructure/</guid><description>本文永久链接 – https://tonybai.com/2026/05/26/why-nvidia-chose-go-to-rewrite-their-ai-infrastructure &amp;gt; 当大家都在谈论 CUDA、Python 和 AI 框架时，NVIDIA 的工程团队正在悄悄用 Go 构建支撑整个 AI 云平台的底层基础设施。从 GPU 函数平台 NVCF，到 AI 集群运行时 AICR，...</description></item><item><title>Google 开源 AX 与 Agent Substrate：构建以 Agent 为核心的云原生计算底座</title><link>https://tonybai.com/2026/05/23/google-open-sources-ax-and-agent-substrate-agent-centric-cloud-native-foundation/</link><pubDate>Sat, 23 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/23/google-open-sources-ax-and-agent-substrate-agent-centric-cloud-native-foundation/</guid><description>本文永久链接 – https://tonybai.com/2026/05/23/google-open-sources-ax-and-agent-substrate-agent-centric-cloud-native-foundation 大家好，我是Tony Bai。 随着大语言模型（LLM）与应用场景的深度融合，AI 正在从单纯的“聊天对话框”快速演进为具备长期运行、自主工具调用和复杂任务编...</description></item><item><title>十年难题终获突破：揭秘 Go 1.27 接口逃逸分析优化</title><link>https://tonybai.com/2026/05/22/go-1-27-interface-escape-analysis-optimization-breakthrough/</link><pubDate>Fri, 22 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/22/go-1-27-interface-escape-analysis-optimization-breakthrough/</guid><description>本文永久链接 – https://tonybai.com/2026/05/22/go-1-27-interface-escape-analysis-optimization-breakthrough 大家好，我是Tony Bai。 在日常的 Go 语言开发中，有这样一段极其普通、普通到闭着眼睛都能敲出来的代码： ``` val := 1000 fmt.Sprintf(&amp;#34;Result: %d&amp;#34;, v...</description></item><item><title>大洗牌！Google 内部确认：Go 正取代 C++，成为 AI Agent 时代的“通用语言”</title><link>https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google/</link><pubDate>Thu, 21 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google/</guid><description>本文永久链接 – https://tonybai.com/2026/05/21/go-is-the-new-lingua-franca-for-ai-agents-at-google 大家好，我是Tony Bai。 在过去的两年里，只要一提到 AI 开发，99% 的人脑海中弹出的第一个词绝对是：**Python**。而如果是涉及到大模型底层的高性能推理与算力压榨，大家想到的必然是 **C++** ...</description></item><item><title>AI 编码胜率榜：Go 与 Rust 完胜 C++</title><link>https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp/</link><pubDate>Wed, 20 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp/</guid><description>本文永久链接 – https://tonybai.com/2026/05/20/ai-coding-win-rate-rankings-go-and-rust-vs-cpp 大家好，我是Tony Bai。 过去两年，程序员群体经历了一场前所未有的“职业身份危机”。 随着 GPT、Claude、Gemini 等模型的发布与能力更迭，各种“AI 几秒钟写出小游戏”、“AI 自动化修复 Bug”的新闻充...</description></item><item><title>代码可以让 AI 写，但设计得由你做：重塑工程师的“算法直觉”</title><link>https://tonybai.com/2026/05/19/ai-era-software-engineer-algorithm-map/</link><pubDate>Tue, 19 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/19/ai-era-software-engineer-algorithm-map/</guid><description>本文永久链接 – https://tonybai.com/2026/05/19/ai-era-software-engineer-algorithm-map 大家好，我是Tony Bai。 “帮我写一个限流器。” 当你把这行字敲进 Claude、Gemini 或ChatGPT 的对话框或CLI形式的命令行时，几秒钟后，屏幕上会出现一段看似完美的 Go 代码。它可能使用了 Token Bucket ...</description></item><item><title>别神话 Rust 重写了：搞定1%热路径，Go 性能照样起飞</title><link>https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites/</link><pubDate>Mon, 18 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites/</guid><description>本文永久链接 – https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites 大家好，我是Tony Bai。 近年来，如果你常年混迹于国内外各大技术社区，你一定会感受到一种近乎狂热的“政治正确”：**带垃圾回收（GC）的语言都有原罪，万物皆可（且应该）用 Rust 重写。** 从底层基础设施到上层业务逻...</description></item><item><title>写了 10 年 Java/TS，Go 语言终于治好了我的“过度设计”绝症</title><link>https://tonybai.com/2026/05/16/go-cured-my-over-engineering-addiction-after-java-ts/</link><pubDate>Sat, 16 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/16/go-cured-my-over-engineering-addiction-after-java-ts/</guid><description>本文永久链接 – https://tonybai.com/2026/05/16/go-cured-my-over-engineering-addiction-after-java-ts 大家好，我是Tony Bai。 在软件工程的圈子里，有一种病，几乎所有写过几年 Java 或 TypeScript 的程序员都得过，而且往往病得不轻。 这种病叫：**“过度设计综合征（Over-engineerin...</description></item><item><title>AI 时代，软件大师们为什么都倒戈向 Go 和 Rust 了？</title><link>https://tonybai.com/2026/05/14/uncle-bob-esr-on-why-we-are-turning-to-go-and-rust-in-the-ai-era/</link><pubDate>Thu, 14 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/14/uncle-bob-esr-on-why-we-are-turning-to-go-and-rust-in-the-ai-era/</guid><description>本文永久链接 – https://tonybai.com/2026/05/14/uncle-bob-esr-on-why-we-are-turning-to-go-and-rust-in-the-ai-era 大家好，我是Tony Bai。 在软件工程的浩瀚星河中，有两位堪称“活化石”级别的宗师： 一位是 **Eric S. Raymond (ESR)**，开源运动的先驱，那本被誉为开源圣经的《大...</description></item><item><title>别再瞎写 go.mod 了！一行 go 1.xx，竟藏着 7 个足以颠覆你认知的“秘密开关”</title><link>https://tonybai.com/2026/05/13/go-mod-hidden-features-7-secret-switches-in-go-version/</link><pubDate>Wed, 13 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/13/go-mod-hidden-features-7-secret-switches-in-go-version/</guid><description>本文永久链接 – https://tonybai.com/2026/05/13/go-mod-hidden-features-7-secret-switches-in-go-version 大家好，我是Tony Bai。 在这个“CV 工程师(复制粘贴工程师)”盛行的时代，很多 Go 开发者在新建项目时，不会使用go mod init来初始化一个模块，而是会熟练地从别的 go.mod 文件里，复制...</description></item><item><title>“用 Go 打天下，用 Rust 救火”：这才是 2026 年后端架构的唯一正解</title><link>https://tonybai.com/2026/05/11/go-vs-rust-backend-architecture-the-2026-strategy/</link><pubDate>Mon, 11 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/11/go-vs-rust-backend-architecture-the-2026-strategy/</guid><description>本文永久链接 – https://tonybai.com/2026/05/11/go-vs-rust-backend-architecture-the-2026-strategy 大家好，我是Tony Bai。 如果你经常逛各大技术社区，你一定会发现一个永远充满火药味的话题：**Go 和 Rust，到底谁才是未来的后端霸主？** 两派的支持者常常吵得不可开交。Go 开发者嘲笑 Rust 编译器像个...</description></item><item><title>对话 Uber 前 CTO：我如何用 5000 个微服务驯服这头失控的巨兽</title><link>https://tonybai.com/2026/05/10/scaling-uber-with-thuan-pham/</link><pubDate>Sun, 10 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/10/scaling-uber-with-thuan-pham/</guid><description>本文永久链接 – https://tonybai.com/2026/05/10/scaling-uber-with-thuan-pham 大家好，我是Tony Bai。 在硅谷的黄金时代，曾有一家公司以一种近乎“暴力”的美学，重新定义了增长的速度。它的名字叫 Uber。 在最癫狂的岁月里，它以“周”为单位攻占新的城市，用海量的资本和补贴点燃市场，其业务增长曲线陡峭得如同悬崖峭壁。 但在这场增长的狂...</description></item><item><title>火爆外网的 Go 开源神器 CLI Printing Press：一键生成 Agent 专属 CLI 工具</title><link>https://tonybai.com/2026/05/09/cli-printing-press-intro/</link><pubDate>Sat, 09 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/09/cli-printing-press-intro/</guid><description>本文永久链接 – https://tonybai.com/2026/05/09/cli-printing-press-intro 大家好，我是Tony Bai。 &amp;gt; 近日，一个名叫 cli-printing-press 的开源项目冲上了 X.com 热搜。它用 Go 写成，解决的是 AI Agent 时代最隐秘、也最致命的痛点——工具不够用，更不好用。 先说一个反常识的故事 Discord 有 3...</description></item><item><title>Bun 创始人带头“叛逃”：放弃 Zig，用 AI 把项目重写成 Rust？</title><link>https://tonybai.com/2026/05/08/bun-founder-abandons-zig-for-rust-ai-rewrite/</link><pubDate>Fri, 08 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/08/bun-founder-abandons-zig-for-rust-ai-rewrite/</guid><description>本文永久链接 – https://tonybai.com/2026/05/08/bun-founder-abandons-zig-for-rust-ai-rewrite 大家好，我是Tony Bai。 在过去的两年里，Bun 以其闪电般的速度，成为了前端世界挑战 Node.js 霸权的“重量级选手”。 而它成功的秘诀之一，就是其创始人 Jarred Sumner 极其激进、甚至有些“偏执”的技术选...</description></item><item><title>AWS 大神发文炮轰：Go 的并发就是个“笑话”，JVM 的方案要更优越</title><link>https://tonybai.com/2026/05/07/aws-guru-slams-go-concurrency-as-a-joke-vs-jvm/</link><pubDate>Thu, 07 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/07/aws-guru-slams-go-concurrency-as-a-joke-vs-jvm/</guid><description>本文永久链接 – https://tonybai.com/2026/05/07/aws-guru-slams-go-concurrency-as-a-joke-vs-jvm 大家好，我是Tony Bai。 过去十年，如果要在后端技术圈选出一个“金字招牌”，那无疑是 **Go 语言的并发**。 凭借其极简的 go 关键字和优雅的 channel，Go 将并发编程的门槛从“博士级”拉到了“入门级”。在...</description></item><item><title>Robert Griesemer 亲述：只解决 90% 问题的“箭头函数”该长什么样？</title><link>https://tonybai.com/2026/05/06/robert-griesemer-on-go-arrow-functions/</link><pubDate>Wed, 06 May 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/05/06/robert-griesemer-on-go-arrow-functions/</guid><description>本文永久链接 – https://tonybai.com/2026/05/06/robert-griesemer-on-go-arrow-functions 大家好，我是Tony Bai。 在 Go 语言的演进史上，很少有一个 Issue 能像 #21498 这样，跨越 9 年时光，累积近千条评论，却依然让官方核心团队如履薄冰。 这个 Issue 的目标很单纯：**为 Go 提供一种更简洁的匿名函...</description></item><item><title>Ghostty 之父带头“出走”GitHub！官方 CTO 紧急道歉，并揭秘正在使用 Go 语言救火</title><link>https://tonybai.com/2026/04/30/ghostty-creator-leads-github-exodus-cto-apology-go-fix/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/30/ghostty-creator-leads-github-exodus-cto-apology-go-fix/</guid><description>本文永久链接 – https://tonybai.com/2026/04/30/ghostty-creator-leads-github-exodus-cto-apology-go-fix 大家好，我是Tony Bai。 在程序员的江湖里，GitHub 从来不仅仅是一个代码托管平台。它是开源精神的麦加，是数千万开发者的“赛博故乡”，是这个行业赖以运转的、最坚实的“基础设施”。 但就在近几个月，这座...</description></item><item><title>Go 1.27 将默认开启 SIMD for amd64，可移植 SIMD 包提案出炉</title><link>https://tonybai.com/2026/04/29/go-1-27-default-simd-for-amd64-portable-simd-proposal/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/29/go-1-27-default-simd-for-amd64-portable-simd-proposal/</guid><description>本文永久链接 – https://tonybai.com/2026/04/29/go-1-27-default-simd-for-amd64-portable-simd-proposal 大家好，我是Tony Bai。 过去十年，Go 语言以其惊人的简洁和强大的并发能力，席卷了整个云原生领域。但在这片繁荣之下，一个尴尬的“阿喀琉斯之踵”，始终困扰着所有追求极致性能的 Gopher： **Go 语言...</description></item><item><title>Go 语言“内战”迎来终局？Go 圣经作者亲自下场，为“三元运算符”发起折中提案！</title><link>https://tonybai.com/2026/04/28/go-conditional-expressions-propsal/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/28/go-conditional-expressions-propsal/</guid><description>本文永久链接 – https://tonybai.com/2026/04/28/go-conditional-expressions-propsal 大家好，我是Tony Bai。 在 Go 语言的江湖里，有一个话题，像幽灵一样，每隔几个月就会重燃战火。它引发的争论之激烈、持续时间之长，甚至超过了当初的“泛型”和“错误处理”。 它就是——**三元条件运算符（Ternary Conditional ...</description></item><item><title>“我们想用 Rust 重写的次数是：零”：云平台 Render 靠“无聊”的 Go 撑起了千亿流量</title><link>https://tonybai.com/2026/04/27/render-why-we-wont-rewrite-in-rust-the-power-of-boring-go/</link><pubDate>Mon, 27 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/27/render-why-we-wont-rewrite-in-rust-the-power-of-boring-go/</guid><description>本文永久链接 – https://tonybai.com/2026/04/27/render-why-we-wont-rewrite-in-rust-the-power-of-boring-go 大家好，我是Tony Bai。 在技术圈的鄙视链里，Go 和 Rust 这对“欢喜冤家”的战争，似乎从未停歇。 一方是追求极致简洁、被誉为“云原生时代的 C 语言”的 Go；另一方则是以内存安全、性能屠榜...</description></item><item><title>为什么人人爱 Rust，但 RedMonk 榜单却给它泼了一盆冷水？</title><link>https://tonybai.com/2026/04/25/rust-popularity-vs-redmonk-ranking-reality-check/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/25/rust-popularity-vs-redmonk-ranking-reality-check/</guid><description>本文永久链接 – https://tonybai.com/2026/04/25/rust-popularity-vs-redmonk-ranking-reality-check 大家好，我是Tony Bai。 在过去几年的技术圈，Rust 是当之无愧的“流量之王”。 它连续多年在 Stack Overflow 开发者调研中蝉联“最受喜爱的语言”；它是 Linux 内核 30 年来引入的唯一非 C ...</description></item><item><title>Go 代码设计的“第一天原则”：一份能让你少走五年弯路的实战模式清单</title><link>https://tonybai.com/2026/04/24/go-code-design-day-one-principle-practical-patterns-list/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/24/go-code-design-day-one-principle-practical-patterns-list/</guid><description>本文永久链接 – https://tonybai.com/2026/04/24/go-code-design-day-one-principle-practical-patterns-list 大家好，我是Tony Bai。 &amp;gt; 世界读书日送福利活动火热进行中，点击这里留言参与，赢取属于你的幸运！ 每一个 Go 开发者，大概都经历过这样的心路历程： 项目启动初期，为了追求“快”，我们怎么方便怎么来...</description></item><item><title>HashiCorp 创始人亲口“认错”：AI 让我重新爱上了 Go (文末福利)</title><link>https://tonybai.com/2026/04/23/hashicorp-founder-admits-go-is-alive-thanks-to-ai/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/23/hashicorp-founder-admits-go-is-alive-thanks-to-ai/</guid><description>本文永久链接 – https://tonybai.com/2026/04/23/hashicorp-founder-admits-go-is-alive-thanks-to-ai 大家好，我是Tony Bai。 &amp;gt; 今天是世界读书日，在同款公众号文章的文末我将送出两个价值 99 元的《从 0 开始构建 Agent Harness》专栏的免费兑换码，欢迎大家点击这里积极留言参与！ 在技术圈的江湖里，...</description></item><item><title>聊聊为什么我要花这么大精力，带大家手写 Agent Harness？</title><link>https://tonybai.com/2026/04/21/why-we-are-building-agent-harness-from-scratch/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/21/why-we-are-building-agent-harness-from-scratch/</guid><description>本文永久链接 – https://tonybai.com/2026/04/21/why-we-are-building-agent-harness-from-scratch 大家好，我是Tony Bai。 今天想和大家分享一个好消息：我筹备已久的极客时间专栏 **《从0 开始构建 Agent Harness》** 于昨日(2026.4.20)正式上架了。 在这个各种 AI 应用框架满天飞、“几行 ...</description></item><item><title>从“开源英雄”到“社区公敌”，Ollama 到底做错了什么？</title><link>https://tonybai.com/2026/04/18/ollama-from-open-source-hero-to-community-enemy/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/18/ollama-from-open-source-hero-to-community-enemy/</guid><description>本文永久链接 – https://tonybai.com/2026/04/18/ollama-from-open-source-hero-to-community-enemy 大家好，我是Tony Bai。 两年前，在本地大模型的蛮荒时代，Ollama 曾如一道神光，照亮了无数普通开发者的探索之路。 凭借那句魔咒般的 ollama run llama3，它以一种近乎“降维打击”的优雅，将普通人与本...</description></item><item><title>Rust 还没进前十，TIOBE 就开始唱衰了？</title><link>https://tonybai.com/2026/04/17/tiobe-ranking-and-the-decline-of-rust-hype/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/17/tiobe-ranking-and-the-decline-of-rust-hype/</guid><description>本文永久链接 – https://tonybai.com/2026/04/17/tiobe-ranking-and-the-decline-of-rust-hype 大家好，我是Tony Bai。 过去几年，技术圈最热门的“猜谜游戏”之一，就是预测 Rust 什么时候能杀入 TIOBE 排行榜的前十。 这门被誉为“天选之子”的语言，连续多年霸榜 Stack Overflow“最受喜爱”的宝座，被微...</description></item><item><title>为什么说 go 语句是新时代的 goto？四大法则拯救失控 goroutine</title><link>https://tonybai.com/2026/04/16/structured-concurrency-in-go-research-oriented-perspective/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/16/structured-concurrency-in-go-research-oriented-perspective/</guid><description>本文永久链接 – https://tonybai.com/2026/04/16/structured-concurrency-in-go-research-oriented-perspective 大家好，我是Tony Bai。 Go 语言的 go 关键字是并发编程史上的一次民主化革命，它让并发变得前所未有的廉价和简单。只需在一个函数调用前加上 go，我们就拥有了一个并发执行的任务。 这种语法是如...</description></item><item><title>C++ 社区内部大讨论：新特性到底是“生产力革命”，还是“叠加的复杂性”？</title><link>https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity/</guid><description>本文永久链接 – https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity 大家好，我是Tony Bai。 如果你把编程语言比作工具，Go 是一把极简的手术刀，精准且克制；Rust 是一套带智能传感器的外骨骼装甲，严苛且安全。 而 C++ 呢？它更像是一把在过去四十年里不断被加...</description></item><item><title>别再无脑 go func() 了！Go 资深布道师 Dave Cheney 的 Goroutine 管理哲学</title><link>https://tonybai.com/2026/04/13/dave-cheney-goroutine-management-philosophy/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/13/dave-cheney-goroutine-management-philosophy/</guid><description>本文永久链接 – https://tonybai.com/2026/04/13/dave-cheney-goroutine-management-philosophy 大家好，我是Tony Bai。 在 Go 语言的江湖里，go func() 就像一把绝世好剑。它轻灵、锋利，只需几个字符，就能让你瞬间拥有“分身术”，并发地处理海量任务。Go 团队曾自豪地告诉我们：Goroutine 很廉价，你可以...</description></item><item><title>Go Command 工作组成立：这几个用了十年的命令可能要被废！</title><link>https://tonybai.com/2026/04/11/go-command-working-group-formed-legacy-commands-deprecated/</link><pubDate>Sat, 11 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/11/go-command-working-group-formed-legacy-commands-deprecated/</guid><description>本文永久链接 – https://tonybai.com/2026/04/11/go-command-working-group-formed-legacy-commands-deprecated 大家好，我是Tony Bai。 在这个技术浪潮汹涌的时代，Go 语言以其惊人的稳定性和向后兼容性著称。但稳定，并不代表停滞。 就在最近，Go 核心团队内部悄然发生了一件大事：他们正式成立了一个全新的 “...</description></item><item><title>别搞“小而美”了！Rust 开发者请愿：求求标准库学学 Go 吧</title><link>https://tonybai.com/2026/04/09/stop-being-small-and-beautiful-rust-petition-to-learn-from-go/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/09/stop-being-small-and-beautiful-rust-petition-to-learn-from-go/</guid><description>本文永久链接 – https://tonybai.com/2026/04/09/stop-being-small-and-beautiful-rust-petition-to-learn-from-go 大家好，我是Tony Bai。 如果你之前经常听 Go 社区最火的播客 GoTime(很遗憾，该播客2024年末因平台原因停播了)，你一定会熟悉每期节目最后的那个经典环节——“Unpopular ...</description></item><item><title>倒计时 33 个月？Go 前安全负责人：量子计算机将“摧毁”互联网</title><link>https://tonybai.com/2026/04/08/perspective-on-quantum-computing-timeline/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/08/perspective-on-quantum-computing-timeline/</guid><description>本文永久链接 – https://tonybai.com/2026/04/08/perspective-on-quantum-computing-timelines 大家好，我是Tony Bai。 过去三十年，我们一直活在一个笑话里：**“能够破解 RSA 加密的量子计算机，永远在十年之后。”** 作为一名软件工程师，我曾和你们中的大多数人一样，对所谓的“量子末日（Q-Day）”嗤之以鼻。我们觉得...</description></item><item><title>从 1960 到 2026：一文看透 Java、Go、Python 垃圾回收器的原理与演进</title><link>https://tonybai.com/2026/04/07/garbage-collectors-deep-dive/</link><pubDate>Tue, 07 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/07/garbage-collectors-deep-dive/</guid><description>本文永久链接 – https://tonybai.com/2026/04/07/garbage-collectors-deep-dive 大家好，我是Tony Bai。 为什么 Java 的 G1GC 需要设置停顿目标？Go 的混合写屏障是如何消除栈重扫的？Python 又是如何解决引用计数无法处理的循环引用？ 垃圾回收（GC）不仅是语言运行时的核心，更是理解高性能系统绕不开的坎。 本文翻译自Sh...</description></item><item><title>AI 编程时代，我挖出了一本 1999 年的“删库跑路”指南</title><link>https://tonybai.com/2026/04/06/how-to-write-unmaintainable-code/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/06/how-to-write-unmaintainable-code/</guid><description>本文永久链接 – https://tonybai.com/2026/04/06/how-to-write-unmaintainable-code 大家好，我是Tony Bai。 在这个由 Claude、GPT、Gemini等大模型定义的 2026 年，我们似乎已经习惯了 AI 那种近乎“洁癖”的编码风格：优雅的接口设计、滴水不漏的错误处理、以及永远对齐的工整格式。 AI 正在用它那冰冷的、毫无感情...</description></item><item><title>REST 已老，AI 时代的智能体需要怎样的 API？</title><link>https://tonybai.com/2026/04/03/agentic-api-in-action/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/03/agentic-api-in-action/</guid><description>本文永久链接 – https://tonybai.com/2026/04/03/agentic-api-in-action 大家好，我是Tony Bai。 在过去的十几年里，如果你问任何一位后端工程师：“我们应该如何设计 API？”得到的答案几乎是统一的：**RESTful**。 我们将世界抽象为一个个“资源（Resources）”，用名词来命名 URI（比如 /users, /orders），用...</description></item><item><title>2026 编程语言“饱和度”榜单出炉：JavaScript/Python 已“烂大街”，Go/Rust 成最大赢家？</title><link>https://tonybai.com/2026/04/02/2026-programming-language-saturation-rankings-go-rust-winners/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/02/2026-programming-language-saturation-rankings-go-rust-winners/</guid><description>本文永久链接 – https://tonybai.com/2026/04/02/2026-programming-language-saturation-rankings-go-rust-winners 大家好，我是Tony Bai。 在这个技术浪潮汹涌、AI 随时可能掀翻牌桌的时代，每一个程序员心中都悬着一个终极问题： **“我现在的技术栈，还能吃几年饭？”** 我们每天都在焦虑地刷着各种技术文...</description></item><item><title>一天重写 JSONata，我用 400 美元干掉了公司 50 万美元的 K8s 集群</title><link>https://tonybai.com/2026/04/01/rewrote-jsonata-in-golang-with-ai/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/01/rewrote-jsonata-in-golang-with-ai/</guid><description>本文永久链接 – https://tonybai.com/2026/04/01/rewrote-jsonata-in-golang-with-ai 大家好，我是Tony Bai。 过去的几年，我们见证了 AI 编程工具从“玩具”到“神器”的进化。无数开发者都在分享自己效率翻倍的喜悦。 你有没有想过，用 AI 来完成一次“外科手术式”的精准重构，一天之内，就能帮你把公司每年烧掉的 50 万美元（约 ...</description></item><item><title>当 Go 还在追求极简时，C++ 26 却又加了四大“史诗级”新特性</title><link>https://tonybai.com/2026/03/31/go-minimalism-vs-cpp26-epic-new-features/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/31/go-minimalism-vs-cpp26-epic-new-features/</guid><description>本文永久链接 – https://tonybai.com/2026/03/31/go-minimalism-vs-cpp26-epic-new-features 大家好，我是Tony Bai。 在这个 Go、Zig 等“小而美”新语言颇受青睐的时代，如果你去技术社区里问一句：“C++ 这门语言怎么样？” 你大概率会得到一堆充满戏谑的回答：“太复杂了，别学”、“从入门到放弃”、“面试造火箭，工作拧螺...</description></item><item><title>降低 74% 的 P99 尾延迟：揭秘 Go HTTP 客户端的“请求对冲”魔法</title><link>https://tonybai.com/2026/03/30/reduced-p99-latency-by-request-hedging-in-go/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/30/reduced-p99-latency-by-request-hedging-in-go/</guid><description>本文永久链接 – https://tonybai.com/2026/03/30/reduced-p99-latency-by-request-hedging-in-go 大家好，我是Tony Bai。 在微服务和分布式系统的世界里，我们常常会遇到一个令人头疼的现象：服务在大部分时间（如 P50 或 P90 指标）表现得非常丝滑，但总有那么一小撮请求（P99 甚至 P99.9 指标）慢得令人发指。 ...</description></item><item><title>谷歌一篇论文砸崩内存巨头？不懂“显存墙”，怎么做 AI 时代的工程师！</title><link>https://tonybai.com/2026/03/28/ai-engineer-gpu-introduction-course/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/28/ai-engineer-gpu-introduction-course/</guid><description>本文永久链接 – https://tonybai.com/2026/03/28/ai-engineer-gpu-introduction-course 大家好，我是Tony Bai。 就在最近，科技界发生了一件极其戏剧性的事情。本周三美股开盘，全球存储产业巨头——美光、西部数据、希捷的股价遭遇了“黑色时刻”，普遍明显下跌（3%~6%）。 引发这场资本市场大地震的，不是什么贸易战，也不是财报暴雷，而...</description></item><item><title>Rust 看了流泪，AI 看了沉默：扒开 Go 泛型最让你抓狂的“残疾”类型推断</title><link>https://tonybai.com/2026/03/27/function-type-inference-should-work-in-all-assignment-contexts/</link><pubDate>Fri, 27 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/27/function-type-inference-should-work-in-all-assignment-contexts/</guid><description>本文永久链接 – https://tonybai.com/2026/03/27/function-type-inference-should-work-in-all-assignment-contexts 大家好，我是Tony Bai。 在这个大模型（AI）写代码如喝水一般简单的时代，你有没有遇到过一种极其憋屈的场景： 你让 Claude Code 或者 Codex 帮你写了一段 Go 语言代码，...</description></item><item><title>Rust 核心团队大吐苦水：求求你们别再用 AI 提交“垃圾 PR”了！</title><link>https://tonybai.com/2026/03/26/rust-project-perspectives-on-ai/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/26/rust-project-perspectives-on-ai/</guid><description>本文永久链接 – https://tonybai.com/2026/03/26/rust-project-perspectives-on-ai 大家好，我是Tony Bai。 在这个大模型狂飙突进的时代，只要在推特或者掘金上刷一刷，你几乎每天都能看到这样的“成功学”分享： _“我是如何用 Claude Code + 4.6 Sonnet 在一天内向知名开源项目提交了 10 个 PR 的！”_ _“...</description></item><item><title>Go 语言之父亲自下场道歉：藏在 Spec 里的十年“笔误”，终于要修正了！</title><link>https://tonybai.com/2026/03/25/go-spec-contradiction-in-types-section/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/25/go-spec-contradiction-in-types-section/</guid><description>本文永久链接 – https://tonybai.com/2026/03/25/go-spec-contradiction-in-types-section 大家好，我是Tony Bai。 在 Go 语言的世界里，type 是我们每天都在打交道的关键字。但如果我今天问你一个极其基础的问题： **Go 语言内置的 bool 类型，到底是不是一个“Defined Type（已定义类型）”？** 你可能...</description></item><item><title>告别古法编程黄金时代：AI 时代不会再有新编程语言诞生的土壤</title><link>https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era/</guid><description>本文永久链接 – https://tonybai.com/2026/03/24/no-soil-for-new-programming-languages-in-ai-era 大家好，我是Tony Bai。 如果你回望过去十五年的软件工程史，那无疑是编程语言百花齐放的黄金时代。 为了对抗日益膨胀的系统复杂度，人类绞尽脑汁地发明新的“咒语”： Google 推出了 Go 语言，用极简的 Gorout...</description></item><item><title>OpenAI 创始人盛赞 Rust，却遭开发者反驳：Go 才是大模型眼里的“香饽饽”！</title><link>https://tonybai.com/2026/03/23/go-is-the-best-programming-language-for-llm/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/23/go-is-the-best-programming-language-for-llm/</guid><description>本文永久链接 – https://tonybai.com/2026/03/23/go-is-the-best-programming-language-for-llm 大家好，我是Tony Bai。 在这个大模型重塑编程范式的当下，如果你想开发一个自主运行的智能体（Agent），或者想让大模型（LLM）帮你生成上万行的核心业务代码，你会选择哪门编程语言？ 如果你去问 OpenAI 的总裁兼联合创始...</description></item><item><title>看了 100 小时教程，你为什么依然写不好代码？扒开技术人的“成长环”真相</title><link>https://tonybai.com/2026/03/22/stop-tactical-diligence-start-stretch-zone-growth/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/22/stop-tactical-diligence-start-stretch-zone-growth/</guid><description>本文永久链接 – https://tonybai.com/2026/03/22/stop-tactical-diligence-start-stretch-zone-growth 大家好，我是Tony Bai。 在这个技术大爆炸的时代，我见过了太多极其“勤奋”的程序员： 他们会在各大技术平台上收藏几百篇诸如《Go语言进阶课》、《AI原生开发工作流实战》… …的专栏文章，硬盘里塞满了从各种渠道搞来的...</description></item><item><title>你的 Go 报错信息正在“出卖”你！扒一扒大厂是如何做错误隔离与日志脱敏的</title><link>https://tonybai.com/2026/03/21/best-practices-for-secure-error-handling-in-go/</link><pubDate>Sat, 21 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/21/best-practices-for-secure-error-handling-in-go/</guid><description>本文永久链接 – https://tonybai.com/2026/03/21/best-practices-for-secure-error-handling-in-go 大家好，我是Tony Bai。 如果要在 Go 语言里选一句被敲击次数最多的代码，if err != nil { return err } 绝对毫无悬念地霸榜第一。 初学 Go 时，我们总觉得这种显式的错误处理极其啰嗦。但随着...</description></item><item><title>如果服务器悄悄“猝死”，你的系统还能活几秒？揭秘分布式集群的“续命”保底机制</title><link>https://tonybai.com/2026/03/20/heartbeats-in-distributed-systems/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/20/heartbeats-in-distributed-systems/</guid><description>本文永久链接 – https://tonybai.com/2026/03/20/heartbeats-in-distributed-systems 大家好，我是Tony Bai。 在开发单体应用时，我们很少操心“服务器死没死”的问题——进程挂了就是挂了，整个服务直接 502。但在庞大的分布式系统和微服务架构中，最大的噩梦往往不是服务器彻底宕机，而是**“它悄悄死去了，但整个集群却以为它还活着”。*...</description></item><item><title>别再无脑 go get @latest 了！你的服务器可能下一秒就被黑客接管</title><link>https://tonybai.com/2026/03/19/proposal-support-dependency-cooldown-in-go-tooling/</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/19/proposal-support-dependency-cooldown-in-go-tooling/</guid><description>本文永久链接 – https://tonybai.com/2026/03/19/proposal-support-dependency-cooldown-in-go-tooling 大家好，我是Tony Bai。 试想一个极其真实的“黑色星期五”场景： 下班前一小时，你为了修复一个无关紧要的小 Bug，或者只是心血来潮想把项目里的依赖库清理一下，于是你顺手在终端里敲下了极其熟练的几个字符： ```...</description></item><item><title>刚刚，2025图灵奖揭晓！面对即将瘫痪的传统密码学，Go 语言的“抗量子”底牌曝光</title><link>https://tonybai.com/2026/03/19/2025-turing-award-go-quantum-resistant-cryptography/</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/19/2025-turing-award-go-quantum-resistant-cryptography/</guid><description>本文永久链接 – https://tonybai.com/2026/03/19/2025-turing-award-go-quantum-resistant-cryptography 大家好，我是Tony Bai。 就在昨天（2026 年 3 月 18 日），计算科学界的最高荣誉——ACM A.M. 图灵奖正式揭晓。2025 年的图灵奖，颁给了 Charles H. Bennett 和 Gille...</description></item><item><title>手工作坊的终结：为什么你必须把 Agent Skills 开发，变成严谨的软件工程?</title><link>https://tonybai.com/2026/03/18/building-industrial-grade-agent-skills/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/18/building-industrial-grade-agent-skills/</guid><description>本文永久链接 – https://tonybai.com/2026/03/18/building-industrial-grade-agent-skills 大家好，我是Tony Bai。 我是你的老朋友，一个正在被 AI 疯狂“内卷”的程序员。 如果你最近几个月一直在使用 Cursor、Claude Code 或者其他各种 AI 编程助手，你大概率会经历一个情绪的“过山车”： 第一天：**“卧槽...</description></item><item><title>被嘲笑比 Python 还慢？扒开 Go 正则表达式的底层，看看它为了防范“系统猝死”付出了什么</title><link>https://tonybai.com/2026/03/17/why-is-go-regex-so-slow/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/17/why-is-go-regex-so-slow/</guid><description>本文永久链接 – https://tonybai.com/2026/03/17/why-is-go-regex-so-slow 大家好，我是Tony Bai。 如果有人问你：在处理纯 CPU 密集型的文本匹配时，Go 和 Python 哪个快？ 相信 99% 的 Go 开发者会毫不犹豫地把票投给 Go。毕竟，一门编译型的静态语言，怎么可能输给拖着 GIL 锁的解释型脚本语言？ 但现实往往比小说更魔...</description></item><item><title>真相调查：Go 语言真的消灭了 Undefined Behavior 吗？</title><link>https://tonybai.com/2026/03/16/go-language-eliminated-undefined-behavior-truth-investigation/</link><pubDate>Mon, 16 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/16/go-language-eliminated-undefined-behavior-truth-investigation/</guid><description>本文永久链接 – https://tonybai.com/2026/03/16/go-language-eliminated-undefined-behavior-truth-investigation 大家好，我是Tony Bai。 在系统编程的古老传说中，流传着一个关于“鼻恶魔”（Nasal Demons）的笑话。 这个梗源自 comp.std.c 新闻组，它是对 C/C++ 语言中“未定义行...</description></item><item><title>别傻了，写出极致整洁的代码，是你升不了职的根本原因</title><link>https://tonybai.com/2026/03/15/over-engineering-trap-no-promotion-for-simplicity/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/15/over-engineering-trap-no-promotion-for-simplicity/</guid><description>本文永久链接 – https://tonybai.com/2026/03/15/over-engineering-trap-no-promotion-for-simplicity 大家好，我是 Tony Bai。 今天讲点得罪人的大实话。如果你是一个有代码洁癖、崇尚极简主义、总是能用最干净的逻辑解决复杂问题的“老实人”程序员，那么接下来的内容，可能会戳痛你。 因为在我们当下的技术职场里，有一个残酷...</description></item><item><title>拒绝“偷天换日”！深度拆解 Go sumdb 的密码学防线</title><link>https://tonybai.com/2026/03/14/go-sumdb-transparent-logs-supply-chain-trust/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/14/go-sumdb-transparent-logs-supply-chain-trust/</guid><description>本文永久链接 – https://tonybai.com/2026/03/14/go-sumdb-transparent-logs-supply-chain-trust 大家好，我是Tony Bai。 在 Go 语言的日常开发中，go get 是我们最熟悉的命令之一。我们理所当然地认为，只要指定了版本号，从 GitHub 或其他代码托管平台拉取下来的代码就是安全、一致的。然而，现实却远比这脆弱——...</description></item><item><title>别再滥用 ClickHouse 了！单机每秒狂刷 1800 万条数据，拆解 Go+DuckDB 的“微型数仓”降维打击</title><link>https://tonybai.com/2026/03/13/go-duckdb-micro-data-warehouse-dimensionality-reduction/</link><pubDate>Fri, 13 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/13/go-duckdb-micro-data-warehouse-dimensionality-reduction/</guid><description>本文永久链接 – https://tonybai.com/2026/03/13/go-duckdb-micro-data-warehouse-dimensionality-reduction 大家好，我是Tony Bai。 设想这样一个极其普遍的日常工作场景： 产品经理找到你，希望能给业务后台加一个“简单”的数据看板，用来实时统计用户的 PV/UV 漏斗、Nginx 日志的慢查询分析，或者是 Io...</description></item><item><title>老板花重金买了台 128 核服务器，我的 Go 程序反而变慢了？</title><link>https://tonybai.com/2026/03/12/go-concurrency-scalability-issues-on-128-core-cpu/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/12/go-concurrency-scalability-issues-on-128-core-cpu/</guid><description>本文永久链接 – https://tonybai.com/2026/03/12/go-concurrency-scalability-issues-on-128-core-cpu 大家好，我是Tony Bai。 设想一个极其真实的职场场景： 你负责的 Go 核心微服务最近流量暴涨，CPU 频频告警。为了解决这个问题，老板大笔一挥，批了几十万预算，采购了最新一代的 128 核 256 线程的怪兽级服...</description></item><item><title>拉个 JSON 居然要装 5 个第三方库？终于明白 Go 的标准库到底有多“霸道”</title><link>https://tonybai.com/2026/03/11/standard-library-is-part-of-the-go-success/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/11/standard-library-is-part-of-the-go-success/</guid><description>本文永久链接 – https://tonybai.com/2026/03/11/standard-library-is-part-of-the-go-success 大家好，我是Tony Bai。 在现代软件开发中，我们似乎已经患上了一种名为“依赖上瘾”的绝症。 新建一个项目，你敲下的第一行命令大概率不是写业务逻辑，而是 npm install、cargo add 或者 pip install。我...</description></item><item><title>你每天敲下的 go func()，藏着这位 92 岁老人的毕生心血</title><link>https://tonybai.com/2026/03/11/in-memory-of-tony-hoare/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/11/in-memory-of-tony-hoare/</guid><description>本文永久链接 – https://tonybai.com/2026/03/11/in-memory-of-tony-hoare 大家好，我是Tony Bai。 在这个由代码构建的现代世界里，有些名字如同星辰般指引着航向。但遗憾的是，2026 年 3 月 5 日，其中一颗最明亮的星辰熄灭了。 图灵奖得主、快速排序（Quicksort）发明者、CSP（通信顺序进程）理论之父 Tony Hoare（托尼...</description></item><item><title>Docker 的十年：重塑云原生基础设施的“底层炼金术”</title><link>https://tonybai.com/2026/03/09/a-decade-of-docker-containers/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/09/a-decade-of-docker-containers/</guid><description>本文永久链接 – https://tonybai.com/2026/03/09/a-decade-of-docker-containers 大家好，我是Tony Bai。 2013年，当 Solomon Hykes 在 PyCon 上首次演示 Docker 时，他用一种名为“容器”的魔法，将开发者从依赖地狱中解救了出来。转眼间，十三年过去了。今天，Docker Hub 托管着超过 1400 万个镜...</description></item><item><title>硬核测评：哪门语言最受 AI 宠爱？13 种语言横向对比，Go 表现如何？</title><link>https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance/</guid><description>本文永久链接 – https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance 大家好，我是Tony Bai。 随着 Claude Code、Gemini Cli、Codex 等 AI 编程工具的全面普及，“让 AI 写代码”已经从极客的玩具变成了日常的生产力。随之而来的是一个触及灵魂的...</description></item><item><title>AI 时代的新王座：为什么说 Go 可能是开发 AI Agent 的最佳语言？</title><link>https://tonybai.com/2026/03/07/why-go-is-the-best-language-for-ai-agents/</link><pubDate>Sat, 07 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/07/why-go-is-the-best-language-for-ai-agents/</guid><description>本文永久链接 – https://tonybai.com/2026/03/07/why-go-is-the-best-language-for-ai-agents 大家好，我是Tony Bai。 当我们在谈论 AI 编程时，Python 似乎是那个无需讨论的“默认选项”。 然而，随着 AI 应用从模型训练（Training）走向自主智能体（Agents）和复杂的工程落地，基础设施层的语言选型正在悄...</description></item><item><title>从手写代码到日提 30 个 PR：Claude Code 缔造者的 AI 编程启示录</title><link>https://tonybai.com/2026/03/06/building-claude-code-with-boris-cherny/</link><pubDate>Fri, 06 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/06/building-claude-code-with-boris-cherny/</guid><description>本文永久链接 – https://tonybai.com/2026/03/06/building-claude-code-with-boris-cherny 大家好，我是Tony Bai。 想象一下，你加入了一家全球顶级的 AI 实验室，满怀热情地提交了第一个 Pull Request (PR)。然而，你的 PR 却被直接拒绝了。原因不是代码写得不好，而是——**这代码是你“手写”的**。 这不是...</description></item><item><title>数据说话：Go 1.26 或成近年来“问题最多”的大版本，现在升级安全吗？</title><link>https://tonybai.com/2026/03/06/go-1-26-most-problematic-release/</link><pubDate>Fri, 06 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/06/go-1-26-most-problematic-release/</guid><description>本文永久链接 – https://tonybai.com/2026/03/06/go-1-26-most-problematic-release 大家好，我是Tony Bai。 2026 年 2 月，Go 1.26 如约而至。伴随着 new(expr) 语法糖的引入、Green Tea GC 的全面转正，以及go fix 现代化重构等一系列重磅特性，许多 Gopher 都按捺不住尝鲜的冲动。 然而...</description></item><item><title>2026 年了，写 Go + Protobuf 还在手敲 protoc 命令？是时候换用这种新姿势了！</title><link>https://tonybai.com/2026/03/05/modern-go-protobuf-dev-in-2026/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/05/modern-go-protobuf-dev-in-2026/</guid><description>本文永久链接 – https://tonybai.com/2026/03/05/modern-go-protobuf-dev-in-2026 大家好，我是Tony Bai。 在现代后端开发领域，Go 语言与 Protocol Buffers（简称 Protobuf）加上 gRPC 的组合，早已成为构建高性能微服务架构的“行业标准”。这两者的结合在网络传输效率、强类型契约以及跨语言互操作性上展现出了...</description></item><item><title>“棘手”难题：为什么 Go、Rust 与 Java 等语言的包管理永远无法达到完美？</title><link>https://tonybai.com/2026/03/04/package-management-unsolvable-problem-programming-languages/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/04/package-management-unsolvable-problem-programming-languages/</guid><description>本文永久链接 – https://tonybai.com/2026/03/04/package-management-unsolvable-problem-programming-languages 大家好，我是Tony Bai。 每天，全世界的开发者敲击下数以亿计的 npm install、go get、cargo build 或是 pip install。我们将这些包管理器视作理所当然的基础设...</description></item><item><title>为什么 Web3 依然寒气逼人？AI 智能体如何催生 Web 4.0 的黎明</title><link>https://tonybai.com/2026/03/04/why-web3-remains-cold-ai-agents-web4-dawn/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/04/why-web3-remains-cold-ai-agents-web4-dawn/</guid><description>本文永久链接 – https://tonybai.com/2026/03/04/why-web3-remains-cold-ai-agents-web4-dawn 大家好，我是Tony Bai。 2026 年的今天，当我们环顾技术圈的四周，会发现一幅极其矛盾的图景。一方面，AI 技术正以指数级的速度吞噬旧世界的运行法则，从“副驾驶”进化为自主思考、独立执行的 Agent；另一方面，曾经被寄予厚望、...</description></item><item><title>别再像 2015 年那样写 Go 了：Modern Go 终极进化指南</title><link>https://tonybai.com/2026/03/02/modern-go-evolution-guide-1-0-to-1-26/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/02/modern-go-evolution-guide-1-0-to-1-26/</guid><description>本文永久链接 – https://tonybai.com/2026/03/02/modern-go-evolution-guide-1-0-to-1-26 大家好，我是Tony Bai。 Go 语言在业界最著名的标签之一就是“向后兼容承诺（Go 1 Compatibility Promise）”。一份 10 年前写下的 Go 1.4 代码，在今天的 Go 1.26编译器下依然能完美编译并运行。 但...</description></item><item><title>AI 时代的开源：当 Coding Agent 接管 GitHub，我们该何去何从？</title><link>https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github/</guid><description>本文永久链接 – https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github 大家好，我是Tony Bai。 如果我们把时间拨回到 2023 年之前，一个开源项目的诞生往往伴随着一位或几位核心维护者（Maintainer）数周甚至数月的辛勤耕耘。 但在刚刚过去的几个月里，我们见证了一种全新的物种崛...</description></item><item><title>告别 google/uuid：Go 标准库拟新增 crypto/uuid 深度解析</title><link>https://tonybai.com/2026/03/01/goodbye-google-uuid-go-standard-library-crypto-uuid/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/01/goodbye-google-uuid-go-standard-library-crypto-uuid/</guid><description>本文永久链接 – https://tonybai.com/2026/03/01/goodbye-google-uuid-go-standard-library-crypto-uuid 大家好，我是Tony Bai。 在 Go 的世界里，有几个第三方库的地位几乎等同于标准库，github.com/google/uuid 绝对是其中之一。无论是微服务架构、数据库主键，还是分布式追踪，UUID 的身影无...</description></item><item><title>停止“氛围编程”（Vibe Coding），拥抱新一代软件工程</title><link>https://tonybai.com/2026/02/28/agentic-software-engineering/</link><pubDate>Sat, 28 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/28/agentic-software-engineering/</guid><description>本文永久链接 – https://tonybai.com/2026/02/28/agentic-software-engineering 大家好，我是Tony Bai。 欢迎来到微专栏 《AI 智能体时代的软件工程》的第一讲，也是开篇词。 想象一下，你刚刚招募了一位极度聪明的初级程序员。 他有着令人“毛骨悚然”的执行力：当你去泡杯咖啡的功夫，他已经噼里啪啦写完了 1000 行代码，不仅编译通过，测...</description></item><item><title>Go mod init 降级撤回背后：精英主义正在杀死 Go 社区的民主？</title><link>https://tonybai.com/2026/02/27/go-mod-init-controversy-elitism-vs-democracy/</link><pubDate>Fri, 27 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/27/go-mod-init-controversy-elitism-vs-democracy/</guid><description>本文永久链接 – https://tonybai.com/2026/02/27/go-mod-init-controversy-elitism-vs-democracy 大家好，我是Tony Bai。 仅仅在 Go 1.26 正式发布几周后，一场席卷 Go 社区的风暴迎来了戏剧性的转折。面对广大开发者对 go mod init 默认降级为 1.(N-1) 的强烈不满，Go 核心团队技术负责人 Au...</description></item><item><title>拒绝 Rust 的复杂，跨越 Go 的极简：Zig 会是系统级编程的最终答案吗？</title><link>https://tonybai.com/2026/02/26/rust-complexity-go-minimalism-vs-zig-ultimate-answer/</link><pubDate>Thu, 26 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/26/rust-complexity-go-minimalism-vs-zig-ultimate-answer/</guid><description>本文永久链接 – https://tonybai.com/2026/02/26/rust-complexity-go-minimalism-vs-zig-ultimate-answer 大家好，我是Tony Bai。 在当前的后端与系统级编程领域，开发者似乎总是面临着一种“非此即彼”的艰难抉择：要么选择 Go 语言，拥抱其极致的极简主义、高效的并发模型和无处不在的垃圾回收（GC），但往往需要在底层...</description></item><item><title>Rust 的“跨越鸿沟”时刻：Ubuntu 全面拥抱 Rust 意味着什么？</title><link>https://tonybai.com/2026/02/25/rust-crossing-the-chasm-ubuntu-embrace/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/25/rust-crossing-the-chasm-ubuntu-embrace/</guid><description>本文永久链接 – https://tonybai.com/2026/02/25/rust-crossing-the-chasm-ubuntu-embrace 大家好，我是Tony Bai。 在技术世界里，一门编程语言的成功往往分为两个阶段：第一阶段是赢得“极客”和“先驱者”的狂热追捧；第二阶段则是说服那些保守、务实的“早期大众”将其投入到枯燥却庞大的企业级生产中。这两个阶段之间，横亘着一条深不见底...</description></item><item><title>拒绝无效告警！用 Govulncheck 构建高信噪比的 Go 安全扫描工作流</title><link>https://tonybai.com/2026/02/25/govulncheck-high-signal-to-noise-ratio-security-workflow/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/25/govulncheck-high-signal-to-noise-ratio-security-workflow/</guid><description>本文永久链接 – https://tonybai.com/2026/02/25/govulncheck-high-signal-to-noise-ratio-security-workflow 大家好，我是Tony Bai。 在当今的软件开发流程中，持续集成/持续部署（CI/CD）和自动化的安全左移（Shift Left）已经成为行业共识。在这个大背景下，诸如 GitHub Dependabot ...</description></item><item><title>性能之战的“罗生门”：Go 重写 Node.js 项目，究竟赢在了哪里？</title><link>https://tonybai.com/2026/02/24/go-vs-node-js-performance-rewrite-rashomon/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/24/go-vs-node-js-performance-rewrite-rashomon/</guid><description>本文永久链接 – https://tonybai.com/2026/02/24/go-vs-node-js-performance-rewrite-rashomon 大家好，我是Tony Bai。 在当今的后端开发圈，“用 Go/Rust 重写 Node.js/Python 项目”似乎成了一种政治正确。在许多开发者的刻板印象中，只要换上静态编译语言，性能就能获得“降维打击”般的提升。 然而，真实世...</description></item><item><title>金融级基础设施重构：放弃 Rust 拥抱 Go，务实主义的最终胜利？</title><link>https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory/</link><pubDate>Mon, 23 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory/</guid><description>本文永久链接 – https://tonybai.com/2026/02/23/financial-infrastructure-rust-to-go-pragmatism-victory 大家好，我是Tony Bai。 在系统级编程语言的版图上，Go 与 Rust 的对比与争论从未停歇。一个是崇尚大道至简、开发效率极高的“云原生时代王者”；另一个则是以内存安全、零成本抽象和极致性能著称的“极客新...</description></item><item><title>一行 Go 代码瘫痪 6 小时！复盘 Cloudflare BGP 路由撤回灾难</title><link>https://tonybai.com/2026/02/23/cloudflare-bgp-withdrawal-outage-go-post-mortem/</link><pubDate>Mon, 23 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/23/cloudflare-bgp-withdrawal-outage-go-post-mortem/</guid><description>本文永久链接 – https://tonybai.com/2026/02/23/cloudflare-bgp-withdrawal-outage-go-post-mortem 大家好，我是Tony Bai。 2026 年 2 月 20 日，全球互联网基础设施巨头 Cloudflare 经历了一次持续超 6 小时的严重服务中断。令人震惊的是，这次事故并非源于复杂的黑客攻击或硬件故障，而是源于一段用 ...</description></item><item><title>“你装了 Go 1.26，却写不了 Go 1.26 的代码？”——复盘 go mod init 的降级风波</title><link>https://tonybai.com/2026/02/22/go-1-26-go-mod-init-downgrade-collision-review/</link><pubDate>Sun, 22 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/22/go-1-26-go-mod-init-downgrade-collision-review/</guid><description>本文永久链接 – https://tonybai.com/2026/02/22/go-1-26-go-mod-init-downgrade-collision-review 大家好，我是Tony Bai。 2026年2月，Go 1.26 带着众多瞩目的新特性（如期待已久的 new(expr) 语法糖、全面启用的 Green Tea GC）正式发布。你兴奋地更新了本地的工具链，迫不及待地打开终端，想...</description></item><item><title>当“安全性”遭遇“交付速度”：2026 年，我为什么告别了 Rust</title><link>https://tonybai.com/2026/02/21/safety-vs-delivery-speed-why-farewell-rust-in-2026/</link><pubDate>Sat, 21 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/21/safety-vs-delivery-speed-why-farewell-rust-in-2026/</guid><description>本文永久链接 – https://tonybai.com/2026/02/21/safety-vs-delivery-speed-why-farewell-rust-in-2026 大家好，我是Tony Bai。 在软件工程的铁三角中，Rust 占据了“安全性”与“性能”的绝对高地。凭借借用检查器（Borrow Checker）和极其严格的类型系统，它向开发者承诺了一个没有内存错误、没有空指针崩溃...</description></item><item><title>别再轻信 GitHub 上的源码：为何我们需要全新的 Go 模块审查机制？</title><link>https://tonybai.com/2026/02/20/why-we-need-new-go-module-review-mechanism/</link><pubDate>Fri, 20 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/20/why-we-need-new-go-module-review-mechanism/</guid><description>本文永久链接 – https://tonybai.com/2026/02/20/why-we-need-new-go-module-review-mechanism 大家好，我是Tony Bai。 你以为你在 GitHub 上看到的代码，就是你的 Go 程序编译时使用的代码吗？答案可能令你背脊发凉。 在 Go 语言的生态系统中，我们一直引以为傲的是其卓越的包管理和安全性。Go Checksum D...</description></item><item><title>Go 1.26 重磅更新：用 go fix 重塑代码现代化的艺术</title><link>https://tonybai.com/2026/02/19/using-go-fix-to-modernize-go-code/</link><pubDate>Thu, 19 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/19/using-go-fix-to-modernize-go-code/</guid><description>本文永久链接 – https://tonybai.com/2026/02/19/using-go-fix-to-modernize-go-code 大家好，我是Tony Bai。 2026年2月，Go 1.26 正式发布。除了语言层面的新特性（如 new(expr)）和运行时的性能提升（如 Green Tea GC）之外，工具链迎来了一次史诗级的升级：go fix 命令被彻底重写。 在过去，go ...</description></item><item><title>AI 基础设施的语言之争：为何构建 LLM 网关时，我们放弃了 Python 选择了 Go？</title><link>https://tonybai.com/2026/02/18/why-we-chose-go-over-python-for-llm-gateways/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/18/why-we-chose-go-over-python-for-llm-gateways/</guid><description>本文永久链接 – https://tonybai.com/2026/02/18/why-we-chose-go-over-python-for-llm-gateways 大家好，我是Tony Bai。 在 2026 年的今天，人工智能早已走出了实验室，成为企业级应用的核心驱动力。Python，凭借其在机器学习领域的绝对统治地位——拥有 PyTorch、TensorFlow、Hugging Face...</description></item><item><title>Go 1.26 ：go mod init 默认行为的变化与 Go 版本管理的哲学思辨</title><link>https://tonybai.com/2026/02/16/go-1-26-go-mod-init-changes-version-management-philosophy/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/16/go-1-26-go-mod-init-changes-version-management-philosophy/</guid><description>本文永久链接 – https://tonybai.com/2026/02/16/go-1-26-go-mod-init-changes-version-management-philosophy 大家好，我是Tony Bai。 在 Go 语言的开发日常中，go mod init 是每个新项目诞生的起点。对于大多数开发者而言，这行命令只是一系列机械性的动作中的一环：创建一个文件夹，输入命令，生成 g...</description></item><item><title>拒绝 AI 署名！Go 核心团队在 AIGC 时代划下的“工程红线”</title><link>https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship/</link><pubDate>Sun, 15 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship/</guid><description>本文永久链接 – https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship 大家好，我是Tony Bai。 在生成式 AI 狂飙突进的 2026 年，编程似乎变得前所未有的容易。Claude Code、Gemini Cli、Codex等 已经成为开发者的标配。然而，技术便利的背后，模糊的责任边界正在侵蚀软件工程的根基。 近日...</description></item><item><title>Go 1.26 中值得关注的几个变化：从 new(expr) 真香落地、极致性能到智能工具链</title><link>https://tonybai.com/2026/02/14/some-changes-in-go-1-26/</link><pubDate>Sat, 14 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/14/some-changes-in-go-1-26/</guid><description>本文永久链接 – https://tonybai.com/2026/02/14/some-changes-in-go-1-26 大家好，我是Tony Bai。 北京时间 2026 年 2 月 10 日，Go 团队正式发布了 Go 1.26。 时光飞逝，距离我在博客中写下《Go 1.26 新特性前瞻》已经过去了两三个月。在那篇文章中，我们基于Go 1.26开发分支对这一版本进行了初步的探索。如今，随...</description></item><item><title>Go 微服务重构实录：当后端性能提升 10 倍，移动端体验为何反而崩塌？</title><link>https://tonybai.com/2026/02/13/go-microservices-refactoring-10x-backend-vs-mobile-collapse/</link><pubDate>Fri, 13 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/13/go-microservices-refactoring-10x-backend-vs-mobile-collapse/</guid><description>本文永久链接 – https://tonybai.com/2026/02/13/go-microservices-refactoring-10x-backend-vs-mobile-collapse 大家好，我是Tony Bai。 在软件工程的世界里，“快”通常被视为绝对的褒义词。我们追求更低的延迟、更高的吞吐量、更少的 CPU 占用。当一个团队决定将遗留的 Python 单体应用重构为 Go 微...</description></item><item><title>UML 之父 Grady Booch：别听 CEO 瞎忽悠，软件工程的第三次黄金时代才刚刚开始</title><link>https://tonybai.com/2026/02/13/grady-booch-uml-software-engineering-third-golden-age-begins/</link><pubDate>Fri, 13 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/13/grady-booch-uml-software-engineering-third-golden-age-begins/</guid><description>本文永久链接 – https://tonybai.com/2026/02/13/grady-booch-uml-software-engineering-third-golden-age-begins 大家好，我是Tony Bai。 在 2026 年初的今天，如果你问一个软件工程师“最近感觉如何？”，得到的回答大概率是焦虑。 Anthropic 的 CEO Dario Amodei 曾预言：“软件...</description></item><item><title>Go 1.26 发布在即，为何 json/v2 依然“难产”？七大技术路障全解析</title><link>https://tonybai.com/2026/02/11/go-1-26-json-v2-delay-7-technical-roadblocks/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/11/go-1-26-json-v2-delay-7-technical-roadblocks/</guid><description>本文永久链接 – https://tonybai.com/2026/02/11/go-1-26-json-v2-delay-7-technical-roadblocks 大家好，我是Tony Bai。 Go 1.26 预计将于本月（2026 年 2 月）正式发布。然而，在即将到来的 release notes 的欢呼声中，有一个备受瞩目的名字依然带着“实验性”的标签躲在 GOEXPERIMENT ...</description></item><item><title>告别 Flaky Tests：Go 官方拟引入 testing/nettest，重塑内存网络测试标准</title><link>https://tonybai.com/2026/02/10/goodbye-flaky-tests-go-testing-nettest-proposal/</link><pubDate>Tue, 10 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/10/goodbye-flaky-tests-go-testing-nettest-proposal/</guid><description>本文永久链接 – https://tonybai.com/2026/02/10/goodbye-flaky-tests-go-testing-nettest-proposal 大家好，我是Tony Bai。 在 Go 语言的测试哲学中，我们一直追求快速、稳定和可重复。然而，一旦测试涉及到 net 包——无论是 HTTP 服务、RPC 框架还是自定义协议——这种追求往往就会撞上现实的墙壁。 我们通常...</description></item><item><title>沉睡 8 年的提案被唤醒：Go 语言真的要引入“不可变类型”了吗？</title><link>https://tonybai.com/2026/02/09/go-immutable-types-8-year-dormant-proposal-awakened/</link><pubDate>Mon, 09 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/09/go-immutable-types-8-year-dormant-proposal-awakened/</guid><description>本文永久链接 – https://tonybai.com/2026/02/09/go-immutable-types-8-year-dormant-proposal-awakened 大家好，我是Tony Bai。 2026 年 2 月 4 日，在 Go 语言规范团队的最新一次“语言变更评审会议”纪要中，一个尘封已久的 Issue 赫然在列：**proposal: spec: immutable ...</description></item><item><title>数据打脸刻板印象：Go 的“样板代码”竟然和 Rust 一样多？</title><link>https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes/</link><pubDate>Sun, 08 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes/</guid><description>本文永久链接 – https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes 大家好，我是Tony Bai。 在编程语言的鄙视链中，Go 语言常常因为其“繁琐”而饱受诟病。 “if err != nil 写断手”、“缺乏语法糖”、“到处都是重复的样板代码”…… 这些似乎已经成为了 Go 的标...</description></item><item><title>“Go 2，请不要发生！”：如果 Go 变成了“缝合怪”，你还会爱它吗？</title><link>https://tonybai.com/2026/02/06/go-2-dont-become-a-frankenstein-monster/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/06/go-2-dont-become-a-frankenstein-monster/</guid><description>本文永久链接 – https://tonybai.com/2026/02/06/go-2-dont-become-a-frankenstein-monster 大家好，我是Tony Bai。 &amp;gt; “Go 2, please don’t make it happen.” 近日，一张充满讽刺意味的老梗图在 r/golang 社区又炸开了锅。图片的上方，是我们熟悉的 Gopher 吉祥物——那只呆萌、简...</description></item><item><title>承认吧，AI 写的代码，平均质量已经超过了 80% 的人类程序员！</title><link>https://tonybai.com/2026/02/05/ai-code-quality-surpasses-80-percent-of-human-programmers/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/05/ai-code-quality-surpasses-80-percent-of-human-programmers/</guid><description>本文永久链接 – https://tonybai.com/2026/02/05/ai-code-quality-surpasses-80-percent-of-human-programmers 大家好，我是Tony Bai。 随着 Claude Code、Gemini Cli、OpenCode 等 AI 智能体编程工具的爆火，技术圈里出现了一种流行的论调： * “AI 写的代码质量不高，全是 B...</description></item><item><title>大项目构建太慢？Brad Fitzpatrick 提议引入 -cachelink 降低测试等待时间</title><link>https://tonybai.com/2026/02/05/brad-fitzpatrick-cachelink-reduce-go-test-wait-time/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/05/brad-fitzpatrick-cachelink-reduce-go-test-wait-time/</guid><description>大项目构建太慢？Brad Fitzpatrick 提议引入 -cachelink 降低测试等待时间 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ...</description></item><item><title>再见，丑陋的 container/heap！Go 泛型堆 heap/v2 提案解析</title><link>https://tonybai.com/2026/02/04/goodbye-container-heap-go-generic-heap-heap-v2-proposal/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/04/goodbye-container-heap-go-generic-heap-heap-v2-proposal/</guid><description>本文永久链接 – https://tonybai.com/2026/02/04/goodbye-container-heap-go-generic-heap-heap-v2-proposal 大家好，我是Tony Bai。 每一个写过 Go 的开发者，大概都经历过被 container/heap 支配的恐惧。 你需要定义一个切片类型，实现那个包含 5 个方法的 heap.Interface，在 P...</description></item><item><title>算法神话的祛魅：Russ Cox 与浮点数转换的 15 年求索之路</title><link>https://tonybai.com/2026/02/03/russ-cox-15-year-war-on-floating-point-conversion/</link><pubDate>Tue, 03 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/03/russ-cox-15-year-war-on-floating-point-conversion/</guid><description>本文永久链接 – https://tonybai.com/2026/02/03/russ-cox-15-year-war-on-floating-point-conversion 大家好，我是Tony Bai。 &amp;gt; “浮点数到十进制的转换一直被认为很难。但本质上，它们非常简单直接。” —— Russ Cox (2011) &amp;gt; &amp;gt; &amp;gt; “我错了。快速的转换器也可以很简单，这篇文章将展示如何做到。” ...</description></item><item><title>我用 Go 重写了 Python 网关，性能提升 10 倍，却成了职场噩梦</title><link>https://tonybai.com/2026/02/01/go-rewrite-python-gateway-10x-performance-career-nightmare/</link><pubDate>Sun, 01 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/01/go-rewrite-python-gateway-10x-performance-career-nightmare/</guid><description>我用 Go 重写了 Python 网关，性能提升 10 倍，却成了职场噩梦 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技...</description></item><item><title>Go 性能诊断工具大变天？Race 检测有望进生产，Trace 秒开不是梦！</title><link>https://tonybai.com/2026/01/31/go-official-updates-race-detector-trace-ui-pprof/</link><pubDate>Sat, 31 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/31/go-official-updates-race-detector-trace-ui-pprof/</guid><description>Go 性能诊断工具大变天？Race 检测有望进生产，Trace 秒开不是梦！ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的...</description></item><item><title>Rust 输了？在 AI Agent 的战场上，TypeScript 才是唯一的“神”</title><link>https://tonybai.com/2026/01/31/rust-vs-typescript-ai-agent-battleground-winner/</link><pubDate>Sat, 31 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/31/rust-vs-typescript-ai-agent-battleground-winner/</guid><description>本文永久链接 – https://tonybai.com/2026/01/31/rust-vs-typescript-ai-agent-battleground-winner 大家好，我是Tony Bai。 如果把 2025 年定义为 **Coding Agent（编程智能体）** 的元年，那么刚刚开启的 2026 年，毫无疑问是 **Personal AI Agent（个人助理智能体）** 的元...</description></item><item><title>20 年 Java 老店的“背叛”：WSO2 为何高呼“Goodbye Java, Hello Go”？</title><link>https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift/</link><pubDate>Thu, 29 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift/</guid><description>本文永久链接 – https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift 大家好，我是Tony Bai。 “当我们 2005 年创办 WSO2 时，开发服务端企业级基础设施的正确语言毫无疑问是：Java。然而，当我们走过第 20 个年头并展望未来时，情况已经变了。” 近日，全球知名的开源中间件厂商 WSO...</description></item><item><title>Go 标准库竟然也用 vendor？std 和 cmd 模块是如何管理外部依赖的</title><link>https://tonybai.com/2026/01/28/go-standard-library-vendor-std-cmd-dependency-management/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/28/go-standard-library-vendor-std-cmd-dependency-management/</guid><description>本文永久链接 – https://tonybai.com/2026/01/28/go-standard-library-vendor-std-cmd-dependency-management 大家好，我是Tony Bai。 我们都知道，Go 推荐使用 Go Modules 来管理依赖。但在 Go 源码树的最深处，隐藏着一个鲜为人知的秘密：**Go 标准库 (std) 和工具链 (cmd) 竟然依...</description></item><item><title>别读代码了，看着它流过就行：ClawdBot 作者的 AI 开发工作流</title><link>https://tonybai.com/2026/01/28/clawdbot-author-ai-development-workflow/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/28/clawdbot-author-ai-development-workflow/</guid><description>本文永久链接 – https://tonybai.com/2026/01/28/clawdbot-author-ai-development-workflow 大家好，我是Tony Bai。 在过去的一年里，我们见证了 AI 编程工具的井喷。从 Copilot 到 Cursor，从 Windsurf 到 Claude Code、Gemini CLI和Codex，每个人都在寻找那个“完美的开发助手”...</description></item><item><title>Gas Town 启示录：多智能体编排开启 AI 编程工业革命</title><link>https://tonybai.com/2026/01/25/gas-town-multi-agent-orchestration-ai-programming-revolution/</link><pubDate>Sun, 25 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/25/gas-town-multi-agent-orchestration-ai-programming-revolution/</guid><description>本文永久链接 – https://tonybai.com/2026/01/25/gas-town-multi-agent-orchestration-ai-programming-revolution 大家好，我是Tony Bai。 &amp;gt; “启示录”（Apocalypse）在希腊语原意中并非仅指毁灭，更意味着“揭开面纱”。 2026 年的钟声敲响时，软件开发领域正经历着这样一场启示录。旧世界——那个...</description></item><item><title>Go 泛型落地 4 年后，终于要支持泛型方法了！</title><link>https://tonybai.com/2026/01/24/go-generics-finally-supports-generic-methods/</link><pubDate>Sat, 24 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/24/go-generics-finally-supports-generic-methods/</guid><description>本文永久链接 – https://tonybai.com/2026/01/24/go-generics-finally-supports-generic-methods 大家好，我是Tony Bai。 &amp;gt; “我们预计 Go 永远不会添加泛型方法。” —— Go FAQ (曾几何时) 对于许多期待 Go 泛型能像 C++ 或 Java 那样强大的开发者来说，这句话曾像一盆冷水。然而，就在最近，Go ...</description></item><item><title>2025 Go 官方调查解读：91% 满意度背后的隐忧与 AI 时代的“双刃剑”</title><link>https://tonybai.com/2026/01/23/go-developer-2025-survey-result/</link><pubDate>Fri, 23 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/23/go-developer-2025-survey-result/</guid><description>本文永久链接 – https://tonybai.com/2026/01/23/go-developer-2025-survey-result 大家好，我是Tony Bai。 近日，Go 官方发布了 2025 年开发者调查报告。作为 Go 社区的年度“体检报告”，这份基于 **5,379** 份有效问卷的数据，为我们勾勒出了一幅清晰的 Go 生态全景图。 总体来看，Go 依然是一个令人愉悦的语言，...</description></item><item><title>凌晨3点的警报：一个导致 50000 多个 Goroutine 泄漏的 Bug 分析</title><link>https://tonybai.com/2026/01/22/a-bug-cause-50000-goroutine-leak/</link><pubDate>Thu, 22 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/22/a-bug-cause-50000-goroutine-leak/</guid><description>本文永久链接 – https://tonybai.com/2026/01/22/a-bug-cause-50000-goroutine-leak 大家好，我是Tony Bai。 内存占用 47GB，响应时间飙升至 32秒，Goroutine 数量达到惊人的 50847 个。 这是一个周六凌晨 3 点，发生在核心 API 服务上的真实噩梦。运维正准备重启服务止损，但 Serge Skoredin 敏...</description></item><item><title>当 Go 遇上 GPU：用 CUDA 释放千倍算力的实战指南</title><link>https://tonybai.com/2026/01/21/integrating-cuda-in-go/</link><pubDate>Wed, 21 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/21/integrating-cuda-in-go/</guid><description>本文永久链接 – https://tonybai.com/2026/01/21/integrating-cuda-in-go 大家好，我是Tony Bai。 长期以来，高性能计算（HPC）和 GPU 编程似乎是 C++ 开发者的专属领地。Go 语言虽然在并发和服务端开发上表现卓越，但在触及 GPU 算力时，往往显得力不从心。 然而，在最近的 GopherCon 2025 上，软件架构师 Sam B...</description></item><item><title>AI 时代，Go 语言会“失宠”还是“封神”？—— GopherCon 2025 圆桌深度复盘</title><link>https://tonybai.com/2026/01/20/ai-and-go-opportunities-and-challenges/</link><pubDate>Tue, 20 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/20/ai-and-go-opportunities-and-challenges/</guid><description>本文永久链接 – https://tonybai.com/2026/01/20/ai-and-go-opportunities-and-challenges 大家好，我是Tony Bai。 在 AI 的滔天巨浪面前，每一位 Go 开发者心中或许都曾闪过一丝不安：Python 似乎统治了一切，我的 Go 语言技能树还值钱吗？AI 会取代我写代码吗？我该如何在这个喧嚣的时代保持清醒？ 在 Gopher...</description></item><item><title>Go 语言的“魔法”时刻：如何用 -toolexec 实现零侵入式自动插桩？</title><link>https://tonybai.com/2026/01/19/unleashing-the-go-toolchain/</link><pubDate>Mon, 19 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/19/unleashing-the-go-toolchain/</guid><description>本文永久链接 – https://tonybai.com/2026/01/19/unleashing-the-go-toolchain 大家好，我是Tony Bai。 “Go 语言以简洁著称，但在可观测性（Observability）领域，这种简洁有时却是一种负担。手动埋点、繁琐的初始化代码、版本升级带来的破坏性变更……这些都让 Gopher 们痛苦不已。 可观测性的三大支柱 相比之下，Java ...</description></item><item><title>Go 官方密码学原则：为什么 Go 的 Crypto 库难以被“用错”？</title><link>https://tonybai.com/2026/01/18/go-cryptography-principles/</link><pubDate>Sun, 18 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/18/go-cryptography-principles/</guid><description>本文永久链接 – https://tonybai.com/2026/01/18/go-cryptography-principles 大家好，我是Tony Bai。 在软件工程领域，密码学（Cryptography）通常被视为“高危禁区”。大多数语言的建议都是“不要自己写密码学代码”，甚至“不要自己组合密码学原语”。 然而，Go 语言打破了这一魔咒。Go 的标准库 crypto/… 以及扩展库 g...</description></item><item><title>Go, Rust 还是 Zig？一场关于“简单”与“控制”的灵魂拷问</title><link>https://tonybai.com/2026/01/17/go-rust-zig-simplicity-vs-control/</link><pubDate>Sat, 17 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/17/go-rust-zig-simplicity-vs-control/</guid><description>Go, Rust 还是 Zig？一场关于“简单”与“控制”的灵魂拷问 - 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/2026/01/16/go-community-the-right-kind-of-abstraction/</link><pubDate>Fri, 16 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/16/go-community-the-right-kind-of-abstraction/</guid><description>本文永久链接 – https://tonybai.com/2026/01/16/go-community-the-right-kind-of-abstraction 大家好，我是Tony Bai。 **“Go 的哲学强调避免不必要的抽象。”** 这句话我们听过无数次。当你试图引入 ORM、泛型 Map/Reduce 、接口或者复杂的设计模式时，往往会收到这样的反馈。这句话本身没有错，但难点在于：*...</description></item><item><title>内存去哪儿了？一个让大多数 Gopher 都无法清晰回答的问题</title><link>https://tonybai.com/2026/01/15/where-did-the-memory-go-gopher-unanswered-question/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/15/where-did-the-memory-go-gopher-unanswered-question/</guid><description>本文永久链接 – https://tonybai.com/2026/01/15/where-did-the-memory-go-gopher-unanswered-question 大家好，我是Tony Bai。 &amp;gt; “我的服务内存又在缓慢增长了，pprof 显示不出明显的泄漏点……**内存到底去哪儿了？**” 这句午夜梦回的拷问，或许是许多 Go 开发者心中最深的恐惧。 这一切的根源，可能始于一...</description></item><item><title>Go 的“显式哲学”为何在接口上“食言”了？—— 探秘隐式接口背后的设计智慧</title><link>https://tonybai.com/2026/01/14/go-explicit-philosophy-implicit-interfaces-design-wisdom/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/14/go-explicit-philosophy-implicit-interfaces-design-wisdom/</guid><description>本文永久链接 – https://tonybai.com/2026/01/14/go-explicit-philosophy-implicit-interfaces-design-wisdom 大家好，我是Tony Bai。 “Go 倾向于显式、冗长的代码，而不是‘魔法’。那么，为什么接口实现却是**隐式**的呢？这让理解代码变得困难多了，简直让我抓狂。” 前不久，一位 Gopher 在 Redd...</description></item><item><title>Go 的“浮点数陷阱”将被填平：浮点转整数即将在所有平台上行为一致</title><link>https://tonybai.com/2026/01/11/proposal-float-to-int-conversions-should-saturate-on-overflow/</link><pubDate>Sun, 11 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/11/proposal-float-to-int-conversions-should-saturate-on-overflow/</guid><description>本文永久链接 – https://tonybai.com/2026/01/11/proposal-float-to-int-conversions-should-saturate-on-overflow 大家好，我是Tony Bai。 你是否知道，同一行简单的代码 int64(myFloat)，在 Intel (amd64) 机器上可能返回一个巨大的负数，而在 ARM64 机器上却可能返回最大正整...</description></item><item><title>代码之外的修炼：Google 资深工程师的 21 条“生存法则”</title><link>https://tonybai.com/2026/01/11/21-lessons-from-google-engineer/</link><pubDate>Sun, 11 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/11/21-lessons-from-google-engineer/</guid><description>本文永久链接 – https://tonybai.com/2026/01/11/21-lessons-from-google-engineer 大家好，我是Tony Bai。 “当我 14 年前加入 Google 时，我以为这份工作就是写出优秀的代码……我只说对了一部分。我待得越久，就越意识到，那些真正茁壮成长的工程师，不一定是最好的程序员——他们是那些懂得如何驾驭代码**周围**一切的人：人、政...</description></item><item><title>离了大谱！Go 一年之内从第 7 掉到第 16</title><link>https://tonybai.com/2026/01/10/go-dropped-from-7th-to-16th-in-one-year/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/10/go-dropped-from-7th-to-16th-in-one-year/</guid><description>本文永久链接 – https://tonybai.com/2026/01/10/go-dropped-from-7th-to-16th-in-one-year 大家好，我是Tony Bai。 新年伊始，TIOBE 发布了最新的编程语言排行榜。当我满怀期待地去寻找 Go 的身影时，差点以为自己眼花了： **Go 居然从去年的第 7 名，断崖式下跌到了第 16 名！** 占比跌幅高达 1.37%，在这...</description></item><item><title>谁才是 Go 生态的“幕后之王”？—— 深度挖掘 4000 万个节点后的惊人发现</title><link>https://tonybai.com/2026/01/09/the-most-popular-go-dependency-is/</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/09/the-most-popular-go-dependency-is/</guid><description>谁才是 Go 生态的“幕后之王”？—— 深度挖掘 4000 万个节点后的惊人发现 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * ...</description></item><item><title>Go 语言的“舒适区”：为何在这张“鄙视链”金字塔中，Go 仅次于 C？</title><link>https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid/</guid><description>本文永久链接 – https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid 大家好，我是Tony Bai。 最近，一张“编程语言分级图”在技术社区引发大家热议。它没有参考 TIOBE 排名，也不看 GitHub Star 数，而是完全基于一种简单粗暴的价值观：**谁最不折腾人？** 在这张金字...</description></item><item><title>别再盯着 go.sum 看了：它不是你想象中的那个 Lockfile</title><link>https://tonybai.com/2026/01/06/go-sum-is-not-a-lockfile/</link><pubDate>Tue, 06 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/06/go-sum-is-not-a-lockfile/</guid><description>别再盯着 go.sum 看了：它不是你想象中的那个 Lockfile - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏...</description></item><item><title>耗时六个月，我为你画了一张通往“分布式架构师”的黄金地图</title><link>https://tonybai.com/2026/01/06/a-golden-map-to-distributed-architect/</link><pubDate>Tue, 06 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/06/a-golden-map-to-distributed-architect/</guid><description>耗时六个月，我为你画了一张通往“分布式架构师”的黄金地图 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列...</description></item><item><title>Go 考古：图灵奖得主 Ken Thompson 亲述，Go 语言是如何在 C++ 的“废墟”上诞生的</title><link>https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google/</link><pubDate>Mon, 05 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google/</guid><description>本文永久链接 – https://tonybai.com/2026/01/05/how-ken-thompson-developed-go-language-at-google. 大家好，我是Tony Bai。 为什么 Go 语言极其痛恨复杂的特性？为什么 Go 如此执着于编译速度？我们常说 Go 是一门“工程实用主义”的语言，它的设计哲学是“少即是多”。但你是否想过，这种近乎偏执的简洁，究竟是为...</description></item><item><title>坚守内核，拥抱变量：我的 2025 年终复盘与 2026 展望</title><link>https://tonybai.com/2026/01/04/stick-to-the-core-embrace-variables-2025-review-2026-outlook/</link><pubDate>Sun, 04 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/04/stick-to-the-core-embrace-variables-2025-review-2026-outlook/</guid><description>本文永久链接 – https://tonybai.com/2026/01/04/stick-to-the-core-embrace-variables-2025-review-2026-outlook 大家好，我是Tony Bai。 当时钟拨向 2026 年，我不禁回望刚刚过去的 2025。 在技术史上，这注定会被定义为**“分水岭”**的一年。如果说之前我们还在观望 AI 能画出什么样的图，生成...</description></item><item><title>让编译器成为你的副驾驶：告别“防御性编程”，拥抱“类型驱动开发”</title><link>https://tonybai.com/2026/01/04/stop-lying-to-the-compiler/</link><pubDate>Sun, 04 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/04/stop-lying-to-the-compiler/</guid><description>本文永久链接 – https://tonybai.com/2026/01/04/stop-lying-to-the-compiler 大家好，我是Tony Bai。 “半夜被值班的运维同事叫醒，发现生产环境崩了，原因是一个深藏在业务逻辑里的 nil 指针异常。” 这个场景，对于每个后端开发者来说都是挥之不去的噩梦。事后复盘时，我们往往会懊恼：“为什么这里没加 if != nil 判断？”然后，我们...</description></item><item><title>为什么 AI 时代，C++ 和 Rust 反而更火了？Herb Sutter 的硬核解读</title><link>https://tonybai.com/2026/01/03/why-cpp-programmers-keep-growing-fast/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/03/why-cpp-programmers-keep-growing-fast/</guid><description>本文永久链接 – https://tonybai.com/2026/01/03/why-cpp-programmers-keep-growing-fast 大家好，我是Tony Bai。 “软件拿走性能的速度，永远比硬件提供性能的速度要快。” 在 AI 狂热、Python 统治胶水层、硬件算力看似无限增长的今天，C++ 标准委员会主席 Herb Sutter 却抛出了一个反直觉的结论：**C++ ...</description></item><item><title>从“源码审计”到“能力审计”：Go 生态应对供应链攻击的范式转移</title><link>https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift/</guid><description>本文永久链接 – https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift 大家好，我是Tony Bai。 在软件供应链安全的传统认知中，我们默认遵循一个假设：“代码即真理”。如果你审查了 GitHub 上的源码，确认它是安全的，那么你部署的服务就应...</description></item><item><title>AI 是让你忘掉如何编程的最快方式</title><link>https://tonybai.com/2026/01/01/ai-is-the-fastest-way-to-forget-how-to-code/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/01/ai-is-the-fastest-way-to-forget-how-to-code/</guid><description>本文永久链接 – https://tonybai.com/2026/01/01/ai-is-the-fastest-way-to-forget-how-to-code 大家好，我是Tony Bai。 在 Copilot、Cursor、Claude Code等普及的这两年，编程似乎变得前所未有的轻松。 Tab 键一按，十行代码倾泻而出；回车一敲，整个函数自动补全；一个Prompt发出，一个项目的框架...</description></item><item><title>Go 考古：Go 官方如何决定支持你的 CPU 和 OS？</title><link>https://tonybai.com/2026/01/01/go-archaeology-porting-policy/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/01/go-archaeology-porting-policy/</guid><description>Go 考古：Go 官方如何决定支持你的 CPU 和 OS？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章...</description></item><item><title>Go 服务自省指南：抛弃 ldflags，让你的二进制文件“开口说话”</title><link>https://tonybai.com/2025/12/31/go-introspection-using-debug-buildinfo/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/31/go-introspection-using-debug-buildinfo/</guid><description>本文永久链接 – https://tonybai.com/2025/12/31/go-introspection-using-debug-buildinfo 大家好，我是Tony Bai。 在微服务和云原生时代，当我们面对线上服务的报警时，第一个问题往往不是“哪里出错了？”，而是——**“现在线上跑的到底是哪个版本？”** 在 Go 的蛮荒时代，我们习惯在 Makefile 里写上一长串 -ldf...</description></item><item><title>代码简单，人也简单？揭秘 Go 社区的“反内卷”文化</title><link>https://tonybai.com/2025/12/31/why-go-community-so-active-and-friendly/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/31/why-go-community-so-active-and-friendly/</guid><description>代码简单，人也简单？揭秘 Go 社区的“反内卷”文化 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 ...</description></item><item><title>Logging 已死？从“调试日记”到“结构化事件”的范式转移</title><link>https://tonybai.com/2025/12/30/logging-sucks/</link><pubDate>Tue, 30 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/30/logging-sucks/</guid><description>本文永久链接 – https://tonybai.com/2025/12/30/logging-sucks 大家好，我是Tony Bai。 “传统的日志记录（Logging）已经死了。不是说我们不再需要记录信息，而是那种‘写日记’式的记录方式，在微服务和高并发时代，已经彻底破产。” 曾几何时，我们写日志就像写日记：按时间顺序，一行行记录程序跑到了哪儿，发生了什么。但在现代分布式系统中，一个请求可能...</description></item><item><title>高并发后端：坚守 Go，还是拥抱 Rust？</title><link>https://tonybai.com/2025/12/30/high-concurrency-backend-go-vs-rust/</link><pubDate>Tue, 30 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/30/high-concurrency-backend-go-vs-rust/</guid><description>高并发后端：坚守 Go，还是拥抱 Rust？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 高并发后...</description></item><item><title>告别 interface{} 模拟，Go 终于要有真正的 Union 类型了？</title><link>https://tonybai.com/2025/12/29/go-community-new-sum-type-end-interface-union-types/</link><pubDate>Mon, 29 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/29/go-community-new-sum-type-end-interface-union-types/</guid><description>本文永久链接 – https://tonybai.com/2025/12/29/go-community-new-sum-type-end-interface-union-types 大家好，我是Tony Bai。 &amp;gt; “Go 什么时候支持枚举？” &amp;gt; &amp;gt; “Go 什么时候有真正的联合类型？” 这可能是 Go 语言诞生以来，被问得最多的问题之一。现有的解决方案——无论是用 const 模拟枚举，还...</description></item><item><title>Rob Pike 罕见暴怒！痛斥 AI 公司的“伪善”致谢信，引爆技术圈</title><link>https://tonybai.com/2025/12/27/rob-pike-outburst-denounces-ai-companies-hypocritical-thanks/</link><pubDate>Sat, 27 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/27/rob-pike-outburst-denounces-ai-companies-hypocritical-thanks/</guid><description>本文永久链接 – https://tonybai.com/2025/12/27/rob-pike-outburst-denounces-ai-companies-hypocritical-thanks 大家好，我是Tony Bai。 “在这个圣诞节，我想对您过去四十年来对计算机领域的杰出贡献表达深深的感谢……” 这是一封看似温情脉脉、充满敬意的邮件，发件人是 **Claude Opus 4.5 A...</description></item><item><title>像 Go 创始人一样思考：用五大思维原理重学 Go 语言</title><link>https://tonybai.com/2025/12/26/think-like-go-founders-relearn-go-five-principles/</link><pubDate>Fri, 26 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/26/think-like-go-founders-relearn-go-five-principles/</guid><description>本文永久链接 – https://tonybai.com/2025/12/26/think-like-go-founders-relearn-go-five-principles 大家好，我是Tony Bai。 学习一门新的编程语言时，我们常常陷入“是什么”的迷雾：goroutine 是什么？channel 是什么？interface 是什么？我们记忆语法，模仿示例，却很少追问那个更根本的问题——...</description></item><item><title>Go 的 AI 时代宣言：我们如何用“老”原则，解决“新”问题？</title><link>https://tonybai.com/2025/12/25/go-next-frontier-gophercon-2025/</link><pubDate>Thu, 25 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/25/go-next-frontier-gophercon-2025/</guid><description>本文永久链接 – https://tonybai.com/2025/12/25/go-next-frontier-gophercon-2025 大家好，我是Tony Bai。 “AI 正在重塑软件工程，但它并没有改变软件工程的本质。” 在 GopherCon 2025 上，Go 语言产品负责人 Cameron Balahan 发表了一场题为《Go 的下一个前沿领域》的主题演讲，重点关注了AI 时代...</description></item><item><title>Bash 虽好，但我选 Go：如何用 10 倍代码换来 100 倍的维护性？</title><link>https://tonybai.com/2025/12/24/bash-vs-go-10x-code-100x-maintainability/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/24/bash-vs-go-10x-code-100x-maintainability/</guid><description>本文永久链接 – https://tonybai.com/2025/12/24/bash-vs-go-10x-code-100x-maintainability 大家好，我是Tony Bai。 &amp;gt; “Bash 是一种很棒的胶水语言，但 Go 是更好的胶水。” 在日常开发中，我们经常会写一些 Bash 脚本来处理本地环境配置、启动 Docker 容器、同步密钥等琐碎任务。起初，它们只是几行简单的命令...</description></item><item><title>Go 性能分析的“新范式”：用关键路径分析破解高并发延迟谜题</title><link>https://tonybai.com/2025/12/24/profiling-request-latency-with-critical-path-analysis/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/24/profiling-request-latency-with-critical-path-analysis/</guid><description>本文永久链接 – https://tonybai.com/2025/12/24/profiling-request-latency-with-critical-path-analysis 大家好，我是Tony Bai。 “如果你喜欢快速的软件，那么你来对地方了。” 在 GopherCon 2025 上，来自 Datadog 的工程师、Go Performance and diagnostics小组...</description></item><item><title>告别“If-Else”地狱：OpenFeature 如何重塑 Go 应用的特性开关管理？</title><link>https://tonybai.com/2025/12/23/goodbye-if-else-hell-openfeature-feature-flag-management-go/</link><pubDate>Tue, 23 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/23/goodbye-if-else-hell-openfeature-feature-flag-management-go/</guid><description>本文永久链接 – https://tonybai.com/2025/12/23/goodbye-if-else-hell-openfeature-feature-flag-management-go 大家好，我是Tony Bai。 在软件开发的早期，我们都有过这样的经历：为了上线一个不确定的新功能，我们在代码里写下了： ``` if os.Getenv(&amp;#34;ENABLE_NEW_FEATURE&amp;#34;) ...</description></item><item><title>AI 还在写“老式 Go”？Alan Donovan 详解 Go 代码的现代化</title><link>https://tonybai.com/2025/12/22/alan-donovan-go-code-modernization/</link><pubDate>Mon, 22 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/22/alan-donovan-go-code-modernization/</guid><description>本文永久链接 – https://tonybai.com/2025/12/22/alan-donovan-go-code-modernization 大家好，我是Tony Bai。 “Go 承诺了兼容性，但这并不意味着我们应该永远停留在过去。” 在 GopherCon 2025 上，Go 团队核心成员、静态分析工具专家 Alan Donovan 带来了一场题为《Analysis and Trans...</description></item><item><title>Go 1.26 的“加密风暴”：当 Hashicorp Vault 的合规需求，撞上 Go 团队的安全哲学</title><link>https://tonybai.com/2025/12/21/go-1-26-cryptographic-storm-vault-compliance-vs-go-security/</link><pubDate>Sun, 21 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/21/go-1-26-cryptographic-storm-vault-compliance-vs-go-security/</guid><description>本文永久链接 – https://tonybai.com/2025/12/21/go-1-26-cryptographic-storm-vault-compliance-vs-go-security 大家好，我是Tony Bai。 近日，一个看似不起眼的 Go 语言issue，在社区引发了一场“地震级”的辩论。这场辩论的主角，一方是 Go 安全团队的灵魂人物 Filippo Valsorda，另一...</description></item><item><title>Goroutine “气泡”宇宙——Go 并发模型的新维度</title><link>https://tonybai.com/2025/12/20/goroutine-bubble-universe-go-concurrency-new-dimension/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/20/goroutine-bubble-universe-go-concurrency-new-dimension/</guid><description>本文永久链接 – https://tonybai.com/2025/12/20/goroutine-bubble-universe-go-concurrency-new-dimension 大家好，我是Tony Bai。 goroutine 是 Go 并发模型的基石，我们习惯于将其视为一个个轻量、独立的执行单元。然而，近年来，Go 语言中出现了一种新的、微妙的并发概念，Go 核心团队的成员们亲切地...</description></item><item><title>再见了，微服务：从 100 多个“问题儿童”到 1 个“超级巨星”的架构回归</title><link>https://tonybai.com/2025/12/19/twilio-say-goodbye-microservices/</link><pubDate>Fri, 19 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/19/twilio-say-goodbye-microservices/</guid><description>本文永久链接 – https://tonybai.com/2025/12/19/twilio-say-goodbye-microservices 大家好，我是Tony Bai。 “微服务”——这个在过去十年间统治了软件架构领域的“最佳实践”，承诺给我们带来更高的模块化、更快的迭代速度和更强的团队自治。然而，当一个团队，深陷于 140 多个服务、140 多个代码仓库、140 多个独立队列的泥潭中，开...</description></item><item><title>“这段代码是 AI 写的！”—— Go 社区的“AI 辅助编程”第一案</title><link>https://tonybai.com/2025/12/18/go-community-first-case-ai-assisted-programming/</link><pubDate>Thu, 18 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/18/go-community-first-case-ai-assisted-programming/</guid><description>本文永久链接 – https://tonybai.com/2025/12/18/go-community-first-case-ai-assisted-programming 大家好，我是Tony Bai。 近日，一场在 Go 官方 GitHub Issue 中爆发的公开“对峙”，将一个长期悬而未决的问题，以一种极具戏剧性的方式，推到了所有 Gopher 的面前：**我们应该如何对待 AI 生成的...</description></item><item><title>逃离 Java 的“自行车棚”：Go 语言真的是那片“净土”吗？</title><link>https://tonybai.com/2025/12/18/escaping-java-bicycle-shed-is-go-the-pure-land/</link><pubDate>Thu, 18 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/18/escaping-java-bicycle-shed-is-go-the-pure-land/</guid><description>本文永久链接 – https://tonybai.com/2025/12/18/escaping-java-bicycle-shed-is-go-the-pure-land 大家好，我是Tony Bai。 “如果每次我看到‘为什么不这么写？’这种针对完美代码的 PR 评论都能得到一分钱，我现在已经退休了。” 近日，一位在 r/golang 社区发帖的开发者发出了这样的咆哮。他受够了 Java 生态...</description></item><item><title>Cloudflare 2025 年度报告发布——Go 语言再次“屠榜”API 领域，AI 流量激增！</title><link>https://tonybai.com/2025/12/17/cloudflare-2025-report-go-language-api-traffic-ai-surge/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/17/cloudflare-2025-report-go-language-api-traffic-ai-surge/</guid><description>本文永久链接 – https://tonybai.com/2025/12/17/cloudflare-2025-report-go-language-api-traffic-ai-surge 大家好，我是Tony Bai。 近日，互联网基础设施巨头 Cloudflare 发布了其备受瞩目的《2025 年度互联网回顾报告》。这份基于其全球庞大网络数据的报告，如同一面镜子，映照出全球互联网在流量、技术...</description></item><item><title>Go 1.26 新特性前瞻：从 Green Tea GC 到语法糖 new(expr)，性能与体验的双重进化</title><link>https://tonybai.com/2025/12/16/go-1-26-foresight/</link><pubDate>Tue, 16 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/16/go-1-26-foresight/</guid><description>本文永久链接 – https://tonybai.com/2025/12/16/go-1-26-foresight 大家好，我是Tony Bai。 随着2025年11月末 Go 1.26 开发分支的功能冻结（Feature Freeze），这份预计于 2026 年初发布的版本终于揭开了神秘面纱。 回望刚刚过去的两年，Go 语言经历了一段密集的**“能力扩容期”**。从 Go 1.21 对结构化日志...</description></item><item><title>Go 语言的“反模式”清单：来自资深 Gopher 血泪教训的 10 条“不要做”</title><link>https://tonybai.com/2025/12/15/go-language-anti-patterns-10-donts/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/15/go-language-anti-patterns-10-donts/</guid><description>本文永久链接 – https://tonybai.com/2025/12/15/go-language-anti-patterns-10-donts 大家好，我是Tony Bai。 “有哪些‘不要做’的教训，是你花了好几年才学会的？” 近日，在 r/golang 社区，这个简单的问题，引爆了一场关于 Go 语言“反模式”与“最佳实践”的集体反思。帖子下数百条评论，汇集了无数 Gopher 在真实项...</description></item><item><title>InfluxDB 3.0：一场豪赌的未来，还是又一次痛苦的轮回？</title><link>https://tonybai.com/2025/12/13/influxdb-3-0-grand-gamble-or-painful-cycle/</link><pubDate>Sat, 13 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/13/influxdb-3-0-grand-gamble-or-painful-cycle/</guid><description>InfluxDB 3.0：一场豪赌的未来，还是又一次痛苦的轮回？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 *...</description></item><item><title>跨越20年的对话：从 Eiffel 的“契约”到 Go 的“接口”</title><link>https://tonybai.com/2025/12/13/from-eiffel-contract-to-go-interface/</link><pubDate>Sat, 13 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/13/from-eiffel-contract-to-go-interface/</guid><description>本文永久链接 – https://tonybai.com/2025/12/13/from-eiffel-contract-to-go-interface 大家好，我是Tony Bai。 20年前，当我第一次翻开 Bertrand Meyer 的那本巨著**《面向对象软件构造》(Object-Oriented Software Construction)** 时，一种醍醐灌顶的感觉油然而生。书中那个...</description></item><item><title>Gin 真的是“真菌”吗？—— 一篇引发热议的“反 Gin”檄文解读</title><link>https://tonybai.com/2025/12/12/gin-is-a-very-bad-software-library/</link><pubDate>Fri, 12 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/12/gin-is-a-very-bad-software-library/</guid><description>本文永久链接 – https://tonybai.com/2025/12/12/gin-is-a-very-bad-software-library 大家好，我是Tony Bai。 “Gin 就像是一种伪装成软件库的阴险真菌：它很容易感染，一旦沾上就几乎无法去除，除非你极其小心，否则还会传染给你的朋友。” 2025 年 12 月，Efron Licht 发布了一篇名为《Gin 是一个非常糟糕的软件...</description></item><item><title>Go 跌出 TIOBE 前十？别被排名骗了，这才是它的真实地位</title><link>https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language/</link><pubDate>Thu, 11 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language/</guid><description>本文永久链接 – https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language 大家好，我是Tony Bai。 Go 语言是否已经触到了天花板？在 Python 借力 AI 狂飙突进、Rust 备受追捧的今天，Go 的位置究竟在哪里？近日，Twitch工程师 Melkey 结合 JetBrains、Sta...</description></item><item><title>Jepsen 报告震动 Go 社区：NATS JetStream 会丢失已确认写入</title><link>https://tonybai.com/2025/12/11/jepsen-report-nats-jetstream-data-loss-acknowledged-writes/</link><pubDate>Thu, 11 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/11/jepsen-report-nats-jetstream-data-loss-acknowledged-writes/</guid><description>本文永久链接 – https://tonybai.com/2025/12/11/jepsen-report-nats-jetstream-data-loss-acknowledged-writes 大家好，我是Tony Bai。 近日，一则重磅消息在 Go 社区引发了不小的震动。分布式系统领域的“终极拷问者”——**Jepsen**——发布了一份针对 Go 生态中流砥柱级消息系统 NATS 及其子...</description></item><item><title>“我曾想付钱给 Google 去工作”—— Russ Cox 深度访谈：Go 的诞生、演进与未来</title><link>https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future/</guid><description>本文永久链接 – https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future 大家好，我是Tony Bai。 他是 Go 语言的第二代掌门人，在长达十余年的时间里，引领着 Go 从一个内部实验项目，成长为云原生时代的霸主。他也是 Plan 9 的资深黑客，贝尔实验室精神的传承者。如今，他已将 Go 的帅印交...</description></item><item><title>Go 的“最小惊讶原则”破功了吗？—— 一个vet 新提案引发的思考</title><link>https://tonybai.com/2025/12/09/vet-add-check-for-using-verb-q/</link><pubDate>Tue, 09 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/09/vet-add-check-for-using-verb-q/</guid><description>本文永久链接 – https://tonybai.com/2025/12/09/vet-add-check-for-using-verb-q 大家好，我是Tony Bai。 Go 语言的设计哲学，一向以“简单、明确、无魔法”著称，其目标是让代码的行为**尽可能符合开发者的直觉**，即遵循所谓的**“最小惊讶原则” (Principle of Least Astonishment)**。然而，最近一...</description></item><item><title>拒绝“面条代码”，做有架构思维的 Go API 设计师</title><link>https://tonybai.com/2025/12/08/api-design-pattern-and-implementation/</link><pubDate>Mon, 08 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/08/api-design-pattern-and-implementation/</guid><description>本文永久链接 – https://tonybai.com/2025/12/08/api-design-pattern-and-implementation 大家好，我是Tony Bai。 在 Go 语言的圈子里摸爬滚打这么多年，我经常被问到这样一个问题： &amp;gt; “Tony，我已经熟悉了 Go 的语法，也会用 Gin 写增删改查（CRUD）了，为什么我写的 API 还是经常被前端吐槽？为什么业务逻辑稍...</description></item><item><title>“我从未想过学完 Rust 后会转向 Go”—— 这门“无聊”的语言究竟有什么魅力？</title><link>https://tonybai.com/2025/12/07/switching-from-rust-to-go-appeal-of-the-language/</link><pubDate>Sun, 07 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/07/switching-from-rust-to-go-appeal-of-the-language/</guid><description>本文永久链接 – https://tonybai.com/2025/12/07/switching-from-rust-to-go-appeal-of-the-language 大家好，我是Tony Bai。 “我从未想过在学习 Rust 之后，我还会转而学习 Go。” 近日，开发者 Abhishek Singh 的一条推文，以其独特的、充满“诗意”的笔触，在开发者社区引发了广泛的共鸣和讨论。这句...</description></item><item><title>看完《疯狂动物城2》，我发现“完美架构”的谎言被戳破了</title><link>https://tonybai.com/2025/12/07/zootopia-2-perfect-architecture-lie-exposed/</link><pubDate>Sun, 07 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/07/zootopia-2-perfect-architecture-lie-exposed/</guid><description>看完《疯狂动物城2》，我发现“完美架构”的谎言被戳破了 - 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/2025/12/06/zootopia-distributed-system-written-in-go/</link><pubDate>Sat, 06 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/06/zootopia-distributed-system-written-in-go/</guid><description>本文永久链接 – https://tonybai.com/2025/12/06/zootopia-distributed-system-written-in-go 大家好，我是Tony Bai。 **文章开始前，先给各位道个歉，今天的标题确实有点“党”。** 毕竟，非要说一个满是毛茸茸动物的动画片是用 Go 语言写的，这脑洞开得确实有点大。 但请原谅一个老程序员的“职业病”。 为了迎接本周末《疯狂...</description></item><item><title>Go 安全新提案：runtime/secret 能否终结密钥残留的噩梦？</title><link>https://tonybai.com/2025/12/05/proposal-runtime-secret/</link><pubDate>Fri, 05 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/05/proposal-runtime-secret/</guid><description>本文永久链接 – https://tonybai.com/2025/12/05/proposal-runtime-secret 大家好，我是Tony Bai。 “如果你的服务器被攻破，攻击者能否拿到内存中残留的私钥，进而解密过去两年的所有通信记录？” 这是一个让所有安全工程师夜不能寐的问题。为了防止这种情况，现代加密协议（如 TLS 1.3, WireGuard）都强调**前向保密 (Forwar...</description></item><item><title>MinIO 开源版突发“安乐死”：维护模式开启，社区愤怒，你的数据还安全吗？</title><link>https://tonybai.com/2025/12/04/minio-enter-maintenance-mode/</link><pubDate>Thu, 04 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/04/minio-enter-maintenance-mode/</guid><description>本文永久链接 – https://tonybai.com/2025/12/04/minio-enter-maintenance-mode 大家好，我是Tony Bai。 “这个项目目前处于维护状态，不接受新的更改。” 近日，GitHub 上拥有近 60k Star、Go 语言生态中最著名的开源对象存储项目——MinIO，悄然修改了其 README。这一行看似平淡的声明，标志着 MinIO 开源版实...</description></item><item><title>Go 2025云原生与可观测年度报告：底层性能革新与生态固防</title><link>https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report/</link><pubDate>Wed, 03 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report/</guid><description>本文永久链接 – https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report 大家好，我是Tony Bai。 **2025年，对于 Go 语言和云原生生态来说，是充满挑战与变革的一年。** 凭借务实的并发模型、极快的编译速度和极简的部署体验，Go 语言在过去十年间毫无争议地坐稳了现代云原生基础设施的“铁王座”。从...</description></item><item><title>Brad Fitzpatrick 也等不及了！sync.Map 的泛型进化与 sync/v2 的诞生之路</title><link>https://tonybai.com/2025/12/01/proposal-sync-v2/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/01/proposal-sync-v2/</guid><description>Brad Fitzpatrick 也等不及了！sync.Map 的泛型进化与 sync/v2 的诞生之路 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课...</description></item><item><title>Go 编译器崩溃背后：一个 append 函数引发的语言规范修正案</title><link>https://tonybai.com/2025/11/30/ice-assertion-failed-with-append/</link><pubDate>Sun, 30 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/30/ice-assertion-failed-with-append/</guid><description>本文永久链接 – https://tonybai.com/2025/11/30/ice-assertion-failed-with-append 大家好，我是Tony Bai。 在软件开发中，我们有时会遇到一些“显而易见”的错误。对于 Go 开发者而言，append 内建函数的第一个参数必须是切片，似乎就是这样一个“常识”。然而，当一个本应产生清晰编译错误的“常识性”错误，却导致了 Go 1.25...</description></item><item><title>“香蕉、猴子和整片丛林”：我们是否深陷于 OOP 的“优雅”陷阱？</title><link>https://tonybai.com/2025/11/29/oop-the-worst-thing-that-happened-to-programming/</link><pubDate>Sat, 29 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/29/oop-the-worst-thing-that-happened-to-programming/</guid><description>本文永久链接 – https://tonybai.com/2025/11/29/oop-the-worst-thing-that-happened-to-programming 大家好，我是Tony Bai。 Erlang 之父 Joe Armstrong 曾提出了一个关于面向对象编程（OOP）的、流传甚广的深刻比喻： **“你想要一根香蕉，但你得到的却是一只拿着香蕉的猴子，以及整片丛林。”** ...</description></item><item><title>Go 2026 路线图曝光：SIMD、泛型方法与无 C 工具链 CGO —— 性能与表达力的双重飞跃？</title><link>https://tonybai.com/2025/11/28/go-2026-roadmap-revealed/</link><pubDate>Fri, 28 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/28/go-2026-roadmap-revealed/</guid><description>本文永久链接 – https://tonybai.com/2025/11/28/go-2026-roadmap-revealed 大家好，我是Tony Bai。 在最近的一期 Go 编译器与运行时团队会议纪要中，我们惊喜地发现了一份关于 **2026 年的规划 (2026 planning，如下图)**。这份规划虽然简短，但其包含的信息量却足以让任何一位关注 Go 语言未来的开发者心跳加速。 从榨...</description></item><item><title>dingo：Go 语言的 “TypeScript”时刻？—— 一场由社区驱动的语言演进实验</title><link>https://tonybai.com/2025/11/27/dingo-go-typescript-moment/</link><pubDate>Thu, 27 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/27/dingo-go-typescript-moment/</guid><description>本文永久链接 – https://tonybai.com/2025/11/27/dingo-go-typescript-moment 大家好，我是Tony Bai。 Go 语言自诞生以来，以其极简主义哲学（Simplicity）赢得了全球开发者的青睐。然而，这种极简也伴随着长期的痛点： * 满屏的 if err != nil。 * 缺失的和类型（Sum Types/Enums），导致状态表达含糊。...</description></item><item><title>13万节点！Google 如何打破 Kubernetes 的物理极限，构建全球最大集群</title><link>https://tonybai.com/2025/11/26/how-google-built-a-130000-node-k8s-cluster/</link><pubDate>Wed, 26 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/26/how-google-built-a-130000-node-k8s-cluster/</guid><description>本文永久链接 – https://tonybai.com/2025/11/26/how-google-built-a-130000-node-k8s-cluster 大家好，我是Tony Bai。 Kubernetes 的官方支持上限通常被认为是 5,000 到 15,000 节点。然而，在 AI 时代的算力军备竞赛中，这个数字显得有些“捉襟见肘”。 近日，Google Cloud 发布了一份重磅...</description></item><item><title>谁“杀”死了你的 HTTP 连接？—— 揭秘云环境下连接池配置的隐形陷阱</title><link>https://tonybai.com/2025/11/25/who-killed-your-http-connection-traps-of-connection-pooling/</link><pubDate>Tue, 25 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/25/who-killed-your-http-connection-traps-of-connection-pooling/</guid><description>本文永久链接 – https://tonybai.com/2025/11/25/who-killed-your-http-connection-traps-of-connection-pooling 大家好，我是Tony Bai。 你是否在生产环境中遇到过偶现的 EOF、connection reset by peer 或 unexpected end of stream 错误？ 你是否检查了代码...</description></item><item><title>霸榜 GitHub 一周！Google 开源 ADK for Go，彻底终结 AI“炼丹”时代？</title><link>https://tonybai.com/2025/11/24/google-adk-go-in-action/</link><pubDate>Mon, 24 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/24/google-adk-go-in-action/</guid><description>本文永久链接 – https://tonybai.com/2025/11/24/google-adk-go-in-action 大家好，我是Tony Bai。 上周，我花了一个下午，仅仅是为了让一个Python写的Agent能稳定地调用我Go服务里的一个简单函数。在那一刻，看着屏幕上纠缠的gRPC、Python虚拟环境和混乱的日志，我脑海里只有一个念头：这不对劲，这绝对不是软件工程该有的样子！ 显...</description></item><item><title>从韩立到梅西：顶级“全栈工程师”的修炼之道与生存哲学</title><link>https://tonybai.com/2025/11/23/leo-messi-and-fanren-hanli/</link><pubDate>Sun, 23 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/23/leo-messi-and-fanren-hanli/</guid><description>从韩立到梅西：顶级“全栈工程师”的修炼之道与生存哲学 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 ...</description></item><item><title>Go 2025 密码学年度报告：后量子时代的防御与 FIPS 的“纯 Go”革命</title><link>https://tonybai.com/2025/11/22/the-2025-go-cryptography-state-of-the-union/</link><pubDate>Sat, 22 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/22/the-2025-go-cryptography-state-of-the-union/</guid><description>本文永久链接 – https://tonybai.com/2025/11/22/the-2025-go-cryptography-state-of-the-union 大家好，我是Tony Bai。 2025 年 8 月，Go 官方密码学库核心维护者、Geomys 创始人 **Filippo Valsorda** 在 GopherCon US 上发表了备受瞩目的年度主题演讲 —— “The Go ...</description></item><item><title>为什么 Go 在悄悄地做 Rust 做不到的事：保持简单</title><link>https://tonybai.com/2025/11/21/why-go-is-quietly-doing-what-rust-couldnt-staying-simple/</link><pubDate>Fri, 21 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/21/why-go-is-quietly-doing-what-rust-couldnt-staying-simple/</guid><description>本文永久链接 – https://tonybai.com/2025/11/21/why-go-is-quietly-doing-what-rust-couldnt-staying-simple 大家好，我是Tony Bai。 近日，一篇题为《为什么 Zig 在悄悄地做 Rust 做不到的事：保持简单》的文章在开发者社区引发了热议。文章以其辛辣、富有煽动性的文风，将 Zig 描绘成 Rust 复杂性...</description></item><item><title>Goroutine 栈增长机制新提案：用缺页中断替代栈检查？Rob Pike 亲自下场“劝退”</title><link>https://tonybai.com/2025/11/20/proposal-improve-goroutine-stack-using-page-faults/</link><pubDate>Thu, 20 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/20/proposal-improve-goroutine-stack-using-page-faults/</guid><description>本文永久链接 – https://tonybai.com/2025/11/20/proposal-improve-goroutine-stack-using-page-faults 大家好，我是Tony Bai。 Go 语言的 goroutine 以其轻量和高效著称，而其背后一个关键的“魔法”便是**可动态增长的栈 (Resizable Stacks)**。然而，支撑这个魔法的机制——在几乎每个函...</description></item><item><title>还在当“上下文搬运工”？我写了一门课，帮你重塑AI开发工作流</title><link>https://tonybai.com/2025/11/20/ai-native-dev-workflow/</link><pubDate>Thu, 20 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/20/ai-native-dev-workflow/</guid><description>本文永久链接 – https://tonybai.com/2025/11/20/ai-native-dev-workflow 大家好，我是Tony Bai。 最近半年，我发现我的开发日常，正被一种新的“工作流摩擦”所困扰。 我猜，你可能也感同身受。 我们在一块屏幕上沉浸于IDE中的Go代码，在另一块屏幕上，则像一个勤奋的“学生”，不断向AI大模型提问。我们从代码库中精心挑选上下文，复制，切换窗口，...</description></item><item><title>Go 泛型再进化：移除类型参数的循环引用限制</title><link>https://tonybai.com/2025/11/19/proposal-remove-cycle-restriction-for-type-parameters/</link><pubDate>Wed, 19 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/19/proposal-remove-cycle-restriction-for-type-parameters/</guid><description>本文永久链接 – https://tonybai.com/2025/11/19/proposal-remove-cycle-restriction-for-type-parameters 大家好，我是Tony Bai。 自 Go 1.18 引入泛型以来，Gopher 们一直在探索其能力的边界。然而，在这片新大陆上，一直存在着一个由语言规范施加的限制，它禁止了一种强大而富有表达力的泛型模式的实现。 ...</description></item><item><title>Go 在 Web3 的统治力：2025 年架构与生态综述</title><link>https://tonybai.com/2025/11/18/go-web3-dominance-overview-2025/</link><pubDate>Tue, 18 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/18/go-web3-dominance-overview-2025/</guid><description>本文永久链接 – https://tonybai.com/2025/11/18/go-web3-dominance-overview-2025 大家好，我是Tony Bai。 截至 2025 年末，Go 语言 (Golang) 作为**基础设施主导语言 (Infrastructure Dominance Language)**，在 Web3 生态系统中的地位已然根深蒂固。Go 的架构特性——特别是...</description></item><item><title>你的 Go 测试，还停留在“演员对台词”吗？</title><link>https://tonybai.com/2025/11/17/go-testing-journey/</link><pubDate>Mon, 17 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/17/go-testing-journey/</guid><description>本文永久链接 – https://tonybai.com/2025/11/17/go-testing-journey 大家好，我是Tony Bai。 我想请大家想象一个场景： 周五下午五点，你刚刚修复了一个看似无关紧要的 bug，怀着对周末的憧憬，合并了你的代码。CI/CD 流水线一片绿灯，部署顺利完成。 突然，运维在工作群里 @ 了你：“紧急！新版本上线后，核心的用户注册功能好像挂了！” 你心里...</description></item><item><title>你的 Kubernetes 知识在“冰山”的第几层？—— 一份给 Gopher 的 K8s 进阶“航海图”</title><link>https://tonybai.com/2025/11/17/explain-kubernetes/</link><pubDate>Mon, 17 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/17/explain-kubernetes/</guid><description>本文永久链接 – https://tonybai.com/2025/11/17/explain-kubernetes 大家好，我是Tony Bai。 近日，一张关于 Kubernetes 知识体系的“冰山图”在开发者社区广为流传。它以一种戏谑而又无比真实的方式，描绘了从入门到精通 K8s 所需跨越的深邃鸿沟。 对于我们 Gopher 而言，这张图有着非凡的意义。因为 Kubernetes 这座宏伟...</description></item><item><title>Go 也开始“叛逆”了？深度解读 JetBrains 2025 报告：为何“原生信仰”不再是唯一答案</title><link>https://tonybai.com/2025/11/14/the-go-ecosystem-in-2025/</link><pubDate>Fri, 14 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/14/the-go-ecosystem-in-2025/</guid><description>本文永久链接 – https://tonybai.com/2025/11/14/the-go-ecosystem-in-2025 大家好，我是Tony Bai。 Go 语言迎来了它的第 16 个年头。从一个旨在解决 Google 内部工程效率问题的项目，成长为拥有超过 500 万开发者的全球性技术力量，16 岁的 Go 已然进入了一个成熟、稳健的“少年时代”。 在这个值得纪念的里程碑时刻，我们不禁...</description></item><item><title>PGO 驱动的“动态逃逸分析”：w.Write(b) 中的切片逃逸终于有救了？</title><link>https://tonybai.com/2025/11/13/proposal-dynamic-escapes/</link><pubDate>Thu, 13 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/13/proposal-dynamic-escapes/</guid><description>本文永久链接 – https://tonybai.com/2025/11/13/proposal-dynamic-escapes 大家好，我是Tony Bai。 io.Writer，这个在 Go 语言中无处不在的神圣接口，其背后却隐藏着一个困扰了性能敏感型开发者多年的“隐形成本”。当你将一个在函数内创建的字节切片 b 传递给 w.Write(b) 时，这个切片几乎总是会**逃逸 (Escape)*...</description></item><item><title>Go 的 16 年：一门为持久而生的编程语言</title><link>https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last/</link><pubDate>Wed, 12 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last/</guid><description>本文永久链接 – https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last 大家好，我是Tony Bai。 每年的十一月，对于全球的 Gopher 而言，都是一个值得纪念的特殊时刻。今年，我们迎来了 Go 语言公开发布的第 16 个年头。 在众多的庆祝文章中，来自 Go 社区的知名组织 Ar...</description></item><item><title>“学习 Go 毁掉了我钟爱的其他语言”：一场网络热议揭示 Go 开发者真正的爱与痛</title><link>https://tonybai.com/2025/11/11/go-developers-love-pain-online-debate/</link><pubDate>Tue, 11 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/11/go-developers-love-pain-online-debate/</guid><description>本文永久链接 – https://tonybai.com/2025/11/11/go-developers-love-pain-online-debate 大家好，我是Tony Bai。 近日，一条开发者 Mario Verbelen 发布的推文——“学习 Go 毁掉了我钟爱的其他语言，但我不在乎。因为它真的太棒了。”——意外地在技术圈引起了一场关于 Go 语言的集中讨论。上百的开发者涌入评论区，...</description></item><item><title>算了一笔账后，这个双十一我决定做个“亏本”买卖</title><link>https://tonybai.com/2025/11/11/zsxq-11-11-2025/</link><pubDate>Tue, 11 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/11/zsxq-11-11-2025/</guid><description>算了一笔账后，这个双十一我决定做个“亏本”买卖 - 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/2025/11/10/rob-pike-on-complexity/</link><pubDate>Mon, 10 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/10/rob-pike-on-complexity/</guid><description>本文永久链接 – https://tonybai.com/2025/11/10/rob-pike-on-complexity 大家好，我是Tony Bai。 在软件工程的殿堂里，我们常常将算法和数据结构奉为圭臬。我们痴迷于时间复杂度的优化，热衷于讨论各种精巧的数据结构。然而，Go 语言的联合创始人 Rob Pike 早在其1989年的一篇C 语言编程笔记中，就为我们留下了一份更根本的“忠告”。这份...</description></item><item><title>Go 标准库将迎来 Zstandard：性能超越 Gzip，让你的应用更快、更省</title><link>https://tonybai.com/2025/11/08/proposal-zstd/</link><pubDate>Sat, 08 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/08/proposal-zstd/</guid><description>本文永久链接 – https://tonybai.com/2025/11/08/proposal-zstd 大家好，我是Tony Bai。 在 Go 的世界里，一项被社区翘首以盼的提案在沉寂一年后，终于迎来了决定性的进展。2024 年，将 Zstandard 压缩算法纳入标准库的提案（#62513）被正式 **Accept**，但在那之后便鲜有动静。直到最近的 Go 编译器与运行时会议纪要中透露，...</description></item><item><title>Go 的“简单”幻象：易于上手，难于精通</title><link>https://tonybai.com/2025/11/07/go-simple-illusion-easy-to-learn-hard-to-master/</link><pubDate>Fri, 07 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/07/go-simple-illusion-easy-to-learn-hard-to-master/</guid><description>本文永久链接 – https://tonybai.com/2025/11/07/go-simple-illusion-easy-to-learn-hard-to-master 大家好，我是Tony Bai。 “Go 语言看起来如此简单，我的这种假设是错的吗？” 近日，一位刚接触 Go 几个月的新手在reddit golang论坛发出了这样一个真诚的提问。他感觉 Go “超级简单”，并好奇自己是否因...</description></item><item><title>连 Rob Pike 都感到“担忧”：Go 1.26 SIMD 引入的新复杂性与应对之道</title><link>https://tonybai.com/2025/11/06/proposal-simd-cpu-feature-vet-check/</link><pubDate>Thu, 06 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/06/proposal-simd-cpu-feature-vet-check/</guid><description>本文永久链接 – https://tonybai.com/2025/11/06/proposal-simd-cpu-feature-vet-check 大家好，我是Tony Bai。 Go 1.26 将于11月份功能特性冻结，其最令人期待的实验特性之一，无疑是simd 包的引入。它承诺为 Go 开发者解锁 SIMD (Single Instruction, Multiple Data) 的强大能力...</description></item><item><title>GODEBUG 的“技术债”清算：Go 团队提出全新生命周期管理策略</title><link>https://tonybai.com/2025/11/05/proposal-remove-godebug-flags/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/05/proposal-remove-godebug-flags/</guid><description>本文永久链接 – https://tonybai.com/2025/11/05/proposal-remove-godebug-flags 大家好，我是Tony Bai。 自 2012 年 Go 1 发布以来，“向后兼容性” (Go 1 compatibility guarantee) 不仅是一份承诺，更是 Go 语言赢得全球开发者信任的基石。然而，为了在不违背这份承诺的前提下修复 bug、引入新...</description></item><item><title>微服务灾难清单：从技术深坑到组织泥潭的 10 个惨痛教训</title><link>https://tonybai.com/2025/11/04/microservice-disasters/</link><pubDate>Tue, 04 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/04/microservice-disasters/</guid><description>本文永久链接 – https://tonybai.com/2025/11/04/microservice-disasters 大家好，我是Tony Bai。 2014 年，当 Martin Fowler 发表那篇定义性的文章后，“微服务”就从一个架构理念，迅速演变为席卷全球软件行业的技术浪潮。它承诺将庞大、笨重的单体应用，分解为小而美的、可独立开发和部署的服务，从而极大地提升团队的敏捷性和交付速度...</description></item><item><title>Go GUI 开发的“绝境”与“破局”：2025 年现状与展望</title><link>https://tonybai.com/2025/11/03/go-gui-development-2025/</link><pubDate>Mon, 03 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/03/go-gui-development-2025/</guid><description>本文永久链接 – https://tonybai.com/2025/11/03/go-gui-development-2025 大家好，我是Tony Bai。 “Go 语言能写桌面应用吗？” 这个问题，如同一个幽灵，常年盘旋在 Go 社区的上空。作为一门在后端、云原生和命令行工具领域所向披靡的语言，Go 在图形用户界面（GUI）开发上的“短板”，一直是其支持者心中一个难以言说的痛。 长期以来，Go...</description></item><item><title>“6 个月，47 个微服务”：一场由“简历驱动”引发的架构灾难</title><link>https://tonybai.com/2025/11/02/6-months-47-microservices-architecture-disaster/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/02/6-months-47-microservices-architecture-disaster/</guid><description>本文永久链接 – https://tonybai.com/2025/11/02/6-months-47-microservices-architecture-disaster 大家好，我是Tony Bai。 &amp;gt; “我们有一个运行了 8 年的 Python 单体应用，20 万行代码，工作得很好，很少崩溃，8 分钟就能部署。现在，新来的首席架构师，入职仅 3 个月，就要我们在 6 个月内，把它拆分成 ...</description></item><item><title>从 Python 到 Go：我们失去了什么，又得到了什么？</title><link>https://tonybai.com/2025/11/01/from-python-to-go-what-we-lost-and-gained/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/01/from-python-to-go-what-we-lost-and-gained/</guid><description>本文永久链接 – https://tonybai.com/2025/11/01/from-python-to-go-what-we-lost-and-gained 大家好，我是Tony Bai。 在当代软件工程师的职业生涯中，从一门动态语言（如 Python）转向一门静态语言（如 Go），已成为一条日益普遍的技术迁徙路径。这条路充满了新奇的发现，也伴随着对旧日“舒适区”的丝丝怀念。 近日，在 r/...</description></item><item><title>Go 官方详解“Green Tea”垃圾回收器：从对象到页，一场应对现代硬件挑战的架构演进</title><link>https://tonybai.com/2025/10/31/deep-into-go-green-tea-gc/</link><pubDate>Fri, 31 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/31/deep-into-go-green-tea-gc/</guid><description>本文永久链接 – https://tonybai.com/2025/10/31/deep-into-go-green-tea-gc 大家好，我是Tony Bai。 关注 Go 语言演进的 Gopher 们可能已经注意到，Go 团队更换技术负责人以来，对运行时 (runtime) 和编译器 (compiler) 核心组件的打磨正日益成为团队的工作重心。从备受期待的“绿茶”GC (Green Tea ...</description></item><item><title>Rust 布道者Jon Gjengset深度访谈：在 AI 时代，我们该如何思考编程、职业与未来？</title><link>https://tonybai.com/2025/10/30/jon-gjengset-rust-ai-future/</link><pubDate>Thu, 30 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/30/jon-gjengset-rust-ai-future/</guid><description>本文永久链接 – https://tonybai.com/2025/10/30/jon-gjengset-rust-ai-future 大家好，我是Tony Bai。 他是 MIT 的博士，Rust 社区的知名布道者，《Rust for Rustaceans》作者，前亚马逊首席工程师，现欧洲顶尖 AI 防务公司 Helsing 的首席工程师。Jon Gjengset 的履历，本身就是一部现代软件工...</description></item><item><title>告别懵圈：实战派 Gopher 的类型理论入门</title><link>https://tonybai.com/2025/10/30/type-theory-intro-for-gopher/</link><pubDate>Thu, 30 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/30/type-theory-intro-for-gopher/</guid><description>本文永久链接 – https://tonybai.com/2025/10/30/type-theory-intro-for-gopher 大家好，我是Tony Bai。 你是否曾有过这样的经历：在浏览一个关于 Go 泛型或接口设计的 GitHub issue 或技术提案时，评论区里的大佬们突然开始讨论 “Sum Type”、“Product Type”、“Parametric Polymorphi...</description></item><item><title>解构Go函数迭代器——为什么 break 没有按预期工作？</title><link>https://tonybai.com/2025/10/29/why-break-in-go-function-iterators-does-not-work/</link><pubDate>Wed, 29 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/29/why-break-in-go-function-iterators-does-not-work/</guid><description>本文永久链接 – https://tonybai.com/2025/10/29/why-break-in-go-function-iterators-does-not-work 大家好，我是Tony Bai。 在我的极客时间专栏《Tony Bai·Go语言进阶课》的关于 Go 1.23+ 函数迭代器的第9讲中，我介绍了一种非常强大的高级用法——**迭代器组合 (Iterator Compositi...</description></item><item><title>Go 考古：错误处理的“语法糖”之战与最终的“投降”</title><link>https://tonybai.com/2025/10/28/go-archaeology-error-handling/</link><pubDate>Tue, 28 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/28/go-archaeology-error-handling/</guid><description>本文永久链接 – https://tonybai.com/2025/10/28/go-archaeology-error-handling 大家好，我是Tony Bai。 if err != nil，这可能是 Go 语言中最具辨识度，也最富争议性的代码片段。它如同一块磐石，奠定了 Go 错误处理哲学的基石，但也因其“繁琐”而常年位居 Go 开发者年度调查“最不满意特性”榜首。 许多新入门的 Gop...</description></item><item><title>Go 模块构建与依赖管理：我们到底在“折腾”什么？</title><link>https://tonybai.com/2025/10/27/the-ultimate-guide-to-go-module/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/27/the-ultimate-guide-to-go-module/</guid><description>Go 模块构建与依赖管理：我们到底在“折腾”什么？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 G...</description></item><item><title>SQLite 对 Go 和 Rust 说“不”：揭示“安全语言”光环下的工程现实</title><link>https://tonybai.com/2025/10/26/sqlite-say-no-to-go-and-rust/</link><pubDate>Sun, 26 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/26/sqlite-say-no-to-go-and-rust/</guid><description>本文永久链接 – https://tonybai.com/2025/10/26/sqlite-say-no-to-go-and-rust 大家好，我是Tony Bai。1024程序员节赠书活动火热进行中，希望大家踊跃参与，赢取自己的幸运！ 在当今的软件工程界，“内存安全”已成为一种近乎道德正确的政治正确。Go 和 Rust 等现代“安全语言”，凭借其在编译期消除一整类危险 Bug 的能力，被誉为是...</description></item><item><title>Go 的 iota：设计缺陷还是“黑魔法”？—— 从一条“咆哮”推文谈起</title><link>https://tonybai.com/2025/10/25/go-iota-flaw-or-magic/</link><pubDate>Sat, 25 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/25/go-iota-flaw-or-magic/</guid><description>本文永久链接 – https://tonybai.com/2025/10/25/go-iota-flaw-or-magic 大家好，我是Tony Bai。 “我一直在 DUNK Go，因为我觉得它是一门糟糕的语言。但我从未意识到，它比无底的绝望深渊还要深。这TMD是啥？” 近日，一条关于 Go 语言 iota 的“咆哮”推文在开发者社区引发了热议。推文作者 Dmitrii Kovanikov 贴出...</description></item><item><title>致敬 1024 程序员节：写给奔跑在二进制世界里的你 (文末赠书)</title><link>https://tonybai.com/2025/10/24/honoring-1024-programmers-day/</link><pubDate>Fri, 24 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/24/honoring-1024-programmers-day/</guid><description>致敬 1024 程序员节：写给奔跑在二进制世界里的你 (文末赠书) - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 ...</description></item><item><title>Go FFI 的新范式：purego 与 libffi 如何让我们无痛拥抱 C 生态</title><link>https://tonybai.com/2025/10/23/go-ffi-new-paradigm/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/23/go-ffi-new-paradigm/</guid><description>本文永久链接 – https://tonybai.com/2025/10/23/go-ffi-new-paradigm 大家好，我是Tony Bai。 import “C”，这行代码对于许多 Gopher 来说，既是通往强大 C 生态的桥梁，也是通往“地狱”的入口。CGO 作为 Go 语言内建的 FFI 机制，其为人诟病的远不止是编译期的种种不便，更包含了昂贵的运行时开销和复杂的心智负担。 正是这...</description></item><item><title>Go 语言观察：登顶“最受期待”榜首，JetBrains 2025报告洞悉未来趋势</title><link>https://tonybai.com/2025/10/23/go-language-leads-jetbrains-trends/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/23/go-language-leads-jetbrains-trends/</guid><description>本文永久链接 – https://tonybai.com/2025/10/23/go-language-leads-jetbrains-trends 大家好，我是Tony Bai。 近日，软件开发工具巨头 JetBrains 发布了其年2025度《开发者生态系统现状》报告，这份基于全球数万名开发者调研的数据报告，已成为洞察技术风向的关键参考之一。在今年的报告中，Go 语言的表现尤为亮眼，它不仅在“...</description></item><item><title>7 个常见的 Kubernetes 陷阱（以及我是如何学会避免它们的）</title><link>https://tonybai.com/2025/10/22/seven-kubernetes-pitfalls/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/22/seven-kubernetes-pitfalls/</guid><description>本文永久链接 – https://tonybai.com/2025/10/22/seven-kubernetes-pitfalls 大家好，我是Tony Bai。 本文翻译自Kubernetes官方博客《7 Common Kubernetes Pitfalls (and How I Learned to Avoid Them)》一文。 这篇文章的作者Abdelkoddous Lhajouji 以第...</description></item><item><title>从 Go “叛逃”到 Java，再回归：一位开发者关于“魔法”与“显式”的深度反思</title><link>https://tonybai.com/2025/10/22/back-to-go-after-defection-to-java/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/22/back-to-go-after-defection-to-java/</guid><description>本文永久链接 – https://tonybai.com/2025/10/22/back-to-go-after-defection-to-java 大家好，我是Tony Bai。 “我离开了 Go，因为我觉得它啰嗦又笨重。我以为编程本该是简单轻松的……但事实证明，河对岸的草不见得更绿。” 近日，在 r/golang 社区，一篇标题为《一篇完全没有建设性但又无比真实的，关于 Go 和 Java 的...</description></item><item><title>写出让同事赞不绝口的Go代码：Reddit工程师总结的10条地道Go编程法则</title><link>https://tonybai.com/2025/10/21/10-go-programming-rules-from-reddit/</link><pubDate>Tue, 21 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/21/10-go-programming-rules-from-reddit/</guid><description>本文永久链接 – https://tonybai.com/2025/10/21/10-go-programming-rules-from-reddit 大家好，我是Tony Bai。 在团队协作中，Code Review是我们与同事交流最频繁的阵地。我们都渴望自己提交的代码能够清晰、健壮，赢得同事的“LGTM”（Looks Good To Me）。但有时，一些看似“吹毛求疵”的风格评论，如“改下变...</description></item><item><title>一个 Kubernetes 集群的“珠峰攀登”：从 10 万到 100 万节点的极限探索</title><link>https://tonybai.com/2025/10/20/k8s-1m-intro/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/20/k8s-1m-intro/</guid><description>本文永久链接 – https://tonybai.com/2025/10/20/k8s-1m-intro 大家好，我是Tony Bai。 在云原生的世界里，Kubernetes 集群的规模，如同一座待征服的高峰。业界巨头 AWS 已将旗帜插在了 **10 万**节点的高度，这曾被认为是云的“天际线”。然而，一位前OpenAI工程师(曾参与OpenAI 7.5k节点的Kubernetes集群的建设)...</description></item><item><title>为什么 Flask 的创造者选择 Go 作为他 AI 创业公司的核心语言？</title><link>https://tonybai.com/2025/10/19/flask-creator-choose-go/</link><pubDate>Sun, 19 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/19/flask-creator-choose-go/</guid><description>为什么 Flask 的创造者选择 Go 作为他 AI 创业公司的核心语言？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技...</description></item><item><title>AI 让代码产出速度提升 10 倍，为什么我们的软件交付成功率却停滞不前？</title><link>https://tonybai.com/2025/10/18/revisit-extreme-programming-in-the-age-of-ai/</link><pubDate>Sat, 18 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/18/revisit-extreme-programming-in-the-age-of-ai/</guid><description>AI 让代码产出速度提升 10 倍，为什么我们的软件交付成功率却停滞不前？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技...</description></item><item><title>Go 技术沉思录：Java 26 年演进史给我们带来的启示</title><link>https://tonybai.com/2025/10/18/lessons-from-java-26-years-evolution/</link><pubDate>Sat, 18 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/18/lessons-from-java-26-years-evolution/</guid><description>本文永久链接 – https://tonybai.com/2025/10/18/lessons-from-java-26-years-evolution 大家好，我是Tony Bai。 历史不会简单重复，但总是惊人地相似。编程语言的演化，如同一部波澜壮阔的史诗，充满了智慧的闪光、艰难的抉择与深刻的教训。 上月，资深工程师 Neil Madden 发表了一篇引人入胜的文章《点评 26 年的 Java...</description></item><item><title>收到非 UTF-8 文本怎么办？Go 字符集检测的探索与实践</title><link>https://tonybai.com/2025/10/17/detect-charset-in-go/</link><pubDate>Fri, 17 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/17/detect-charset-in-go/</guid><description>本文永久链接 – https://tonybai.com/2025/10/17/detect-charset-in-go 大家好，我是Tony Bai。 在上一篇关于 Go 语言 string 与 rune 设计哲学的文章发布后，我收到了许多精彩的反馈。其中，一位读者提出了一个极具现实意义的后续问题：“既然 Go 的世界以 UTF-8 为中心，那么当我们从外部系统（如老旧的文件、非标准的 API）...</description></item><item><title>释放 Go 的极限潜能：CPU 缓存友好的数据结构设计指南</title><link>https://tonybai.com/2025/10/16/cpu-cache-friendly-in-go/</link><pubDate>Thu, 16 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/16/cpu-cache-friendly-in-go/</guid><description>本文永久链接 – https://tonybai.com/2025/10/16/cpu-cache-friendly-in-go 大家好，我是Tony Bai。 “现代 CPU 很快，而内存很慢。” 这句看似简单的陈词滥调，是理解现代高性能编程的唯一“真理”。我们常常致力于优化算法的时间复杂度，却忽略了一个更为根本的性能瓶颈：**数据在内存和 CPU 缓存之间的移动**。一次 L1 缓存的命中可能...</description></item><item><title>Go 考古：defer 的“救赎”——从性能“原罪”到零成本的“开放编码”</title><link>https://tonybai.com/2025/10/15/go-archaeology-defer/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/15/go-archaeology-defer/</guid><description>本文永久链接 – https://tonybai.com/2025/10/15/go-archaeology-defer 大家好，我是Tony Bai。 在 Go 语言的所有关键字中，defer 无疑是最具特色和争议的之一。它以一种近乎“魔法”的方式，保证了资源清理逻辑的执行，极大地提升了代码的可读性和健壮性。f, _ := os.Open(“…”); defer f.Close() 这一行代码，...</description></item><item><title>string 与 rune 的设计哲学：为什么Go 程序员很少为“乱码”烦恼？</title><link>https://tonybai.com/2025/10/13/string-and-rune-in-go/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/13/string-and-rune-in-go/</guid><description>本文永久链接 – https://tonybai.com/2025/10/13/string-and-rune-in-go 大家好，我是Tony Bai。 &amp;gt; “为什么我的字符又乱码了？！” 这是一个在软件开发历史上，曾让无数程序员彻夜难眠的哀嚎。处理文本，是编程中最基础的任务之一，但其背后关于编码 (Encoding) 和字符集 (Character Set) 的水，远比看起来要深。正如 Joe...</description></item><item><title>从“键盘牛仔”到“规范工程师”，AI 浪潮下的程序员身份危机</title><link>https://tonybai.com/2025/10/12/the-programmer-identity-crisis/</link><pubDate>Sun, 12 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/12/the-programmer-identity-crisis/</guid><description>本文永久链接 – https://tonybai.com/2025/10/12/the-programmer-identity-crisis 大家好，我是Tony Bai。 “我是一个程序员。一个编码者。一个键盘牛仔……这是我的乐趣，也是我的身份认同。” 近日，一篇题为《程序员的身份危机》的博文在技术社区中引发了广泛的共鸣与讨论。作者Simon Højberg以一个“手艺人”的深情独白开篇，将我们...</description></item><item><title>Go 作为第一门编程语言：天才之选还是糟糕开端？</title><link>https://tonybai.com/2025/10/11/go-is-a-good-first-programming-language/</link><pubDate>Sat, 11 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/11/go-is-a-good-first-programming-language/</guid><description>Go 作为第一门编程语言：天才之选还是糟糕开端？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 Go...</description></item><item><title>Go 零拷贝“最后一公里”：Peek API背后的设计哲学与权衡</title><link>https://tonybai.com/2025/10/10/proposal-add-buffer-peek/</link><pubDate>Fri, 10 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/10/proposal-add-buffer-peek/</guid><description>本文永久链接 – https://tonybai.com/2025/10/10/proposal-add-buffer-peek 大家好，我是Tony Bai。 在 Go 的世界里，io.Reader 是一个神圣的接口。它如同一条设计精良、四通八达的高速公路，为数据流的传输提供了统一、优雅的抽象。然而，在这条高速公路的尽头，当数据流的目的地就在眼前——一块已然存在的内存（[]byte）时，我们却常...</description></item><item><title>Go开发者必读：JSON 的跨语言陷阱与 Go 防御指南</title><link>https://tonybai.com/2025/10/09/json-isnt-json/</link><pubDate>Thu, 09 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/09/json-isnt-json/</guid><description>本文永久链接 – https://tonybai.com/2025/10/09/json-isnt-json 大家好，我是Tony Bai。 JSON (JavaScript Object Notation)，以其简洁、轻量、人类可读的特性，早已成为 Web API 和系统集成的“通用语”。它的承诺是：“一次编写，随处解析”。然而，这份看似美好的承诺背后，隐藏着一个被许多开发者忽略的残酷现实：**...</description></item><item><title>只会 net/http 还不够，Go 网络编程的“深水区”你敢闯吗？</title><link>https://tonybai.com/2025/10/08/go-network-programming-complete-guide/</link><pubDate>Wed, 08 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/08/go-network-programming-complete-guide/</guid><description>只会 net/http 还不够，Go 网络编程的“深水区”你敢闯吗？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏...</description></item><item><title>Go 标准库提供一个“Must” 函数？社区关于“断言式初始化”的思考</title><link>https://tonybai.com/2025/10/07/proposal-must-do/</link><pubDate>Tue, 07 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/07/proposal-must-do/</guid><description>本文永久链接 – https://tonybai.com/2025/10/07/proposal-must-do 大家好，我是Tony Bai。 if err != nil 不仅是 Go 代码中最常见的片段，更是其错误处理哲学的基石。它强制开发者在每一个可能出错的地方，都必须直面失败的可能性。然而，当一个错误在理论上可能发生，但在实践中（尤其是在处理静态、已知的常量时）又“不可能”发生时，这种严谨...</description></item><item><title>超越时间的智慧：重读那些定义了现代软件开发的经典文章</title><link>https://tonybai.com/2025/10/04/the-software-essays-that-shaped-me/</link><pubDate>Sat, 04 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/04/the-software-essays-that-shaped-me/</guid><description>本文永久链接 – https://tonybai.com/2025/10/04/the-software-essays-that-shaped-me 大家好，我是Tony Bai。 二十年前，一位年轻的程序员在还未踏入职场时，便开始沉浸于软件开发的博客文章与深刻思考之中。二十年后，他已成为一名资深工程师，回首望去，成千上万的文字中，只有寥寥数篇真正沉淀下来，如基石般塑造了他的思维方式和职业生涯。 ...</description></item><item><title>Go 考古：Slice 的“隐秘角落”——只读切片与扩容策略的权衡</title><link>https://tonybai.com/2025/10/02/go-archaeology-slice/</link><pubDate>Thu, 02 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/02/go-archaeology-slice/</guid><description>本文永久链接 – https://tonybai.com/2025/10/02/go-archaeology-slice 大家好，我是Tony Bai。 slice（切片），可以说是 Go 语言中最重要、也最常用的数据结构，没有之一。我们每天都在使用它，尤其是 append 函数，它就像一个魔术师，总能“恰到好处”地为我们管理好底层数组的容量，让我们几乎感受不到内存分配的烦恼。 但你是否想过，这份...</description></item><item><title>除了技术能力，什么决定了软件工程师的上限？答案是“品味”</title><link>https://tonybai.com/2025/09/30/good-taste-in-software-engineering/</link><pubDate>Tue, 30 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/30/good-taste-in-software-engineering/</guid><description>本文永久链接 – https://tonybai.com/2025/09/30/good-taste-in-software-engineering 大家好，我是Tony Bai。 在软件工程领域，我们习惯于用“技术能力”（Technical Skill）来衡量一位工程师的优劣。他是否精通并发模型？能否写出高性能的代码？对底层原理的理解有多深？这些能力可以通过学习和重复练习来获得，是我们评价体系中...</description></item><item><title>并发测试神器 synctest的“成人礼”：从goroutine泄漏到微妙的竞态，Go团队如何修复三大“首日bug”？</title><link>https://tonybai.com/2025/09/29/synctest-bugs-in-go-1-25/</link><pubDate>Mon, 29 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/29/synctest-bugs-in-go-1-25/</guid><description>本文永久链接 – 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和各种脆弱的同步技巧中解放出来，让我...</description></item><item><title>Dropbox最新研究解读：AI 正在拉平生产力差距，顶尖开发者如何脱颖而出？</title><link>https://tonybai.com/2025/09/28/how-top-performers-stand-out-in-the-age-of-ai/</link><pubDate>Sun, 28 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/28/how-top-performers-stand-out-in-the-age-of-ai/</guid><description>本文永久链接 – https://tonybai.com/2025/09/28/how-top-performers-stand-out-in-the-age-of-ai 大家好，我是Tony Bai。 AI 正在以前所未有的速度重塑软件开发领域。从代码生成到信息检索，AI 工具无疑极大地提升了工程师的生产力。一个普遍的假设是，谁能更好地利用 AI，谁就能成为新时代的顶尖人才。然而，Dropbox...</description></item><item><title>Go 结构体初始化的“反直觉”设计终于要改了？深入探讨嵌入字段直接初始化提案</title><link>https://tonybai.com/2025/09/27/direct-ref-to-embedded-fields-in-struct-literals/</link><pubDate>Sat, 27 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/27/direct-ref-to-embedded-fields-in-struct-literals/</guid><description>本文永久链接 – https://tonybai.com/2025/09/27/direct-ref-to-embedded-fields-in-struct-literals 大家好，我是Tony Bai。 在 Go 语言中，结构体嵌入 (Embedding) 是一个强大而独特的特性，它为我们提供了一种优雅的“垂直组合”方式。然而，多年来，它的使用体验中一直存在一个广为人知的“反直觉”之处，一个...</description></item><item><title>“自立程序员宣言”解读：这不就是我们一直在说的Go语言哲学吗？</title><link>https://tonybai.com/2025/09/26/self-reliant-programmer/</link><pubDate>Fri, 26 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/26/self-reliant-programmer/</guid><description>“自立程序员宣言”解读：这不就是我们一直在说的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/2025/09/25/go-security-past-present-and-future/</link><pubDate>Thu, 25 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/25/go-security-past-present-and-future/</guid><description>本文永久链接 – https://tonybai.com/2025/09/25/go-security-past-present-and-future 大家好，我是Tony Bai。 在软件安全领域，最成功的战役，往往是那些从未被公众所知的“隐形战争”。当一门编程语言的安全性被认为是理所当然时，这背后必然有一支团队在持续不断地进行着防御、修复与规划。对于 Go 语言而言，这支团队就是 Google...</description></item><item><title>Go团队成员的忠告：在你的API变得无法挽回之前，必须掌握的四条原则</title><link>https://tonybai.com/2025/09/24/evolving-your-go-api/</link><pubDate>Wed, 24 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/24/evolving-your-go-api/</guid><description>本文永久链接 – https://tonybai.com/2025/09/24/evolving-your-go-api 大家好，我是Tony Bai。 你在 package 中导出的每一个 func 和 type，都是一份对用户的**承诺**。然而，变化是软件开发中唯一不变的真理。当需求变更、bug 修复、甚至认知升级时，你将如何修改这份“承诺”，同时又最大限度地减少对你和你的用户造成的破坏？ ...</description></item><item><title>“可移植性”的隐藏成本：Go为何要重塑maphash并划定新的运行时边界？</title><link>https://tonybai.com/2025/09/23/go-maphash-portability-costs-and-runtime-boundaries/</link><pubDate>Tue, 23 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/23/go-maphash-portability-costs-and-runtime-boundaries/</guid><description>本文永久链接 – https://tonybai.com/2025/09/23/go-maphash-portability-costs-and-runtime-boundaries 大家好，我是Tony Bai。 对于大多数Go开发者来说，标准库似乎是一个浑然天成的整体。我们理所当然地使用着fmt、net/http和encoding/json，很少去思考它们内部的依赖关系和架构边界。然而，在标准...</description></item><item><title>“我们放弃了”——Go 团队坦诚布公，聊聊那些可能永远不会加入 Go 的功能</title><link>https://tonybai.com/2025/09/22/go-team-gave-up-on-features/</link><pubDate>Mon, 22 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/22/go-team-gave-up-on-features/</guid><description>本文永久链接 – https://tonybai.com/2025/09/22/go-team-gave-up-on-features 大家好，我是Tony Bai。 在 GopherCon Europe 2025 的 Go 团队座谈会上，Michael Stapelberg(负责go protobuf)、Damien Neil(负责Go安全相关)、Michael Pratt(负责Go运行时和Go...</description></item><item><title>面对“好主意”，为何开源项目的维护者必须学会说“不”？</title><link>https://tonybai.com/2025/09/21/why-maintainers-should-say-no-to-good-idea/</link><pubDate>Sun, 21 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/21/why-maintainers-should-say-no-to-good-idea/</guid><description>面对“好主意”，为何开源项目的维护者必须学会说“不”？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表...</description></item><item><title>重构还是重写？GitHub工程师维护Go大项目的实践指南</title><link>https://tonybai.com/2025/09/20/refactoring-go-in-large-codebases/</link><pubDate>Sat, 20 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/20/refactoring-go-in-large-codebases/</guid><description>本文永久链接 – https://tonybai.com/2025/09/20/refactoring-go-in-large-codebases 大家好，我是Tony Bai。 &amp;gt; “要不……我们重写吧？” 在任何一个发展到一定阶段的 Go 项目中，这句话都像一个幽灵，反复出现在技术讨论中。面对一个布满补丁、逻辑盘根错节、维护成本日益高昂的“大泥球” (Big Ball of Mud)，彻底推倒...</description></item><item><title>从arena、memory region到runtime.free：Go内存管理探索的务实转向</title><link>https://tonybai.com/2025/09/18/go-runtime-free-proposal/</link><pubDate>Thu, 18 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/18/go-runtime-free-proposal/</guid><description>本文永久链接 – https://tonybai.com/2025/09/18/go-runtime-free-proposal 大家好，我是Tony Bai。 Go 的垃圾收集器（GC）是其简单性和并发安全性的基石，但也一直是性能优化的焦点。近年来，Go 核心团队为了进一步降低 GC 开销，进行了一系列前沿探索：从备受争议的arena 实验，到更优雅但实现复杂的 memory regions构想...</description></item><item><title>Dave Cheney 复出首谈：那些我反复强调的Go编程模式</title><link>https://tonybai.com/2025/09/17/some-things-i-keep-repeating-about-go/</link><pubDate>Wed, 17 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/17/some-things-i-keep-repeating-about-go/</guid><description>本文永久链接 – https://tonybai.com/2025/09/17/some-things-i-keep-repeating-about-go 大家好，我是Tony Bai。 在阔别公众视野数年后，Go 社区的传奇人物 **Dave Cheney** 终于重返 GopherCon Europe 的舞台，发表了一场备受瞩目的**复出首谈**(注：我印象中的回归首谈^_^)。这场题为《那些...</description></item><item><title>Go 语言的灵魂之问：当“简单”变得“复杂”</title><link>https://tonybai.com/2025/09/16/go-language-when-simple-becomes-complex/</link><pubDate>Tue, 16 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/16/go-language-when-simple-becomes-complex/</guid><description>Go 语言的灵魂之问：当“简单”变得“复杂” - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 Go 语...</description></item><item><title>context：Go 语言的“天问”，你真的懂了吗？</title><link>https://tonybai.com/2025/09/15/go-context-column/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/15/go-context-column/</guid><description>context：Go 语言的“天问”，你真的懂了吗？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 ...</description></item><item><title>“包管理器是万恶之源”：一次来自Odin语言作者的灵魂拷问</title><link>https://tonybai.com/2025/09/13/package-managers-are-evil/</link><pubDate>Sat, 13 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/13/package-managers-are-evil/</guid><description>本文永久链接 – https://tonybai.com/2025/09/13/package-managers-are-evil 大家好，我是Tony Bai。 &amp;gt; “包管理器是万恶之源 (Package Managers are Evil)。” 这句石破天惊的论断，出自Odin语言的创造者Ginger Bill最近发表的一篇博文。在一个npm install、pip install、go ge...</description></item><item><title>超越零值：Go 语言“构造模式”深度指南</title><link>https://tonybai.com/2025/09/12/go-constructor-pattern-guide/</link><pubDate>Fri, 12 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/12/go-constructor-pattern-guide/</guid><description>本文永久链接 – https://tonybai.com/2025/09/12/go-constructor-pattern-guide 大家好，我是Tony Bai。 Go 语言的设计哲学崇尚简约与直白(straightforward)。其中，结构体字面量 (Struct Literal) 的存在，让我们可以用极其简单的方式创建数据结构。然而，在构建大型、复杂的系统时，这种简单性也可能成为一把双...</description></item><item><title>直面依赖之痛与TLS简化：GopherCon 2025贡献者峰会核心纪要深度解读</title><link>https://tonybai.com/2025/09/11/gophercon-2025-contributor-summit-notes/</link><pubDate>Thu, 11 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/11/gophercon-2025-contributor-summit-notes/</guid><description>本文永久链接 – https://tonybai.com/2025/09/11/gophercon-2025-contributor-summit-notes 大家好，我是Tony Bai。 GopherCon 2025 贡献者峰会刚刚落下帷幕。在这场Go核心团队与全球顶尖贡献者齐聚一堂的闭门会议中，Go语言的未来方向被激烈地讨论和塑造。这些讨论或许不像发布泛型那样惊天动地，但它们如同地壳深处的板...</description></item><item><title>MCP协议注册中心发布：Go在下一代AI基础设施中扮演关键角色</title><link>https://tonybai.com/2025/09/10/introducing-the-mcp-registry/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/10/introducing-the-mcp-registry/</guid><description>本文永久链接 – https://tonybai.com/2025/09/10/introducing-the-mcp-registry 大家好，我是Tony Bai。 近日，模型上下文协议 (Model Context Protocol, MCP)官方发布了其生态系统的核心基础设施：MCP 注册中心 (MCP Registry)的预览版。这个开放的、分布式的目录服务不仅为 MCP 服务器的发现与...</description></item><item><title>最好的教师节礼物：来自2.5万名Gopher的认可</title><link>https://tonybai.com/2025/09/10/happy-teachers-day-2025/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/10/happy-teachers-day-2025/</guid><description>最好的教师节礼物：来自2.5万名Gopher的认可 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 最...</description></item><item><title>NASA的十大编码“诫律”：Go视角的全新解读</title><link>https://tonybai.com/2025/09/09/the-power-of-ten-in-go/</link><pubDate>Tue, 09 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/09/the-power-of-ten-in-go/</guid><description>本文永久链接 – https://tonybai.com/2025/09/09/the-power-of-ten-in-go 大家好，我是Tony Bai。 在软件工程领域，有些智慧是永恒的。 2006 年，NASA/JPL（喷气推进实验室）的 Gerard J. Holzmann 公布了其团队用于开发**安全关键 (Safety-Critical)** 软件的十条黄金法则——“The Power...</description></item><item><title>从《凡人修仙传》看程序员境界：道友，你修炼到哪一层了？</title><link>https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels/</guid><description>本文永久链接 – https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels 大家好，我是Tony Bai。 最近《凡人修仙传》的电视剧大火，想必各位道友都有耳闻。鄙人也没忍住，不仅刷完了杨洋主演的网剧，还趁着这股热乎劲儿，一口气在微信读书连读再听地补完了小说的人界篇。 当看到韩立资质平平，相貌普通，却凭着“小绿瓶”、远超常人的心...</description></item><item><title>为什么说“接口”，而非代码或硬件堆砌，决定了系统的性能上限？</title><link>https://tonybai.com/2025/09/07/the-power-of-an-interface-for-performance/</link><pubDate>Sun, 07 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/07/the-power-of-an-interface-for-performance/</guid><description>本文永久链接 – https://tonybai.com/2025/09/07/the-power-of-an-interface-for-performance &amp;gt; 我的《Go语言第一课》已上市，赠书活动正在进行中，欢迎点击此链接参与。 大家好，我是Tony Bai。 我们通常如何看待性能优化？答案往往是：更快的算法、更少的内存分配、更底层的并发原语、甚至用SIMD指令压榨CPU的每一个周期。我...</description></item><item><title>告别算法“天书”，Go程序员的学术伪代码“翻译”指南</title><link>https://tonybai.com/2025/09/06/gopher-pseudocode-translation-guide/</link><pubDate>Sat, 06 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/06/gopher-pseudocode-translation-guide/</guid><description>本文永久链接 – https://tonybai.com/2025/09/06/gopher-pseudocode-translation-guide 大家好，我是Tony Bai。 你是否曾在阅读顶会论文时，感觉其中的算法描述像一本晦涩难懂的**“天书”**？那些看不太懂的数学符号、奇特的箭头和看似代码又无法编译的语句(如下图)，是不是常常让你望而却步，感叹理论与实践之间隔着一道鸿沟？ 别担心，...</description></item><item><title>Go Proxy的“背景刷新”机制，是优化还是“DDoS”？一次社区事件引发的深度复盘</title><link>https://tonybai.com/2025/09/05/go-proxy-revise-background-refresh-pacing/</link><pubDate>Fri, 05 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/05/go-proxy-revise-background-refresh-pacing/</guid><description>本文永久链接 – https://tonybai.com/2025/09/05/go-proxy-revise-background-refresh-pacing 大家好，我是Tony Bai。 2025年8月14日，Go开发者Ted Unangst发表了一篇措辞犀利的博文——《What is the go proxy even doing?》。他用服务器日志作为证据，公开质疑Go官方模块代理（p...</description></item><item><title>“简单”不是“容易”：Go开发者应该懂的5个道理</title><link>https://tonybai.com/2025/09/04/simple-is-not-easy/</link><pubDate>Thu, 04 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/04/simple-is-not-easy/</guid><description>本文永久链接 – https://tonybai.com/2025/09/04/simple-is-not-easy 大家好，我是Tony Bai。 在软件工程领域，有些演讲如同灯塔，其光芒足以穿透时间的迷雾，持续为后来者指引方向。Clojure语言的创造者Rich Hickey在2011年的Strange Loop大会上发表的“Simple Made Easy”，正是这样一例。他以一种近乎哲学家...</description></item><item><title>Gopher直通大厂，就从这第一课开始！</title><link>https://tonybai.com/2025/09/03/gopher-first-lesson-to-big-factory/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/03/gopher-first-lesson-to-big-factory/</guid><description>本文永久链接 – https://tonybai.com/2025/09/03/gopher-first-lesson-to-big-factory 大家好，我是Tony Bai。 很多计算机专业的同学们都在问：想进大厂，要先学好哪门编程语言？ 从应用广泛程度来说，学好Go语言肯定错不了！我们来看一下大厂们都用Go在做哪些开发： &amp;gt; 阿里用于基础服务、网关、容器、服务框架等开发。 &amp;gt; &amp;gt; &amp;gt; 字节...</description></item><item><title>成为更完整的 Go 工程师，从补上这堂系统编程课开始</title><link>https://tonybai.com/2025/09/01/system-programming-in-go/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/01/system-programming-in-go/</guid><description>本文永久链接 – https://tonybai.com/2025/09/01/system-programming-in-go 大家好，我是Tony Bai。 作为一名 Go 工程师，我们无疑是幸运的。这门语言为我们提供了简洁的语法、强大的并发模型和一套设计精良的标准库。我们能以极高的效率，构建出高性能的 Web 服务、数据管道和云原生应用。 我们熟练地使用 http.ListenAndServ...</description></item><item><title>从 0 到 1.5 亿 QPS：Uber 核心存储架构的十年演进与缓存设计哲学</title><link>https://tonybai.com/2025/09/01/uber-150-million-reads/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/01/uber-150-million-reads/</guid><description>本文永久链接 – https://tonybai.com/2025/09/01/uber-150-million-reads 大家好，我是Tony Bai。 在 Uber 这样体量的公司，其核心在线存储系统不仅要处理 PB 级的海量数据，还要以毫秒级的延迟响应每秒上亿次的请求。这一切是如何实现的？本文将深度整合 Uber 工程团队这几年公开发布的三篇文章，和大家一起穿越其核心存储架构的十年演进史：...</description></item><item><title>“无聊”设计的终极奥义：为什么“做可能奏效的最简单的事”是最高法则？</title><link>https://tonybai.com/2025/08/31/the-simplest-thing-that-could-possibly-work/</link><pubDate>Sun, 31 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/31/the-simplest-thing-that-could-possibly-work/</guid><description>本文永久链接 – https://tonybai.com/2025/08/31/the-simplest-thing-that-could-possibly-work 大家好，我是Tony Bai。 在我们解读了Github工程师Sean Goedecke关于“无聊即可靠”的系统设计和API设计理念之后，他再次带来了一篇精彩的的文章——《Do the simplest thing that cou...</description></item><item><title>Python简史：一个圣诞节的“私活”项目，如何改变了编程世界？</title><link>https://tonybai.com/2025/08/30/python-an-origin-story/</link><pubDate>Sat, 30 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/30/python-an-origin-story/</guid><description>本文永久链接 – https://tonybai.com/2025/08/30/python-an-origin-story 大家好，我是Tony Bai。 在编程语言的星空中，很少有哪颗星像Python一样，以如此温和而坚定的姿态，从一个不起眼的个人项目，成长为照亮地球未来的科技灯塔。如今，当我们谈论数据科学、人工智能时，Python几乎是绕不开的默认选项。但这一切的起点，竟源于一位程序员在阿姆...</description></item><item><title>无聊的API是最好的API：从系统设计到接口契约的九条法则</title><link>https://tonybai.com/2025/08/29/good-api-design/</link><pubDate>Fri, 29 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/29/good-api-design/</guid><description>本文永久链接 – https://tonybai.com/2025/08/29/good-api-design 大家好，我是Tony Bai。 在解读《Everything I know about good system design》一文时，我们曾提炼出一个核心观点：“无聊即可靠”。这个看似反直觉的法则，在追求创新与复杂的软件工程世界里，如同一股清流。现在，这个“无聊”哲学将从宏观的系统设计，...</description></item><item><title>我的 Gopher “长期主义”：从《Go语言第一课》新书说起</title><link>https://tonybai.com/2025/08/28/go-primer-published/</link><pubDate>Thu, 28 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/28/go-primer-published/</guid><description>本文永久链接 – https://tonybai.com/2025/08/28/go-primer-published 大家好，我是Tony Bai。 前不久，在知乎上看到一个关于 Go 社区的帖子，其中一条评论让我感慨良多： &amp;gt; **“GopherChina 都没了，国内还有几人坚持？Tony Bai好像还在更新”** 短短一句话，道尽了社区的变迁与坚持的不易。这句来自读者的回答，让我内心欣慰，...</description></item><item><title>Go语言的“灵魂拷问”：接口只关乎行为，还是也应拥抱数据？</title><link>https://tonybai.com/2025/08/27/go-interface-embrace-data/</link><pubDate>Wed, 27 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/27/go-interface-embrace-data/</guid><description>本文永久链接 – https://tonybai.com/2025/08/27/go-interface-embrace-data 大家好，我是Tony Bai。 在 Go 语言的世界里，接口（interface）一直被视为其设计哲学的基石之一——它只关心一个类型能**做什么**（行为），而不关心它**是什么**（结构）。这种基于方法集的鸭子类型，赋予了 Go 独一无二的灵活性和解耦能力。然而，随...</description></item><item><title>告别性能猜谜：一份Go并发操作的成本层级清单</title><link>https://tonybai.com/2025/08/26/go-concurrency-cost-hierarchy/</link><pubDate>Tue, 26 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/26/go-concurrency-cost-hierarchy/</guid><description>本文永久链接 – https://tonybai.com/2025/08/26/go-concurrency-cost-hierarchy 大家好，我是Tony Bai。 Go语言的并发模型以其简洁直观著称，但这种简单性背后，隐藏着一个跨越五个数量级的巨大性能鸿沟。当你的高并发服务遭遇性能瓶颈时，你是否也曾陷入“性能猜谜”的困境：是sync.Mutex太慢？是atomic操作不够快？还是某个cha...</description></item><item><title>无聊即可靠：一位资深工程师的九条系统设计法则</title><link>https://tonybai.com/2025/08/26/good-system-design/</link><pubDate>Tue, 26 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/26/good-system-design/</guid><description>本文永久链接 – https://tonybai.com/2025/08/26/good-system-design 大家好，我是Tony Bai。 在技术圈，我们常常被各种“炫技式”的系统设计建议所包围。从入门级的“你一定没听说过队列吧？”到专家级的“在数据库里存布尔值简直是灾难”，这些建议要么过于肤浅，要么过于精巧，往往脱离了大多数工程实践的真实上下文。就连《设计数据密集型应用》这样的经典之作...</description></item><item><title>Go的“七宗罪”：一篇“Go依然不够好”如何引爆社区激辩？</title><link>https://tonybai.com/2025/08/25/go-is-still-not-good/</link><pubDate>Mon, 25 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/25/go-is-still-not-good/</guid><description>本文永久链接 – https://tonybai.com/2025/08/25/go-is-still-not-good 大家好，我是Tony Bai。 在技术圈，平静的湖面下往往暗流涌动。对于Go语言社区而言，这股潜藏已久的暗流，被近期的一篇名为《Go is still not good》的博文彻底引爆。作者Thomas Habets，一位自称拥有超过十年Go使用经验的资深开发者，在他的这篇文章...</description></item><item><title>泛型重塑 Go 错误检查：errors.As 的下一站 AsA？</title><link>https://tonybai.com/2025/08/23/proposal-errors-asa/</link><pubDate>Sat, 23 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/23/proposal-errors-asa/</guid><description>本文永久链接 – https://tonybai.com/2025/08/23/proposal-errors-asa 大家好，我是Tony Bai。 自 Go 1.13 引入 errors.Is 和 errors.As 以来，Go 语言的错误处理进入了一个结构化、可追溯的新时代。然而，errors.As 的使用方式，对于追求代码简洁与优雅的 Gopher 而言，始终存在一丝“不和谐”：开发者必须...</description></item><item><title>解锁 CPU 终极性能：Go 原生 SIMD 包预览版初探</title><link>https://tonybai.com/2025/08/22/go-simd-package-preview/</link><pubDate>Fri, 22 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/22/go-simd-package-preview/</guid><description>本文永久链接 – https://tonybai.com/2025/08/22/go-simd-package-preview 大家好，我是Tony Bai。 多年以来，对于追求极致性能的 Go 开发者而言，心中始终有一个“痛点”：当算法需要压榨 CPU 的最后一点性能时，唯一的选择便是“下降”到手写汇编，这让利用 SIMD (Single Instruction, Multiple Data) ...</description></item><item><title>哲学家与工程师：为何 Rust 和 Go 的“官方之声”如此不同？</title><link>https://tonybai.com/2025/08/21/go-rust-official-voices/</link><pubDate>Thu, 21 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/21/go-rust-official-voices/</guid><description>本文永久链接 – https://tonybai.com/2025/08/21/go-rust-official-voices 大家好，我是Tony Bai。 最近，在阅读 Rust 核心团队负责人 Niko Matsakis 庆祝十周年的系列博文时，我注意到了一个有趣的现象。我下意识地将他的文字，与我长期关注的 Go语言之父Rob Pike以及Go 团队前技术负责人 Russ Cox 的文章放在...</description></item><item><title>日志查询从 70 小时到 10 秒？VictoriaMetrics 联创揭示 PB 级日志处理性能奥秘</title><link>https://tonybai.com/2025/08/20/large-scale-logging-made-easy/</link><pubDate>Wed, 20 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/20/large-scale-logging-made-easy/</guid><description>本文永久链接 – https://tonybai.com/2025/08/20/large-scale-logging-made-easy 当日志规模达到 PB 级别，传统的关系型数据库（如 PostgreSQL 或 MySQL）往往力不从心，不仅性能急剧下降，运维成本也变得难以承受。在 FrOSCon 2025 大会上，VictoriaMetrics 的联合创始人兼CTO、fasthttp作者、...</description></item><item><title>Rust 2025 深度解读：在十周年里程碑上，Niko Matsakis 如何擘画下一个时代的灵魂与蓝图？</title><link>https://tonybai.com/2025/08/19/rust-in-2025/</link><pubDate>Tue, 19 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/19/rust-in-2025/</guid><description>本文永久链接 – https://tonybai.com/2025/08/18/rust-in-2025 大家好，我是Tony Bai。 2025 年 5 月 15 日，Rust 语言迎来了其 1.0 版本发布的十周年纪念日。这是一个充满里程碑意义的时刻，不仅是对Rust过去十年辉煌成就的回顾，更是展望未来的关键节点。值此之际，Rust 语言团队负责人、核心开发者 Niko Matsakis 发表...</description></item><item><title>收藏级指南：Gopher AI入局路线图</title><link>https://tonybai.com/2025/08/18/ai-app-dev-guide-for-gopher/</link><pubDate>Mon, 18 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/18/ai-app-dev-guide-for-gopher/</guid><description>本文永久链接 – https://tonybai.com/2025/08/18/ai-app-dev-guide-for-gopher 大家好，我是Tony Bai。 过去两年，人工智能（AI）以前所未有的姿态，从学术的象牙塔走入了软件工程的每一个角落。以大语言模型（LLM）为代表的生成式AI以及智能体AI，正在重塑我们开发、交付甚至构思软件的方式。 作为一个 Gopher，我们习惯于在云原生、微...</description></item><item><title>从 Rob Pike 的提案到社区共识：Go 或将通过 new(v) 彻底解决指针初始化难题</title><link>https://tonybai.com/2025/08/17/create-pointer-to-simple-types/</link><pubDate>Sun, 17 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/17/create-pointer-to-simple-types/</guid><description>本文永久链接 – https://tonybai.com/2025/08/17/create-pointer-to-simple-types 大家好，我是Tony Bai。 在 Go 中创建一个指向基本类型（如 int 或 string）的指针，为何比创建一个指向结构体的指针更繁琐？这个长期存在的“人体工程学”问题，由 Go 语言的共同创造者之一 **Rob Pike** 在提案 #45624 中...</description></item><item><title>内核之外的冰山：为什么说从零写一个操作系统已几乎不可能？</title><link>https://tonybai.com/2025/08/16/brand-new-os-impossible/</link><pubDate>Sat, 16 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/16/brand-new-os-impossible/</guid><description>内核之外的冰山：为什么说从零写一个操作系统已几乎不可能？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列...</description></item><item><title>Go 1.25中值得关注的几个变化</title><link>https://tonybai.com/2025/08/15/some-changes-in-go-1-25/</link><pubDate>Fri, 15 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/15/some-changes-in-go-1-25/</guid><description>本文永久链接 – 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 版本起，这一系列...</description></item><item><title>AI正在重塑编程语言格局：Rust、Python 和 TypeScript 真是最终赢家吗？</title><link>https://tonybai.com/2025/08/14/rs-py-ts-trifecta/</link><pubDate>Thu, 14 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/14/rs-py-ts-trifecta/</guid><description>本文永久链接 – https://tonybai.com/2025/08/14/rs-py-ts-trifecta 大家好，我是Tony Bai。 在 AI 浪潮席卷而来的今天，一个深刻的问题正摆在所有开发者面前：我们手中的编程语言，将如何被这股力量重塑？我们未来的技能投资，应该押注在哪里？ 最近，Rust 核心团队的 Niko Matsakis，在他的一篇博文中给出了一个大胆的预测：**Rust...</description></item><item><title>二进制的“魔术”：每个 Go 程序员都应掌握的位操作艺术</title><link>https://tonybai.com/2025/08/13/bit-manipulation-in-go/</link><pubDate>Wed, 13 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/13/bit-manipulation-in-go/</guid><description>二进制的“魔术”：每个 Go 程序员都应掌握的位操作艺术 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列...</description></item><item><title>Go 的“身份危机”：当新 Gopher 试图将它变成他们最爱的语言</title><link>https://tonybai.com/2025/08/12/go-identity-crisis/</link><pubDate>Tue, 12 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/12/go-identity-crisis/</guid><description>本文永久链接 – https://tonybai.com/2025/08/12/go-identity-crisis 大家好，我是Tony Bai。 最近，在国外的 Go 社区（Reddit r/golang）上，一个帖子引发了我的深思。发帖者是一位资深的 Gopher，他用一种略带困惑的语气写道： &amp;gt; “我感受到来自新 Go 开发者的巨大压力，他们想把 Go 变成他们最喜欢的语言。” 他列出了一...</description></item><item><title>为何Go语言迟迟未能拥抱 io_uring？揭秘集成的三大核心困境</title><link>https://tonybai.com/2025/08/11/why-go-not-embrace-iouring/</link><pubDate>Mon, 11 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/11/why-go-not-embrace-iouring/</guid><description>本文永久链接 – https://tonybai.com/2025/08/11/why-go-not-embrace-iouring 大家好，我是Tony Bai。 在 Linux I/O 的世界里，io_uring 如同划破夜空的流星，被誉为“终极接口”。它承诺以无与伦比的效率，为数据密集型应用带来革命性的性能提升。正如高性能数据库 ScyllaDB 在其官方博文中所展示的，io_uring 能...</description></item><item><title>Go json/v2实战：告别内存爆炸，掌握真流式Marshal和Unmarshal</title><link>https://tonybai.com/2025/08/09/true-streaming-support-in-jsonv2/</link><pubDate>Sat, 09 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/09/true-streaming-support-in-jsonv2/</guid><description>本文永久链接 – https://tonybai.com/2025/08/09/true-streaming-support-in-jsonv2 大家好，我是Tony Bai。 Go 开发者长期以来面临一个痛点：标准库 encoding/json 在处理大型 JSON 数据时，即使使用 Encoder/Decoder，也因其内部的全量缓冲机制而导致巨大的内存开销。备受期待的 encoding/js...</description></item><item><title>想用Go复刻“Claude Code”？那你得先补上TUI这一课</title><link>https://tonybai.com/2025/08/08/go-tui-primer/</link><pubDate>Fri, 08 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/08/go-tui-primer/</guid><description>想用Go复刻“Claude Code”？那你得先补上TUI这一课 - 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/2025/08/07/fork-go-module/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/07/fork-go-module/</guid><description>本文永久链接 – https://tonybai.com/2025/08/07/fork-go-module 大家好，我是Tony Bai。 今天，我想和你聊一个几乎每个 Go 开发者都经历过的场景，一种我们圈内人“只可意会，不可言传”的痛苦。我称之为 Go 模块的**“分叉之痛” (The Forking Pain)**。 故事通常是这样开始的：你在一个项目中，依赖了一个第三方库。某天，你发现这...</description></item><item><title>Go语言正在成为“老旧”生态的“新引擎”？从 FrankenPHP 和新版 TypeScript 编译器谈起</title><link>https://tonybai.com/2025/08/06/go-new-engine-of-old-languages/</link><pubDate>Wed, 06 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/06/go-new-engine-of-old-languages/</guid><description>Go语言正在成为“老旧”生态的“新引擎”？从 FrankenPHP 和新版 TypeScript 编译器谈起 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进...</description></item><item><title>从“锁”到“channel”：开启你的Go并发心智模型转变之旅</title><link>https://tonybai.com/2025/08/05/go-concurrency-mental-model/</link><pubDate>Tue, 05 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/05/go-concurrency-mental-model/</guid><description>从“锁”到“channel”：开启你的Go并发心智模型转变之旅 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * ...</description></item><item><title>持续性能分析正在成为继Metrics、Logs 和 Traces之后，可观测性的“第四大支柱”</title><link>https://tonybai.com/2025/08/04/continuous-profiling-fourth-pillar/</link><pubDate>Mon, 04 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/04/continuous-profiling-fourth-pillar/</guid><description>本文永久链接 – https://tonybai.com/2025/08/04/continuous-profiling-fourth-pillar 大家好，我是Tony Bai。 凌晨两点，运维平台的警报刺破了宁静。P99 延迟飙升，用户服务几近瘫痪。作为 Go 工程师，你的脑海中闪过无数可能：是数据库慢了？是下游服务超时？还是某个新上线的 goroutine 泄露了？你急忙打开监控面板，**M...</description></item><item><title>Go官方 HTTP/3 实现终迎曙光：x/net/http3 提案启动，QUIC 基础已就位</title><link>https://tonybai.com/2025/08/02/proposal-http3/</link><pubDate>Sat, 02 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/02/proposal-http3/</guid><description>本文永久链接 – https://tonybai.com/2025/08/02/proposal-http3 大家好，我是Tony Bai。 在社区长达数年的热切期盼之后，Go 官方终于迈出了支持 HTTP/3 的关键一步。一项编号为#70914的新提案，正式建议在 x/net/http3 中添加一个实验性的 HTTP/3 实现。这一进展建立在另一项更基础的提案 #58547(x/net/quic...</description></item><item><title>purego 标签到底是什么意思？一场长达六年的社区辩论终于有了定论</title><link>https://tonybai.com/2025/08/01/proposal-purego/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/01/proposal-purego/</guid><description>purego 标签到底是什么意思？一场长达六年的社区辩论终于有了定论 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏...</description></item><item><title>你的 AI Agent 为何总“犯傻”？构建生产级 Agent 所需的6大工程原则</title><link>https://tonybai.com/2025/07/30/six-principles-production-ai-agents/</link><pubDate>Wed, 30 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/30/six-principles-production-ai-agents/</guid><description>本文永久链接 – https://tonybai.com/2025/07/30/six-principles-production-ai-agents 大家好，我是Tony Bai。 随着 AI Agent 技术的兴起，许多开发者都投入到构建智能体的浪潮中，但很快就会发现，让 Agent 稳定、可靠地工作远非想象中容易。它们时而产生幻觉，时而偏离轨道，时而做出一些令人费解的“愚蠢”行为。最近，来自...</description></item><item><title>slog 如何同时输出到控制台和文件？MultiHandler 提案或将终结重复造轮子</title><link>https://tonybai.com/2025/07/29/slog-multihandler/</link><pubDate>Tue, 29 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/29/slog-multihandler/</guid><description>本文永久链接 – https://tonybai.com/2025/07/29/slog-multihandler 大家好，我是Tony Bai。 自 log/slog 在 Go 1.21 中引入以来，一个常见的需求始终困扰着开发者：如何将日志同时发送到多个目的地，并为每个目的地设置不同的日志级别？尽管社区已涌现出 samber/slog-multi 等优秀的三方库，但关于“标准库是否应原生支持”...</description></item><item><title>Go fix 命令将迎“重生”：移除过时功能，为集成现代化代码分析器铺平道路</title><link>https://tonybai.com/2025/07/28/go-fix-reborn/</link><pubDate>Mon, 28 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/28/go-fix-reborn/</guid><description>本文永久链接 – https://tonybai.com/2025/07/28/go-fix-reborn 大家好，我是Tony Bai。 Go 语言工具链中的元老级命令 go fix 即将迎来其生命周期中最重要的转折点。一项编号为 **#73605** 的新提案建议移除 go fix 当前的全部功能，使其暂时成为一个空命令。这一看似“激进”的举动，实则是为一个更宏大的目标铺路：将 go fix ...</description></item><item><title>Prometheus 联合创始人的警告：在使用 OpenTelemetry 生成 Metrics 前请三思！</title><link>https://tonybai.com/2025/07/27/native-prometheus-instrumentation-over-opentelemetry/</link><pubDate>Sun, 27 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/27/native-prometheus-instrumentation-over-opentelemetry/</guid><description>本文永久链接 – https://tonybai.com/2025/07/27/native-prometheus-instrumentation-over-opentelemetry 大家好，我是Tony Bai。 在云原生可观测性的世界里，OpenTelemetry (OTel) 正如日中天。它被誉为“可观测性的未来”，承诺用一个统一的标准，终结 Metrics、Traces、Logs 各自为...</description></item><item><title>为什么 VictoriaMetrics 正在替换 Prometheus？一次大规模可观测性迁移实录</title><link>https://tonybai.com/2025/07/26/migrate-from-prometheus-to-victoriametrics/</link><pubDate>Sat, 26 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/26/migrate-from-prometheus-to-victoriametrics/</guid><description>本文永久链接 – https://tonybai.com/2025/07/26/migrate-from-prometheus-to-victoriametrics 大家好，我是Tony Bai。 在云原生可观测性的领域，Prometheus 无疑是王者。凭借其简洁的模型、强大的 PromQL 和活跃的社区，Prometheus 几乎定义了现代监控的行业标准。许多顶尖技术公司，包括 PingCAP...</description></item><item><title>Go vs. Rust vs. C++：从语言规范长度看三种不同的“复杂性”</title><link>https://tonybai.com/2025/07/25/go-vs-rust-vs-cpp-in-complexity/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/25/go-vs-rust-vs-cpp-in-complexity/</guid><description>Go vs. Rust vs. C++：从语言规范长度看三种不同的“复杂性” - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的...</description></item><item><title>Goroutine泄漏防不胜防？Go GC或将可以检测“部分死锁”，已在Uber生产环境验证</title><link>https://tonybai.com/2025/07/24/deadlock-detection-by-gc/</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/24/deadlock-detection-by-gc/</guid><description>本文永久链接 – https://tonybai.com/2025/07/24/deadlock-detection-by-gc 大家好，我是Tony Bai。 Go 语言的 go 关键字让并发编程变得前所未有的简单，但也带来了新的挑战。当所有 goroutine 都陷入阻塞时，Go runtime 会报告一个“全局死锁”并终止程序。然而，更常见也更隐蔽的是**部分死锁**：一部分 gorouti...</description></item><item><title>美国运通复盘 Go 语言实践：从依赖管理到并发模型，七大经验教训全解析</title><link>https://tonybai.com/2025/07/24/go-at-american-express-today/</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/24/go-at-american-express-today/</guid><description>美国运通复盘 Go 语言实践：从依赖管理到并发模型，七大经验教训全解析 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专...</description></item><item><title>Uber性能优化实践：如何用 GenAI 将 Go 代码调优从数周缩短至数小时？</title><link>https://tonybai.com/2025/07/23/uber-perfinsights/</link><pubDate>Wed, 23 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/23/uber-perfinsights/</guid><description>本文永久链接 – https://tonybai.com/2025/07/23/uber-perfinsights 大家好，我是Tony Bai。 对于大多数团队而言，Go 服务的性能优化是一项昂贵且充满挑战的任务。它通常需要资深的工程师花费数天甚至数周的时间进行 profiling、基准测试和代码分析，这在快节奏的开发周期中往往难以持续。Uber 面临着同样的问题，其 Top 10 的 Go 服...</description></item><item><title>不止是云原生：为什么 Go 的热度在持续上升？来自社区的真实声音</title><link>https://tonybai.com/2025/07/23/go-surge-in-popularity/</link><pubDate>Wed, 23 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/23/go-surge-in-popularity/</guid><description>不止是云原生：为什么 Go 的热度在持续上升？来自社区的真实声音 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 *...</description></item><item><title>Go 1.24用户报告：Datadog如何借助 Swiss Tables版map节省数百 GB 内存？</title><link>https://tonybai.com/2025/07/22/go-swiss-table-map-user-report/</link><pubDate>Tue, 22 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/22/go-swiss-table-map-user-report/</guid><description>本文永久链接 – https://tonybai.com/2025/07/22/go-swiss-table-map-user-report 大家好，我是Tony Bai。 Datadog 的故事始于一次对Go 1.24内存回归问题的追踪。在与 Go 社区协作修复了该问题后，他们在部署修复版本的过程中，观察到了一个意料之外的现象：在高流量环境中，内存使用不仅恢复了正常，甚至**大幅下降**。一个名...</description></item><item><title>Rust 的安全神话？数据库 CEO 为何在关键系统中仍选 C++</title><link>https://tonybai.com/2025/07/22/cedardb-choose-cpp-rather-than-rust/</link><pubDate>Tue, 22 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/22/cedardb-choose-cpp-rather-than-rust/</guid><description>Rust 的安全神话？数据库 CEO 为何在关键系统中仍选 C++ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 ...</description></item><item><title>解密 Go 安全核心：7 步掌握现代密码学工程</title><link>https://tonybai.com/2025/07/21/go-crypto-101/</link><pubDate>Mon, 21 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/21/go-crypto-101/</guid><description>解密 Go 安全核心：7 步掌握现代密码学工程 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 解密 ...</description></item><item><title>HashiCorp创始人Mitchell Hashimoto 的 Agentic Engineering 实战心法</title><link>https://tonybai.com/2025/07/20/mitchell-hashimoto-agentic-engineering/</link><pubDate>Sun, 20 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/20/mitchell-hashimoto-agentic-engineering/</guid><description>本文永久链接 – https://tonybai.com/2025/07/20/mitchell-hashimoto-agentic-engineering 大家好，我是Tony Bai。 在云计算Infra和云原生工程领域，Mitchell Hashimoto 是一个如雷贯耳的名字。作为 HashiCorp 的创始人，他一手打造了 Terraform、Vagrant、Consul 等一系列定义了...</description></item><item><title>Go 比 Python 更懂“Python 之禅”？</title><link>https://tonybai.com/2025/07/19/go-understand-the-zen-of-python-better-than-python/</link><pubDate>Sat, 19 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/19/go-understand-the-zen-of-python-better-than-python/</guid><description>本文永久链接 – https://tonybai.com/2025/07/19/go-understand-the-zen-of-python-better-than-python 大家好，我是Tony Bai。 最近，在国外的 Go 语言社区（Reddit r/golang）上，一个帖子引发了热烈的讨论。标题颇具“引战”意味：“Go似乎比Python更好地实现了Python之禅”。 这听起来像个...</description></item><item><title>一张图读懂Go的生存之道：当“面条代码”来敲门</title><link>https://tonybai.com/2025/07/16/when-spaghetti-code-knocks/</link><pubDate>Wed, 16 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/16/when-spaghetti-code-knocks/</guid><description>本文永久链接 – https://tonybai.com/2025/07/16/when-spaghetti-code-knocks 大家好，我是Tony Bai。 最近，在网上看到一张关于编程语言的 Meme 图，它以一种黑色幽默的方式，精准地描绘了我们软件开发中一个永恒的敌人，以及 Go 语言那与众不同的应对之道。 在这张图中，一个名为“面条代码 (Spaghetti Code)”的恐怖死神，...</description></item><item><title>Go 的“无聊”超能力：为什么“选项更少”反而让你更快？</title><link>https://tonybai.com/2025/07/12/insanely-productive-in-go/</link><pubDate>Sat, 12 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/12/insanely-productive-in-go/</guid><description>Go 的“无聊”超能力：为什么“选项更少”反而让你更快？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列...</description></item><item><title>Go pprof 迎来重大革新：v2 提案详解，告别默认注册，拥抱飞行记录器</title><link>https://tonybai.com/2025/07/11/net-http-pprof-v2/</link><pubDate>Fri, 11 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/11/net-http-pprof-v2/</guid><description>本文永久链接 – https://tonybai.com/2025/07/11/net-http-pprof-v2 大家好，我是Tony Bai。 Go 语言的性能诊断利器 net/http/pprof 即将迎来一次意义深远的变革。一项编号为 **#74544** 的新提案建议引入一个全新的 net/http/pprof/v2 包，旨在从根本上解决当前版本因“默认注册”行为带来的安全隐患。该提案不...</description></item><item><title>上手MCP官方Go SDK：一份面向实战的入门指南</title><link>https://tonybai.com/2025/07/10/mcp-official-go-sdk/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/10/mcp-official-go-sdk/</guid><description>本文永久链接 – https://tonybai.com/2025/07/10/mcp-official-go-sdk 大家好，我是Tony Bai。 随着大型语言模型（LLM）的能力边界不断扩展，“function calling”或“tool use”已成为释放其潜力的关键。MCP（Model Context Protocol）正是为此而生，它定义了一套标准的、与模型无关的通信规范，使得任何应...</description></item><item><title>停止构建AI Agent！这里有5个更简单的LLM工作流模式，能解决90%的问题</title><link>https://tonybai.com/2025/07/10/stop-building-ai-agents/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/10/stop-building-ai-agents/</guid><description>本文永久链接 – https://tonybai.com/2025/07/10/stop-building-ai-agents 大家好，我是Tony Bai。 如果你正在开发 AI 应用，你很可能听说过、尝试过，甚至正在挣扎于构建一个“AI Agent”。 我们都看过那些令人心潮澎湃的 Demo：一个 AI Agent 被赋予一个目标，然后它就能自主地规划、调用工具、浏览网页、编写代码，最终完成任...</description></item><item><title>你的命令行，即将迎来一场“AI 革命”</title><link>https://tonybai.com/2025/07/09/gemini-cli-starting-guide/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/09/gemini-cli-starting-guide/</guid><description>你的命令行，即将迎来一场“AI 革命” - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * 文章列表 你的命令行，即...</description></item><item><title>告别字符串魔法：Go 迎来类型化 Struct Tag 提案，编译期安全触手可及？</title><link>https://tonybai.com/2025/07/08/typed-struct-tags/</link><pubDate>Tue, 08 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/08/typed-struct-tags/</guid><description>本文永久链接 – https://tonybai.com/2025/07/08/typed-struct-tags 大家好，我是Tony Bai。 Go 语言的结构体标签（Struct Tag）自诞生以来，一直是其强大反射能力的重要组成部分，广泛应用于 encoding/json、ORM、配置管理等领域。然而，它也一直是一个“美丽的缺憾”：这些标签本质上是无类型的字符串，依赖于各种“微语言”和“纳...</description></item><item><title>“先发布，后审核”：Go模块生态的阿喀琉斯之踵？</title><link>https://tonybai.com/2025/07/07/go-module-supply-chain-attack-case/</link><pubDate>Mon, 07 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/07/go-module-supply-chain-attack-case/</guid><description>本文永久链接 – https://tonybai.com/2025/07/07/go-module-supply-chain-attack-case 大家好，我是Tony Bai。 最近，GitLab的安全研究团队披露了一起极其巧妙的供应链攻击，目标直指 Go 社区中一个流行的 MongoDB 模块。这个案例本身已经足够令人警醒，但如果我们拨开攻击手法的层层迷雾，会发现其背后暴露出的，可能是整个开...</description></item><item><title>读懂Go的设计哲学：为什么说它是“恰到好处”的80/20语言？</title><link>https://tonybai.com/2025/07/05/go-is-8020-language/</link><pubDate>Sat, 05 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/05/go-is-8020-language/</guid><description>读懂Go的设计哲学：为什么说它是“恰到好处”的80/20语言？ - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏 * ...</description></item><item><title>拥抱Agentic Coding：软件开发的未来</title><link>https://tonybai.com/2025/07/05/agentic-coding-is-the-future/</link><pubDate>Sat, 05 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/05/agentic-coding-is-the-future/</guid><description>本文永久链接 – https://tonybai.com/2025/07/05/agentic-coding-is-the-future 大家好，我是Tony Bai。 软件开发的范式正在经历一场深刻的变革。从 GitHub Copilot 的惊艳亮相，到各种IDE中集成的代码生成功能，我们已经习惯了 AI 在编码过程中的“自动补全”。但这仅仅是序幕。如今，一种更强大、更具颠覆性的模式正在兴起，它...</description></item><item><title>Twitch工程师的Go进阶之路：为何你写的Go代码，总感觉“不对劲”？</title><link>https://tonybai.com/2025/07/04/everything-i-did-to-become-an-expert-in-golang/</link><pubDate>Fri, 04 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/04/everything-i-did-to-become-an-expert-in-golang/</guid><description>本文永久链接 – https://tonybai.com/2025/07/04/everything-i-did-to-become-an-expert-in-golang 大家好，我是Tony Bai。 你是否也有过这样的时刻？ 你已经用 Go 写了不少代码，项目也能跑起来，但内心深处总有一种挥之不去的“别扭感”。你写的 Go 代码，看起来更像是“带有 Go 语法的 Java/Python”，充...</description></item><item><title>Go考古：创始人亲述Go语言的“创世纪”</title><link>https://tonybai.com/2025/07/03/meet-the-go-team-2012/</link><pubDate>Thu, 03 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/03/meet-the-go-team-2012/</guid><description>本文永久链接 – https://tonybai.com/2025/07/03/meet-the-go-team-2012 大家好，我是Tony Bai。 2012 年，Google I/O 大会的舞台上，一个刚刚发布 1.0 版本的编程语言团队，正襟危坐。他们面对着全球开发者的审视和提问，这其中，就有三位图灵奖得主级别的传奇人物：Ken Thompson、Rob Pike 和 Robert Gr...</description></item><item><title>特斯拉首席工程师的忠告：用“单向门 vs 双向门”决策，看清分布式系统的未来</title><link>https://tonybai.com/2025/07/01/predicting-the-future-of-distributed-systems/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/01/predicting-the-future-of-distributed-systems/</guid><description>特斯拉首席工程师的忠告：用“单向门 vs 双向门”决策，看清分布式系统的未来 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进...</description></item><item><title>Go并行编程的“第一性原理”：Guy Steele 教你如何“不去想”并行</title><link>https://tonybai.com/2025/06/29/thinking-parallel-programming/</link><pubDate>Sun, 29 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/29/thinking-parallel-programming/</guid><description>Go并行编程的“第一性原理”：Guy Steele 教你如何“不去想”并行 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶...</description></item><item><title>Gopher视角：Java 开发者转向 Go 时，最需要“掰过来”的几个习惯</title><link>https://tonybai.com/2025/06/27/from-java-to-go/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/27/from-java-to-go/</guid><description>Gopher视角：Java 开发者转向 Go 时，最需要“掰过来”的几个习惯 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进...</description></item><item><title>Martin Fowler最新洞察：LLM 不止是“更高”的抽象，它正在改变编程的“本质”！</title><link>https://tonybai.com/2025/06/26/non-deterministic-abstraction/</link><pubDate>Thu, 26 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/26/non-deterministic-abstraction/</guid><description>Martin Fowler最新洞察：LLM 不止是“更高”的抽象，它正在改变编程的“本质”！ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ...</description></item><item><title>Go vs. Rust再掀波澜：Grab真实案例复盘，Gopher如何看待这场“效率与代价”之争？</title><link>https://tonybai.com/2025/06/24/grab-rewrote-go-service-in-rust/</link><pubDate>Tue, 24 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/24/grab-rewrote-go-service-in-rust/</guid><description>Go vs. Rust再掀波澜：Grab真实案例复盘，Gopher如何看待这场“效率与代价”之争？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课...</description></item><item><title>Go 解析器的“隐秘角落”：encoding/json 的安全陷阱与 JSONv2 的救赎</title><link>https://tonybai.com/2025/06/22/unexpected-security-footguns-in-go-parsers/</link><pubDate>Sun, 22 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/22/unexpected-security-footguns-in-go-parsers/</guid><description>本文永久链接 – https://tonybai.com/2025/06/22/unexpected-security-footguns-in-go-parsers 大家好，我是Tony Bai。 在 Go 语言中，标准库的 encoding/json 包无疑是我们日常打交道最多的伙伴之一。它简洁易用，性能尚可，支撑了无数 Go 应用的数据交换需求。然而，正如俗话所说，“最熟悉的地方可能藏着最深的...</description></item><item><title>Kubernetes 2.0 畅想：告别 YAML、etcd 束缚与 Helm 之痛，K8s 的下一站是什么？</title><link>https://tonybai.com/2025/06/21/kubernetes-2-0/</link><pubDate>Sat, 21 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/21/kubernetes-2-0/</guid><description>Kubernetes 2.0 畅想：告别 YAML、etcd 束缚与 Helm 之痛，K8s 的下一站是什么？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * G...</description></item><item><title>Go errors.Join：是“天赐之物”还是“潘多拉魔盒”？——深入错误聚合的适用场景与最佳实践</title><link>https://tonybai.com/2025/06/20/about-errors-join/</link><pubDate>Fri, 20 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/20/about-errors-join/</guid><description>本文永久链接 – https://tonybai.com/2025/06/20/about-errors-join 大家好，我是Tony Bai。 错误处理，无疑是软件开发中永恒的核心议题之一。Go 语言以其独特的、显式的错误处理机制（即 error 作为普通值返回）而著称，这种设计强调了对错误的关注和及时处理。自 Go 1.13 引入错误包装 (wrapping) 机制以来，Go 的错误处理能力...</description></item><item><title>RedMonk最新排行出炉：Go语言稳居Top 12，AI 冲击下 Stack Overflow 权重生变？</title><link>https://tonybai.com/2025/06/20/redmonk-index-2025-jan/</link><pubDate>Fri, 20 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/20/redmonk-index-2025-jan/</guid><description>RedMonk最新排行出炉：Go语言稳居Top 12，AI 冲击下 Stack Overflow 权重生变？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go...</description></item><item><title>当一切皆可用Python：Go这样的通用语言与DSL的未来价值何在？</title><link>https://tonybai.com/2025/06/19/language-design-in-the-era-of-llm/</link><pubDate>Thu, 19 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/19/language-design-in-the-era-of-llm/</guid><description>当一切皆可用Python：Go这样的通用语言与DSL的未来价值何在？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FA...</description></item><item><title>解构Go并发之核，与Dmitry Vyukov共探Go调度艺术</title><link>https://tonybai.com/2025/06/18/inside-goroutine-scheduler-column/</link><pubDate>Wed, 18 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/18/inside-goroutine-scheduler-column/</guid><description>解构Go并发之核，与Dmitry Vyukov共探Go调度艺术 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ *...</description></item><item><title>“骑手与大象”架构：超越微服务与单体之争的务实之道？</title><link>https://tonybai.com/2025/06/17/rider-elephant-arch/</link><pubDate>Tue, 17 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/17/rider-elephant-arch/</guid><description>“骑手与大象”架构：超越微服务与单体之争的务实之道？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 ...</description></item><item><title>GCP大面积故障，Go语言是“元凶”还是“背锅侠”？</title><link>https://tonybai.com/2025/06/16/go-avoid-critical-incident/</link><pubDate>Mon, 16 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/16/go-avoid-critical-incident/</guid><description>GCP大面积故障，Go语言是“元凶”还是“背锅侠”？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 ...</description></item><item><title>Go还是Rust？2025年技术选型之辩</title><link>https://tonybai.com/2025/06/15/rust-vs-go-2025/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/15/rust-vs-go-2025/</guid><description>Go还是Rust？2025年技术选型之辩 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 文章列表...</description></item><item><title>Go 1.25新特性前瞻：GC提速，容器更“懂”Go，json有v2了！</title><link>https://tonybai.com/2025/06/14/go-1-25-foresight/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/14/go-1-25-foresight/</guid><description>Go 1.25新特性前瞻：GC提速，容器更“懂”Go，json有v2了！ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课...</description></item><item><title>爽就完了！Go语言的“简单之美”为何让开发者直呼过瘾？</title><link>https://tonybai.com/2025/06/12/grog-brain-heaven/</link><pubDate>Thu, 12 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/12/grog-brain-heaven/</guid><description>爽就完了！Go语言的“简单之美”为何让开发者直呼过瘾？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我...</description></item><item><title>告别手写汇编：Go官方提出原生SIMD支持，高性能计算将迎来巨变</title><link>https://tonybai.com/2025/06/09/go-simd-intrinsics/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/09/go-simd-intrinsics/</guid><description>告别手写汇编：Go官方提出原生SIMD支持，高性能计算将迎来巨变 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ ...</description></item><item><title>“Rustacean”胚胎 vs “Gopher”胚胎：假如用技术栈测“人格”，你会是哪一款？</title><link>https://tonybai.com/2025/06/07/nucleus-embryo/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/07/nucleus-embryo/</guid><description>“Rustacean”胚胎 vs “Gopher”胚胎：假如用技术栈测“人格”，你会是哪一款？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FA...</description></item><item><title>千呼万唤始出来？Go 1.25解决Git仓库子目录作为模块根路径难题</title><link>https://tonybai.com/2025/06/07/allow-serving-module-under-subdir/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/07/allow-serving-module-under-subdir/</guid><description>千呼万唤始出来？Go 1.25解决Git仓库子目录作为模块根路径难题 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FA...</description></item><item><title>Go项目该拥抱Monorepo吗？Google经验、etcd模式及白盒交付场景下的深度剖析</title><link>https://tonybai.com/2025/06/06/go-monorepo/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/06/go-monorepo/</guid><description>Go项目该拥抱Monorepo吗？Google经验、etcd模式及白盒交付场景下的深度剖析 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ ...</description></item><item><title>Go 错误处理语法之争尘埃落定？Go 团队为何十五年探索后仍选择“不”</title><link>https://tonybai.com/2025/06/04/error-syntax/</link><pubDate>Wed, 04 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/04/error-syntax/</guid><description>Go 错误处理语法之争尘埃落定？Go 团队为何十五年探索后仍选择“不” - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课F...</description></item><item><title>AI 编码工具“真香”还是“智商税”？一位资深码农的“挑衅”与Go开发者的反思</title><link>https://tonybai.com/2025/06/03/provocation-about-ai-assisted-programming/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/03/provocation-about-ai-assisted-programming/</guid><description>AI 编码工具“真香”还是“智商税”？一位资深码农的“挑衅”与Go开发者的反思 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言...</description></item><item><title>Go的简洁性之辩：轻量级匿名函数提案为何七年悬而未决？</title><link>https://tonybai.com/2025/06/03/lightweight-anonymous-func-syntax/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/03/lightweight-anonymous-func-syntax/</guid><description>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/2025/05/31/six-smells-in-go/</link><pubDate>Sat, 31 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/31/six-smells-in-go/</guid><description>本文永久链接 – https://tonybai.com/2025/05/31/six-smells-in-go 大家好，我是Tony Bai。 在日常的代码审查 (Code Review) 和线上问题复盘中，我经常会遇到一些看似不起眼，却可能埋下巨大隐患的 Go 代码问题。这些“编码坏味道”轻则导致逻辑混乱、性能下降，重则引发数据不一致、系统崩溃，甚至让团队成员在深夜被告警声惊醒，苦不堪言。 今...</description></item><item><title>当Gopher拥有了“Go语言女友”：一张图带你读懂Go的那些“可爱”特性</title><link>https://tonybai.com/2025/05/30/gopher-girlfriend/</link><pubDate>Fri, 30 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/30/gopher-girlfriend/</guid><description>当Gopher拥有了“Go语言女友”：一张图带你读懂Go的那些“可爱”特性 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶...</description></item><item><title>Go x/exp/xiter提案搁浅背后：社区的选择与深度思考</title><link>https://tonybai.com/2025/05/29/xiter-declined/</link><pubDate>Thu, 29 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/29/xiter-declined/</guid><description>Go x/exp/xiter提案搁浅背后：社区的选择与深度思考 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ *...</description></item><item><title>Google I/O 2025 Go 语言进展：生产力、生产就绪与 AI 赋能</title><link>https://tonybai.com/2025/05/25/go-at-googleio-2025/</link><pubDate>Sun, 25 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/25/go-at-googleio-2025/</guid><description>Google I/O 2025 Go 语言进展：生产力、生产就绪与 AI 赋能 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言...</description></item><item><title>API设计的“Go境界”：Go团队设计MCP SDK过程中的取舍与思考</title><link>https://tonybai.com/2025/05/23/go-api-design-mcp-sdk/</link><pubDate>Fri, 23 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/23/go-api-design-mcp-sdk/</guid><description>本文永久链接 – https://tonybai.com/2025/05/23/go-api-design-mcp-sdk 大家好，我是 Tony Bai。 作为开发者，我们每天都在与 API 打交道——调用它们，设计它们，有时也会为糟糕的 API 设计而头痛不已。一个优秀的 API，如同一位技艺精湛的向导，能清晰、高效地引领我们通往复杂功能的彼岸；而一个蹩脚的 API，则可能像一座布满陷阱的迷宫...</description></item><item><title>Go工具链进化：go.mod新增ignore指令，破解混合项目构建难题</title><link>https://tonybai.com/2025/05/22/go-mod-ignore-directive/</link><pubDate>Thu, 22 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/22/go-mod-ignore-directive/</guid><description>Go工具链进化：go.mod新增ignore指令，破解混合项目构建难题 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课F...</description></item><item><title>透视软件供应链安全：SBOM标准解读与Go项目生成指南</title><link>https://tonybai.com/2025/05/22/go-sbom-practice/</link><pubDate>Thu, 22 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/22/go-sbom-practice/</guid><description>本文永久链接 – https://tonybai.com/2025/05/22/go-sbom-practice 大家好，我是Tony Bai。 近年来，软件供应链安全事件频发，从 SolarWinds 到 Log4Shell，每一次都给业界敲响了警钟。在这样的背景下，软件物料清单 (SBOM, Software Bill of Materials) 的重要性日益凸显。无论是甲方爸爸的硬性要求（尤...</description></item><item><title>权威认证：Go核心密码学库通过独立安全审计</title><link>https://tonybai.com/2025/05/21/go-crypto-audit/</link><pubDate>Wed, 21 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/21/go-crypto-audit/</guid><description>权威认证：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/2025/05/20/post-quantum-cryptography-in-go/</link><pubDate>Tue, 20 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/20/post-quantum-cryptography-in-go/</guid><description>本文永久链接 – https://tonybai.com/2025/05/20/post-quantum-cryptography-in-go 大家好，我是 Tony Bai。 在我们享受数字时代便利的同时，信息安全始终是悬在我们头顶的达摩克利斯之剑。而这把剑，正面临着来自未来的一个巨大挑战——**量子计算机**。一旦实用化的大规模量子计算机问世，我们当前广泛依赖的许多经典密码体系（如 RSA、椭...</description></item><item><title>原子操作的瓶颈与Go的多核扩展性之痛：深入剖析sync.ShardedValue及per-CPU提案</title><link>https://tonybai.com/2025/05/19/shardedvalue-per-cpu-proposal/</link><pubDate>Mon, 19 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/19/shardedvalue-per-cpu-proposal/</guid><description>原子操作的瓶颈与Go的多核扩展性之痛：深入剖析sync.ShardedValue及per-CPU提案 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一...</description></item><item><title>Java屹立30年，Go的“少年壮志”如何续写辉煌？——来自Java之父的“长寿秘诀”</title><link>https://tonybai.com/2025/05/17/java-at-30/</link><pubDate>Sat, 17 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/17/java-at-30/</guid><description>Java屹立30年，Go的“少年壮志”如何续写辉煌？——来自Java之父的“长寿秘诀” - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * ...</description></item><item><title>揭秘Go语言中的rune：一段跨越30年的Plan 9往事与UTF-8的诞生传奇</title><link>https://tonybai.com/2025/05/16/how-rune-came/</link><pubDate>Fri, 16 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/16/how-rune-came/</guid><description>揭秘Go语言中的rune：一段跨越30年的Plan 9往事与UTF-8的诞生传奇 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语...</description></item><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路由选择看“标准库优先”：何时坚守？何时拓展？</title><link>https://tonybai.com/2025/05/14/which-go-router-should-i-use/</link><pubDate>Wed, 14 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/14/which-go-router-should-i-use/</guid><description>从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/2025/05/13/go-prefer-less-framework/</link><pubDate>Tue, 13 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/13/go-prefer-less-framework/</guid><description>Go社区的“轻框架”理念：自由的馈赠还是无形的枷锁？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 ...</description></item><item><title>Go运行时底层接口标准化？“GOOS=none”欲为Go铺设通往裸金属、固件和微控制器的桥梁</title><link>https://tonybai.com/2025/05/13/goos-none-proposal/</link><pubDate>Tue, 13 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/13/goos-none-proposal/</guid><description>Go运行时底层接口标准化？“GOOS=none”欲为Go铺设通往裸金属、固件和微控制器的桥梁 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ...</description></item><item><title>从线下到线上，我的“Go语言进阶课”终于在极客时间与大家见面了！</title><link>https://tonybai.com/2025/05/12/go-advanced-course/</link><pubDate>Mon, 12 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/12/go-advanced-course/</guid><description>从线下到线上，我的“Go语言进阶课”终于在极客时间与大家见面了！ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ ...</description></item><item><title>Go包维护者必读：如何让你的Go包更易被发现、文档更专业？</title><link>https://tonybai.com/2025/05/11/deep-into-pkg-go-dev/</link><pubDate>Sun, 11 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/11/deep-into-pkg-go-dev/</guid><description>Go包维护者必读：如何让你的Go包更易被发现、文档更专业？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关...</description></item><item><title>Go语言进入“后元老时代”？Ian Lance Taylor离职引发的思考：传承、创新与社区</title><link>https://tonybai.com/2025/05/11/ian-lance-taylor-leave-go/</link><pubDate>Sun, 11 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/11/ian-lance-taylor-leave-go/</guid><description>Go语言进入“后元老时代”？Ian Lance Taylor离职引发的思考：传承、创新与社区 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ...</description></item><item><title>百万行依赖的“恐惧”：一位Rust开发者的深度反思与Go的启示</title><link>https://tonybai.com/2025/05/10/rust-dependencies-scare-me/</link><pubDate>Sat, 10 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/10/rust-dependencies-scare-me/</guid><description>百万行依赖的“恐惧”：一位Rust开发者的深度反思与Go的启示 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ *...</description></item><item><title>GitHub英语沟通太难？别让语言成为你参与顶级Go项目的拦路虎！</title><link>https://tonybai.com/2025/05/09/github-english-communication-patterns-and-practice/</link><pubDate>Fri, 09 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/09/github-english-communication-patterns-and-practice/</guid><description>本文永久链接 – https://tonybai.com/2025/05/09/github-english-communication-patterns-and-practice 大家好，我是 Tony Bai。 身处全球化的软件开发浪潮中，GitHub早已成为我们协作、学习、贡献的“宇宙中心”。但对于我们许多非英语母语的开发者来说，它既是机遇之地，有时也是“望而却步”的挑战场。 你是否也曾有过...</description></item><item><title>Go 1.25链接器提速、执行文件瘦身：DWARF 5调试信息格式升级终落地</title><link>https://tonybai.com/2025/05/08/go-dwarf5/</link><pubDate>Thu, 08 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/08/go-dwarf5/</guid><description>Go 1.25链接器提速、执行文件瘦身：DWARF 5调试信息格式升级终落地 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进...</description></item><item><title>代码覆盖率新玩法：Russ Cox教你用差异化分析加速Go调试</title><link>https://tonybai.com/2025/05/07/debug-with-diff-cover/</link><pubDate>Wed, 07 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/07/debug-with-diff-cover/</guid><description>代码覆盖率新玩法：Russ Cox教你用差异化分析加速Go调试 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ *...</description></item><item><title>解读“Cheating the Reaper”：在Go中与GC共舞的Arena黑科技</title><link>https://tonybai.com/2025/05/06/cheating-the-reaper-in-go/</link><pubDate>Tue, 06 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/06/cheating-the-reaper-in-go/</guid><description>解读“Cheating the Reaper”：在Go中与GC共舞的Arena黑科技 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * G...</description></item><item><title>Go新垃圾回收器登场：Green Tea GC如何通过内存感知显著降低CPU开销？</title><link>https://tonybai.com/2025/05/03/go-green-tea-garbage-collector/</link><pubDate>Sat, 03 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/03/go-green-tea-garbage-collector/</guid><description>Go新垃圾回收器登场：Green Tea GC如何通过内存感知显著降低CPU开销？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go...</description></item><item><title>“错误即值”，不同实现：Go与Zig错误处理哲学对比</title><link>https://tonybai.com/2025/04/30/go-vs-zig-in-error-handling/</link><pubDate>Wed, 30 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/30/go-vs-zig-in-error-handling/</guid><description>本文永久链接 – https://tonybai.com/2025/04/30/go-vs-zig-in-error-handling 大家好，我是Tony Bai。 使用Go语言有些年头的开发者，大多对其错误处理机制有着复杂的情感。一方面，我们认同 Rob Pike 所倡导的“错误即值 (Errors are values)”的核心哲学——错误不是需要特殊通道（如异常）处理的“二等公民”，它们是...</description></item><item><title>Go的简洁神话？转Go前你需要知道的5个“真相”</title><link>https://tonybai.com/2025/04/29/hard-truths-before-switching-to-go/</link><pubDate>Tue, 29 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/29/hard-truths-before-switching-to-go/</guid><description>Go的简洁神话？转Go前你需要知道的5个“真相” - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * ...</description></item><item><title>go-yaml归档背后：Go开源生态的“脆弱”与“韧性”，我们该如何看待？</title><link>https://tonybai.com/2025/04/28/go-ecosystem/</link><pubDate>Mon, 28 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/28/go-ecosystem/</guid><description>go-yaml归档背后：Go开源生态的“脆弱”与“韧性”，我们该如何看待？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶...</description></item><item><title>Go开发者必知：五大缓存策略详解与选型指南</title><link>https://tonybai.com/2025/04/28/five-cache-strategies/</link><pubDate>Mon, 28 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/28/five-cache-strategies/</guid><description>本文永久链接 – https://tonybai.com/2025/04/28/five-cache-strategies 大家好，我是Tony Bai。 在构建高性能、高可用的后端服务时，缓存几乎是绕不开的话题。无论是为了加速数据访问，还是为了减轻数据库等主数据源的压力，缓存都扮演着至关重要的角色。对于我们 Go 开发者来说，选择并正确地实施缓存策略，是提升应用性能的关键技能之一。 目前业界主流...</description></item><item><title>Rob Pike的“抱怨”与Go的“解药”：直面软件膨胀的四大根源</title><link>https://tonybai.com/2025/04/27/rob-pike-on-bloat/</link><pubDate>Sun, 27 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/27/rob-pike-on-bloat/</guid><description>Rob Pike的“抱怨”与Go的“解药”：直面软件膨胀的四大根源 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ...</description></item><item><title>一个字符引发的30%性能下降：Go值接收者的隐藏成本与优化</title><link>https://tonybai.com/2025/04/25/hidden-costs-of-go-value-receiver/</link><pubDate>Fri, 25 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/25/hidden-costs-of-go-value-receiver/</guid><description>一个字符引发的30%性能下降：Go值接收者的隐藏成本与优化 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关...</description></item><item><title>Go应用的K8s“最佳拍档”：何时以及如何用好多容器Pod模式</title><link>https://tonybai.com/2025/04/24/multiple-containers-pod-pattern/</link><pubDate>Thu, 24 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/24/multiple-containers-pod-pattern/</guid><description>Go应用的K8s“最佳拍档”：何时以及如何用好多容器Pod模式 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ *...</description></item><item><title>世界读书日：如何高效阅读“砖头”技术书？我的心法分享（文末赠书）</title><link>https://tonybai.com/2025/04/23/tips-for-reading-technical-books/</link><pubDate>Wed, 23 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/23/tips-for-reading-technical-books/</guid><description>世界读书日：如何高效阅读“砖头”技术书？我的心法分享（文末赠书） - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ ...</description></item><item><title>不止Go，更是Go+AI：我的知识星球「Go &amp; AI 精进营」全新启航！</title><link>https://tonybai.com/2025/04/22/go-ai-knowledge-community-launch/</link><pubDate>Tue, 22 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/22/go-ai-knowledge-community-launch/</guid><description>不止Go，更是Go+AI：我的知识星球「Go &amp;amp; AI 精进营」全新启航！ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶...</description></item><item><title>Go项目设计的“七宗罪”？警惕那些流行的“反模式”</title><link>https://tonybai.com/2025/04/21/go-project-design-antipatterns/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/21/go-project-design-antipatterns/</guid><description>Go项目设计的“七宗罪”？警惕那些流行的“反模式” - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 *...</description></item><item><title>AI会写Go代码了，初学者还需要系统学习吗？</title><link>https://tonybai.com/2025/04/19/learn-go-in-ai-era/</link><pubDate>Sat, 19 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/19/learn-go-in-ai-era/</guid><description>AI会写Go代码了，初学者还需要系统学习吗？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 文章...</description></item><item><title>代码Agent没有护城河？我用Go标准库和DeepSeek证明给你看！</title><link>https://tonybai.com/2025/04/18/reproduce-thorsten-balls-code-agent/</link><pubDate>Fri, 18 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/18/reproduce-thorsten-balls-code-agent/</guid><description>本文永久链接 – https://tonybai.com/2025/04/18/reproduce-thorsten-balls-code-agent 大家好，我是Tony Bai。 人工智能Agent风头正劲，但构建它们真的那么难吗？本文深入解读Thorsten Ball 的“皇帝新衣”论，并通过一个 Go 标准库 + OpenAI Compatible API + DeepSeek的实战复现，...</description></item><item><title>“Go is badly designed”？它像极了我们当年恨过的物理老师！</title><link>https://tonybai.com/2025/04/17/go-is-badly-designed/</link><pubDate>Thu, 17 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/17/go-is-badly-designed/</guid><description>“Go is badly designed”？它像极了我们当年恨过的物理老师！ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言...</description></item><item><title>自定义Hash终迎标准化？Go提案maphash.Hasher接口设计解读</title><link>https://tonybai.com/2025/04/17/standardize-the-hash-function/</link><pubDate>Thu, 17 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/17/standardize-the-hash-function/</guid><description>自定义Hash终迎标准化？Go提案maphash.Hasher接口设计解读 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶...</description></item><item><title>11个现代Go特性：用gopls/modernize让你的代码焕然一新</title><link>https://tonybai.com/2025/04/15/embrace-modern-go-style-with-gopls-modernize/</link><pubDate>Tue, 15 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/15/embrace-modern-go-style-with-gopls-modernize/</guid><description>本文永久链接 – https://tonybai.com/2025/04/15/embrace-modern-go-style-with-gopls-modernize 大家好，我是Tony Bai。 最近在思考Go语言的发展时，不禁让我想起了当年学习C++的经历。Bjarne Stroustrup在《C++程序设计语言（特别版）》中就专门强调了“现代 C++”（Modern C++）的编程风格，...</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>Go开发者必看！JetBrains 2024报告深度解读：Go语言现状、趋势与未来机遇</title><link>https://tonybai.com/2025/04/10/jetbrains-2024-go-report-analysis/</link><pubDate>Thu, 10 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/10/jetbrains-2024-go-report-analysis/</guid><description>Go开发者必看！JetBrains 2024报告深度解读：Go语言现状、趋势与未来机遇 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * ...</description></item><item><title>Go 1.25新提案：GOMAXPROCS默认值将迎Cgroup感知能力，终结容器性能噩梦？</title><link>https://tonybai.com/2025/04/09/gomaxprocs-defaults-add-cgroup-aware/</link><pubDate>Wed, 09 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/09/gomaxprocs-defaults-add-cgroup-aware/</guid><description>Go 1.25新提案：GOMAXPROCS默认值将迎Cgroup感知能力，终结容器性能噩梦？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ...</description></item><item><title>Go testing包将迎来新增强：标准化属性与持久化构件API即将落地</title><link>https://tonybai.com/2025/04/07/go-testing-add-attr-and-artifactdir/</link><pubDate>Mon, 07 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/07/go-testing-add-attr-and-artifactdir/</guid><description>Go testing包将迎来新增强：标准化属性与持久化构件API即将落地 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课...</description></item><item><title>WaitGroup.Go要来了？Go官方提案或让你告别Add和Done样板代码</title><link>https://tonybai.com/2025/04/03/waitgroup-go-proposal/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/03/waitgroup-go-proposal/</guid><description>WaitGroup.Go要来了？Go官方提案或让你告别Add和Done样板代码 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言...</description></item><item><title>Go安全版图再添利器：OpenPubkey SSH开源，用SSO彻底改变SSH认证</title><link>https://tonybai.com/2025/03/31/openpubkey-ssh-open-source/</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/03/31/openpubkey-ssh-open-source/</guid><description>Go安全版图再添利器：OpenPubkey SSH开源，用SSO彻底改变SSH认证 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go...</description></item><item><title>Go模块发布流程再加固：go mod verify -tag提案详解</title><link>https://tonybai.com/2025/03/28/go-mod-verify-tag/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/03/28/go-mod-verify-tag/</guid><description>Go模块发布流程再加固：go mod verify -tag提案详解 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FA...</description></item><item><title>Go 1.25规范大扫除：移除“Core Types”，为更灵活的泛型铺路</title><link>https://tonybai.com/2025/03/27/remove-coretypes-from-go-spec/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/03/27/remove-coretypes-from-go-spec/</guid><description>Go 1.25规范大扫除：移除“Core Types”，为更灵活的泛型铺路 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶...</description></item><item><title>Go方法名的作用域：包级，但需间接调用</title><link>https://tonybai.com/2025/03/24/understand-methodname-scope/</link><pubDate>Mon, 24 Mar 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/03/24/understand-methodname-scope/</guid><description>Go方法名的作用域：包级，但需间接调用 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 文章列表 ...</description></item><item><title>体验Gemini Deep Research：以Go语言未来演进方向分析为例</title><link>https://tonybai.com/2025/03/16/gemini-deep-research-experience/</link><pubDate>Sun, 16 Mar 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/03/16/gemini-deep-research-experience/</guid><description>本文永久链接 – https://tonybai.com/2025/03/16/gemini-deep-research-experience 基于大模型的AI已进入深度思考时代，以DeepSeek R1模型为代表的开源模型给主流AI厂商带来了巨大压力。其实早在2024年12月份，Google就在一篇名为“Try Deep Research and our new experimental mod...</description></item><item><title>Anders Hejlsberg专访全文：TypeScript正在向Go移植</title><link>https://tonybai.com/2025/03/13/interview-with-anders-hejlsberg/</link><pubDate>Thu, 13 Mar 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/03/13/interview-with-anders-hejlsberg/</guid><description>本文永久链接 – https://tonybai.com/2025/03/13/interview-with-anders-hejlsberg 昨天发表了《Anders Hejlsberg亲自操刀向Go语言移植！TypeScript编译器性能狂飙10倍！》一文后，收到了许多读者的反馈，其中最高频的问题是：为什么不选择Rust？为什么不使用C#等其他语言？为了帮助大家更好地理解这次“技术事件”，我整...</description></item><item><title>Anders Hejlsberg谈TypeScript编译器向Go移植的实践与规划</title><link>https://tonybai.com/2025/03/12/typescript-native-port-to-go/</link><pubDate>Wed, 12 Mar 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/03/12/typescript-native-port-to-go/</guid><description>Anders Hejlsberg谈TypeScript编译器向Go移植的实践与规划 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go...</description></item><item><title>深入GOCACHEPROG：Go构建缓存的自定义扩展</title><link>https://tonybai.com/2025/03/04/deep-dive-into-gocacheprog-custom-extensions-for-go-build-cache/</link><pubDate>Tue, 04 Mar 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/03/04/deep-dive-into-gocacheprog-custom-extensions-for-go-build-cache/</guid><description>本文永久链接 – https://tonybai.com/2025/03/04/deep-dive-into-gocacheprog-custom-extensions-for-go-build-cache 1. 背景 ----- 众所周知，Go build cache是在Go 1.10版本加入到Go工具链中的，缓存的主要目标是避免重复编译相同的代码，从而加快构建速度。 默认情况下，Go构建缓存位...</description></item><item><title>Go 1.24中值得关注的几个变化</title><link>https://tonybai.com/2025/02/16/some-changes-in-go-1-24/</link><pubDate>Sun, 16 Feb 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/02/16/some-changes-in-go-1-24/</guid><description>本文永久链接 – https://tonybai.com/2025/02/16/some-changes-in-go-1-24 北京时间2025年2月12日，恰逢中国传统元宵佳节，远在美国的Go团队正式发布了Go 1.24的第一个版本Go 1.24.0。这也是Go团队在更换Tech Leader为Austin Clements后发布的首个大版本。 按照惯例，每次Go大版本发布时，我都会撰写一篇“G...</description></item><item><title>关于Go错误处理新提案的一个想法：?操作符这样用行不行</title><link>https://tonybai.com/2025/02/08/personal-idea-about-using-question-mark-operator-in-go-error-handling-new-proposal/</link><pubDate>Sat, 08 Feb 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/02/08/personal-idea-about-using-question-mark-operator-in-go-error-handling-new-proposal/</guid><description>关于Go错误处理新提案的一个想法：?操作符这样用行不行 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我...</description></item><item><title>Go encoding/json/v2提案：JSON处理新引擎</title><link>https://tonybai.com/2025/02/05/go-encoding-json-v2-proposal-json-processing-new-engine/</link><pubDate>Wed, 05 Feb 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/02/05/go-encoding-json-v2-proposal-json-processing-new-engine/</guid><description>本文永久链接 – https://tonybai.com/2025/02/05/go-encoding-json-v2-proposal-json-processing-new-engine Go标准库中的encoding/json包，作为Go社区广泛使用的JSON处理工具，至今已走过十余年。凭借其将JSON数据与原生Go类型相互转换的能力、通过struct tag自定义字段表示的灵活性，以及Go...</description></item><item><title>Go导出标识符：那些鲜为人知的细节</title><link>https://tonybai.com/2025/01/23/the-hidden-details-of-go-exported-identifiers/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/01/23/the-hidden-details-of-go-exported-identifiers/</guid><description>本文永久链接 – https://tonybai.com/2025/01/23/the-hidden-details-of-go-exported-identifiers 前不久，在“Go+用户组”微信群里看到有开发者向七牛云老板许式伟反馈七牛云Go SDK中的某些类型没有导出，导致外部包无法使用的问题(如下图)： 七牛开发人员迅速对该问题做出了“更正”，将问题反馈中涉及的类型saveasArgs...</description></item><item><title>探索Go gcflags的使用模式与完整参数选项列表</title><link>https://tonybai.com/2025/01/22/gcflags-options-list-and-usage/</link><pubDate>Wed, 22 Jan 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/01/22/gcflags-options-list-and-usage/</guid><description>探索Go gcflags的使用模式与完整参数选项列表 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 ...</description></item><item><title>Go工具链版本已不由你定：go和toolchain指令详解</title><link>https://tonybai.com/2025/01/14/understand-go-and-toolchain-in-go-dot-mod/</link><pubDate>Tue, 14 Jan 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/01/14/understand-go-and-toolchain-in-go-dot-mod/</guid><description>本文永久链接 – https://tonybai.com/2025/01/14/understand-go-and-toolchain-in-go-dot-mod Go语言自诞生以来，就一直将向后兼容性作为其核心理念之一。Go1兼容性承诺确保了为Go1.0编写的代码能够在后续的Go1.x版本中持续正确地编译和运行。这一承诺为Go的成功奠定了坚实的基础，它不仅保障了稳定性，也大大减轻了随着语言演进带...</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>探索基于pion开发的WebRTC应用的建连过程</title><link>https://tonybai.com/2024/12/26/exploring-the-connection-establish-process-of-webrtc-app-built-with-pion/</link><pubDate>Thu, 26 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/26/exploring-the-connection-establish-process-of-webrtc-app-built-with-pion/</guid><description>本文永久链接 – https://tonybai.com/2024/12/26/exploring-the-connection-establish-process-of-webrtc-app-built-with-pion 在《WebRTC第一课：从信令、ICE到NAT穿透的连接建立全流程》一文中，我们从理论层面全面细致地了解了WebRTC连接建立的完整流程。这个流程大致可以分为以下几个阶段： ...</description></item><item><title>使用issue2md将Github issue转换为Markdown</title><link>https://tonybai.com/2024/12/23/convert-github-issue-to-markdown-with-issue2md/</link><pubDate>Mon, 23 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/23/convert-github-issue-to-markdown-with-issue2md/</guid><description>使用issue2md将Github issue转换为Markdown | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表...</description></item><item><title>Go 1.24新特性前瞻：工具链和标准库</title><link>https://tonybai.com/2024/12/17/go-1-24-foresight-part2/</link><pubDate>Tue, 17 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/17/go-1-24-foresight-part2/</guid><description>本文永久链接 – https://tonybai.com/2024/12/17/go-1-24-foresight-part2 在上一篇文章中，我们介绍了即将于2025年2月发布的Go 1.24版本在语法、编译器和运行时方面的主要变化。本文将继续承接上文，重点介绍Go 1.24在工具链和标准库方面的重要更新，供大家参考。 1\. 工具链 ------- 1.1 go.mod新增tool指示符，支持...</description></item><item><title>Go 1.24新特性前瞻：语法、编译器与运行时</title><link>https://tonybai.com/2024/12/16/go-1-24-foresight-part1/</link><pubDate>Mon, 16 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/16/go-1-24-foresight-part1/</guid><description>Go 1.24新特性前瞻：语法、编译器与运行时 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go 1.24新特性...</description></item><item><title>WebRTC第一课：从信令、ICE到NAT穿透的连接建立全流程</title><link>https://tonybai.com/2024/12/14/webrtc-first-lesson-how-connection-estabish/</link><pubDate>Sat, 14 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/14/webrtc-first-lesson-how-connection-estabish/</guid><description>本文永久链接 – https://tonybai.com/2024/12/14/webrtc-first-lesson-how-connection-estabish 在上一篇文章《WebRTC第一课：网络架构与NAT工作原理》中，我们介绍了WebRTC的网络架构和NAT的基本概念，学习了WebRTC采用端对端（P2P）的通信模型，知道了NAT（网络地址转换）的概念以及给像WebRTC这样的直接P...</description></item><item><title>量子计算入门与Go模拟</title><link>https://tonybai.com/2024/12/11/simulate-quantum-computing-in-go/</link><pubDate>Wed, 11 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/11/simulate-quantum-computing-in-go/</guid><description>本文永久链接 – https://tonybai.com/2024/12/11/simulate-quantum-computing-in-go 2019年，Google宣布实现”量子霸权”，声称其53量子比特的量子计算机完成了一个经典超级计算机需要1万年才能完成的计算任务。这一宣告在当时引发了广泛关注和热议。而在这个过程中，我们也看到了太多对量子计算的误解。有人将其想象成**未来取代经典计算机的...</description></item><item><title>探索Docker默认网络NAT映射的分配与过滤行为</title><link>https://tonybai.com/2024/12/05/exploring-nat-mapping-assignment-and-filtering-behavior-of-docker-default-network/</link><pubDate>Thu, 05 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/05/exploring-nat-mapping-assignment-and-filtering-behavior-of-docker-default-network/</guid><description>本文永久链接 – https://tonybai.com/2024/12/05/exploring-nat-mapping-assignment-and-filtering-behavior-of-docker-default-network 在《WebRTC第一课：网络架构与NAT工作原理》一文中，我们对WebRTC的网路架构进行说明，了解到了NAT的工作原理、RFC 3489对NAT的四种传统...</description></item><item><title>惊！Go在十亿次循环和百万任务中表现不如Java，究竟为何？</title><link>https://tonybai.com/2024/12/02/why-go-sucks/</link><pubDate>Mon, 02 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/02/why-go-sucks/</guid><description>本文永久链接 – https://tonybai.com/2024/12/02/why-go-sucks 编程语言比较的话题总是能吸引程序员的眼球！ 近期外网的两篇编程语言对比的文章在国内程序员圈里引起热议。一篇是由Ben Dicken (@BenjDicken) 做的语言性能测试，对比了十多种主流语言在执行10亿次循环(一个双层循环：1万 \* 10 万)的速度；另一篇则是一个名为hez2010...</description></item><item><title>WebRTC第一课：网络架构与NAT工作原理</title><link>https://tonybai.com/2024/11/27/webrtc-first-lesson-network-architecture-and-how-nat-work/</link><pubDate>Wed, 27 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/27/webrtc-first-lesson-network-architecture-and-how-nat-work/</guid><description>本文永久链接 – https://tonybai.com/2024/11/27/webrtc-first-lesson-network-architecture-and-how-nat-work 2023年下旬，OpenAI与Livekit的合作在科技圈引起了不小的轰动。这两家公司联手，通过WebRTC技术和大型语言模型（LLM）的结合，使AI模型具有了看、听和说话的能力。这一举动不仅彰显了Web...</description></item><item><title>一文搞懂如何在Go包中支持Hash-Based Bisect调试</title><link>https://tonybai.com/2024/11/24/how-to-support-hash-based-bisect-in-go-package/</link><pubDate>Sun, 24 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/24/how-to-support-hash-based-bisect-in-go-package/</guid><description>本文永久链接 – https://tonybai.com/2024/mm/dd/how-to-support-hash-based-bisect-in-go-package bisect是一个英文动词，意为“二分”或“分成两部分”。在数学和计算机科学中，通常指将一个区间或一个集合分成两个相等的部分。 对于程序员来说，最熟悉的bisect应用莫过于下面两个： * 算法中的二分查找(binary se...</description></item><item><title>Go包构建：专家也未必了解的文件选择细节</title><link>https://tonybai.com/2024/11/21/go-source-file-selection-details-when-building-package/</link><pubDate>Thu, 21 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/21/go-source-file-selection-details-when-building-package/</guid><description>本文永久链接 – https://tonybai.com/2024/11/21/go-source-file-selection-details-when-building-package 在Go语言开发中，包（package）是代码组织的基本单位，也是基本的构建单元。Go编译器会将每个包构建成一个目标文件(.a)，然后通过链接器将这些目标文件链接在一起，形成最终的可执行程序。 尽管Go包的构建过...</description></item><item><title>走向合规：Go加密库对FIPS 140的支持</title><link>https://tonybai.com/2024/11/16/go-crypto-and-fips-140/</link><pubDate>Sat, 16 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/16/go-crypto-and-fips-140/</guid><description>本文永久链接 – https://tonybai.com/2024/11/16/go-crypto-and-fips-140 在今年3月份，Microsoft Azure团队宣布开设Go开发人员博客，旨在向开发者通报Microsoft在Go领域的最新动态，包括如何在Azure上部署Go工作负载以及与Go编程相关的文章。 然而，经过一段时间的关注，我发现该博客上的大多数文章都呈现出类似下图中的标题格...</description></item><item><title>Gotip安装：基于Go镜像代码仓库</title><link>https://tonybai.com/2024/11/15/install-gotip-using-go-repo-mirror/</link><pubDate>Fri, 15 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/15/install-gotip-using-go-repo-mirror/</guid><description>Gotip安装：基于Go镜像代码仓库 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Gotip安装：基于Go镜像代...</description></item><item><title>Go map使用Swiss Table重新实现，性能最高提升近50%</title><link>https://tonybai.com/2024/11/14/go-map-use-swiss-table/</link><pubDate>Thu, 14 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/14/go-map-use-swiss-table/</guid><description>本文永久链接 – 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已...</description></item><item><title>Go，15岁了[译]</title><link>https://tonybai.com/2024/11/12/go-turns-15/</link><pubDate>Tue, 12 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/12/go-turns-15/</guid><description>Go，15岁了\[译\] | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go，15岁了\[译\] ========...</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>从简单到强大：再次探索Caddy服务器的魅力</title><link>https://tonybai.com/2024/11/07/exploring-caddy/</link><pubDate>Thu, 07 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/07/exploring-caddy/</guid><description>本文永久链接 – https://tonybai.com/2024/11/07/exploring-caddy Go语言诞生十多年来，社区涌现出众多优秀的Web服务器和反向代理解决方案。其中，最引人注目的无疑是Caddy和Traefik。这两者都为开发者和系统管理员提供了更简单、更安全的现代化Web服务器和反向代理部署选项。尽管它们的目标略有不同，Caddy最初旨在满足开发者快速搭建反向代理的需求...</description></item><item><title>成为那个拿锤子的人</title><link>https://tonybai.com/2024/11/03/become-the-one-with-the-hammer/</link><pubDate>Sun, 03 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/03/become-the-one-with-the-hammer/</guid><description>成为那个拿锤子的人 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 成为那个拿锤子的人 ========= * 十一...</description></item><item><title>构建无密码认证：passkey入门与Go实现</title><link>https://tonybai.com/2024/11/01/introduction-to-passkey/</link><pubDate>Fri, 01 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/01/introduction-to-passkey/</guid><description>本文永久链接 – https://tonybai.com/2024/11/01/introduction-to-passkey 传统的密码认证一直以来都是数字时代的主流身份验证方式。然而，用户常常选择易记的弱密码并重复使用，导致账号易受攻击。密码泄露、钓鱼攻击等安全问题层出不穷，超过80%的数据泄露与密码相关。 截图来自FIDO联盟官网 与此同时，频繁的密码管理和忘记密码情况严重影响用户体验。服务...</description></item><item><title>写Go就像喝白开水</title><link>https://tonybai.com/2024/10/29/go-coding-is-like-drinking-boiled-water/</link><pubDate>Tue, 29 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/29/go-coding-is-like-drinking-boiled-water/</guid><description>写Go就像喝白开水 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 写Go就像喝白开水 ========= * 十月...</description></item><item><title>写出Go标准库级别文档注释的十个细节</title><link>https://tonybai.com/2024/10/27/ten-details-when-using-documentation-comments/</link><pubDate>Sun, 27 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/27/ten-details-when-using-documentation-comments/</guid><description>写出Go标准库级别文档注释的十个细节 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 写出Go标准库级别文档注释的十...</description></item><item><title>认知负荷对编程语言选择和学习的影响</title><link>https://tonybai.com/2024/10/24/cognitive-load-impact-on-programming-language-choice-and-study/</link><pubDate>Thu, 24 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/24/cognitive-load-impact-on-programming-language-choice-and-study/</guid><description>认知负荷对编程语言选择和学习的影响 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 认知负荷对编程语言选择和学习的影...</description></item><item><title>Go开发者的密码学导航：crypto库使用指南</title><link>https://tonybai.com/2024/10/19/go-crypto-package-design-deep-dive/</link><pubDate>Sat, 19 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/19/go-crypto-package-design-deep-dive/</guid><description>本文永久链接 – https://tonybai.com/2024/10/19/go-crypto-package-design-deep-dive Go号称“开箱即用”，这与其标准库的丰富功能和高质量是分不开的。而在Go标准库中，crypto库(包括crypto包、crypto目录下相关包以及golang.org/x/crypto下的补充包)又是Go社区最值得称道的Go库之一。 crypto库由...</description></item><item><title>智能时代临近：我眼中AI编程的现在与未来</title><link>https://tonybai.com/2024/10/14/programming-in-ai-era/</link><pubDate>Mon, 14 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/14/programming-in-ai-era/</guid><description>智能时代临近：我眼中AI编程的现在与未来 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 智能时代临近：我眼中AI编...</description></item><item><title>Go语言演进的双保险：GOEXPERIMENT与GODEBUG</title><link>https://tonybai.com/2024/10/11/go-evolution-dual-insurance-goexperiment-godebug/</link><pubDate>Fri, 11 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/11/go-evolution-dual-insurance-goexperiment-godebug/</guid><description>本文永久链接 – https://tonybai.com/2024/10/11/go-evolution-dual-insurance-goexperiment-godebug Go语言自诞生以来就以其简洁、高效和强大的并发支持而闻名，Go团队承诺保持Go1向后兼容性，以确保用户的代码在未来的版本中继续正常运行。然而，保持语言的稳定性与不断创新(增加新特性)之间的平衡一直是Go团队面临的挑战。为了...</description></item><item><title>Go语言的新时代：新领导团队和未来规划</title><link>https://tonybai.com/2024/10/10/pass-torch-to-go-new-leadership-team/</link><pubDate>Thu, 10 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/10/pass-torch-to-go-new-leadership-team/</guid><description>Go语言的新时代：新领导团队和未来规划 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go语言的新时代：新领导团队...</description></item><item><title>与Thorsten Ball的共鸣：Go作为教学语言在技术写作中的优越性</title><link>https://tonybai.com/2024/10/09/resonating-with-thorsten-ball-on-go-in-technical-writing/</link><pubDate>Wed, 09 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/09/resonating-with-thorsten-ball-on-go-in-technical-writing/</guid><description>与Thorsten Ball的共鸣：Go作为教学语言在技术写作中的优越性 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章...</description></item><item><title>从DevOps到日常脚本：聊聊Go语言的多面性</title><link>https://tonybai.com/2024/10/08/go-languages-versatility-from-devops-to-daily-scripts/</link><pubDate>Tue, 08 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/08/go-languages-versatility-from-devops-to-daily-scripts/</guid><description>本文永久链接 – https://tonybai.com/2024/10/08/go-languages-versatility-from-devops-to-daily-scripts 2024年初，TIOBE编程语言排行榜上，Go再次进入了前十，并在之后又成功冲高至第七名。 Go语言的排名上升，至少在Reddit Go论坛上帖子数量和在线人数上得到了体现，尽管目前与Rust热度仍有差距，但可见...</description></item><item><title>Go项目中使用Git Submodule，还有这个必要吗？</title><link>https://tonybai.com/2024/10/05/using-git-submodules-in-go-projects/</link><pubDate>Sat, 05 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/05/using-git-submodules-in-go-projects/</guid><description>Go项目中使用Git Submodule，还有这个必要吗？ | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go项目...</description></item><item><title>探索Go守护进程的实现方法</title><link>https://tonybai.com/2024/10/03/how-to-daemonize-go-program/</link><pubDate>Thu, 03 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/03/how-to-daemonize-go-program/</guid><description>探索Go守护进程的实现方法 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 探索Go守护进程的实现方法 ======...</description></item><item><title>为什么Canonical Import Path注释在Go中不再必要</title><link>https://tonybai.com/2024/10/02/why-canonical-import-paths-no-longer-necessary-in-go/</link><pubDate>Wed, 02 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/02/why-canonical-import-paths-no-longer-necessary-in-go/</guid><description>为什么Canonical Import Path注释在Go中不再必要 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表...</description></item><item><title>跟上Go演进步伐，你只需要关注这几件事儿</title><link>https://tonybai.com/2024/09/30/how-to-keep-up-with-go-evolution/</link><pubDate>Mon, 30 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/30/how-to-keep-up-with-go-evolution/</guid><description>跟上Go演进步伐，你只需要关注这几件事儿 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 跟上Go演进步伐，你只需要...</description></item><item><title>Go语言中的深拷贝：概念、实现与局限</title><link>https://tonybai.com/2024/09/28/understand-deep-copy-in-go/</link><pubDate>Sat, 28 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/28/understand-deep-copy-in-go/</guid><description>本文永久链接 – https://tonybai.com/2024/09/28/understand-deep-copy-in-go 前不久，在“Gopher部落”知识星球上回答了一个Gopher关于深拷贝(Deep Copy)的问题，让我感觉是时候探讨一下深拷贝技术了。 在日常开发工作中，深拷贝的使用频率相对较低，可能有80%的时间不需要使用深拷贝，只有在特定情况下才会遇到。这主要是因为大多数开...</description></item><item><title>“类型名称”在Go语言规范中的演变</title><link>https://tonybai.com/2024/09/24/the-evolution-of-type-name-in-go-spec/</link><pubDate>Tue, 24 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/24/the-evolution-of-type-name-in-go-spec/</guid><description>“类型名称”在Go语言规范中的演变 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 “类型名称”在Go语言规范中的演...</description></item><item><title>Go weak包前瞻：弱指针为内存管理带来新选择</title><link>https://tonybai.com/2024/09/23/go-weak-package-preview/</link><pubDate>Mon, 23 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/23/go-weak-package-preview/</guid><description>Go weak包前瞻：弱指针为内存管理带来新选择 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go weak包前...</description></item><item><title>htmx：Gopher走向全栈的完美搭档？</title><link>https://tonybai.com/2024/09/20/htmx-gopher-perfect-partner-for-full-stack/</link><pubDate>Fri, 20 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/20/htmx-gopher-perfect-partner-for-full-stack/</guid><description>本文永久链接 – https://tonybai.com/2024/09/20/htmx-gopher-perfect-partner-for-full-stack 在传统的Web开发领域，前端和后端开发通常被明确划分。前端主要负责用户界面的交互和视觉呈现，运用HTML、CSS和JavaScript等技术；后端则专注于服务器逻辑、数据库管理和核心功能实现，常用Go、Java、PHP、Ruby等语言...</description></item><item><title>Go unique包：突破字符串局限的通用值Interning技术实现</title><link>https://tonybai.com/2024/09/18/understand-go-unique-package-by-example/</link><pubDate>Wed, 18 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/18/understand-go-unique-package-by-example/</guid><description>本文永久链接 – https://tonybai.com/2024/09/18/understand-go-unique-package-by-example Go的1.23版本中引入了一个新的标准库包unique，为Go开发者带来了高效的值interning能力)。这种能力不仅适用于字符串类型值，还可应用于任何可比较(comparable)类型的值。 本文将简要探讨interning技术及其在G...</description></item><item><title>JSON包新提案：用“omitzero”解决编码中的空值困局</title><link>https://tonybai.com/2024/09/12/solve-the-empty-value-dilemma-in-json-encoding-with-omitzero/</link><pubDate>Thu, 12 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/12/solve-the-empty-value-dilemma-in-json-encoding-with-omitzero/</guid><description>JSON包新提案：用“omitzero”解决编码中的空值困局 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 JSO...</description></item><item><title>致敬：程序员成长路上的良师与经典著作</title><link>https://tonybai.com/2024/09/10/programmer-mentors-and-their-classic-works/</link><pubDate>Tue, 10 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/10/programmer-mentors-and-their-classic-works/</guid><description>本文永久链接 – https://tonybai.com/2024/09/10/programmer-mentors-and-their-classic-works 早上送孩子去幼儿园的路上，收到一个小伙伴的微信： 我这才意识到今天是教师节！为人师，自觉还不够格！但在这个特殊的日子，作为IT行业从业人员，我想向那些在计算机科学和编程领域给予我们启迪的“老师们”致敬。这些老师可能不是传统意义上站在讲...</description></item><item><title>重拾精髓：go doc -http让离线包文档浏览更便捷</title><link>https://tonybai.com/2024/09/06/go-doc-add-http-support/</link><pubDate>Fri, 06 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/06/go-doc-add-http-support/</guid><description>重拾精髓：go doc -http让离线包文档浏览更便捷 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 重拾精髓：...</description></item><item><title>Go 1.18之后的语法新特性Quiz，你能做对几个？</title><link>https://tonybai.com/2024/08/27/a-new-syntax-quiz-after-go-1-18/</link><pubDate>Tue, 27 Aug 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/08/27/a-new-syntax-quiz-after-go-1-18/</guid><description>Go 1.18之后的语法新特性Quiz，你能做对几个？ | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go 1.1...</description></item><item><title>从零开始编程：Go语言真的适合新手吗？</title><link>https://tonybai.com/2024/08/22/go-as-first-language/</link><pubDate>Thu, 22 Aug 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/08/22/go-as-first-language/</guid><description>从零开始编程：Go语言真的适合新手吗？ | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 从零开始编程：Go语言真的适...</description></item><item><title>Go 1.23中值得关注的几个变化</title><link>https://tonybai.com/2024/08/19/some-changes-in-go-1-23/</link><pubDate>Mon, 19 Aug 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/08/19/some-changes-in-go-1-23/</guid><description>本文永久链接 – https://tonybai.com/2024/08/19/some-changes-in-go-1-23 距离上一次Go 1.22版本发布又过去六个月了，我们如期迎来了Go 1.23版本的发布。 对于Go项目乃至整个Go社区而言，这个版本还有一点额外的意义，那就是这是Russ Cox作为Tech lead，领导Go团队发布的最后一个Go版本了。 8月2日，Russ Cox在g...</description></item><item><title>都2024年了，当初那个“Go，互联网时代的C语言”的预言成真了吗？</title><link>https://tonybai.com/2024/08/17/go-the-c-language-of-the-internet-era-come-true/</link><pubDate>Sat, 17 Aug 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/08/17/go-the-c-language-of-the-internet-era-come-true/</guid><description>都2024年了，当初那个“Go，互联网时代的C语言”的预言成真了吗？ | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表...</description></item><item><title>通过Go示例理解函数式编程思维</title><link>https://tonybai.com/2024/08/11/understand-functional-programming-in-go/</link><pubDate>Sun, 11 Aug 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/08/11/understand-functional-programming-in-go/</guid><description>本文永久链接 – https://tonybai.com/2024/08/11/understand-functional-programming-in-go &amp;gt; 一个孩子要尝试10次、20次才肯接受一种新的食物，我们接受一种新的范式，大概不会比这个简单。– 郭晓刚 《函数式编程思维》译者 函数式编程(Functional Programming, 简称fp)是一种编程范式，与命令式编程(Impe...</description></item><item><title>使用TLA+形式化验证Go并发程序</title><link>https://tonybai.com/2024/08/05/formally-verify-concurrent-go-programs-using-tla-plus/</link><pubDate>Mon, 05 Aug 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/08/05/formally-verify-concurrent-go-programs-using-tla-plus/</guid><description>本文永久链接 – https://tonybai.com/2024/08/05/formally-verify-concurrent-go-programs-using-tla-plus &amp;gt; Writing is nature’s way of letting you know how sloppy your thinking is – Guindon 在2024年6月份举办的GopherCon ...</description></item><item><title>Gopher Daily支持Feed订阅</title><link>https://tonybai.com/2024/08/04/gopherdaily-add-feed-support/</link><pubDate>Sun, 04 Aug 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/08/04/gopherdaily-add-feed-support/</guid><description>Gopher Daily支持Feed订阅 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Gopher Daily支...</description></item><item><title>Go语言中的SIMD加速：以矩阵加法为例</title><link>https://tonybai.com/2024/07/21/simd-in-go/</link><pubDate>Sun, 21 Jul 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/07/21/simd-in-go/</guid><description>本文永久链接 – https://tonybai.com/2024/07/21/simd-in-go 前些日子，一些资深Gopher，比如fasthttp的作者Aliaksandr Valialkin因函数迭代器加入Go 1.23版本而抱怨Go的演进走错了方向：朝着增加复杂性和隐式代码执行的方向发展，而没有专注于Go语言的基本设计哲学——简单性、生产力和性能。Valialkin希望Go团队能专注于...</description></item><item><title>通过实例理解Go访问和操作数据库的几种方式</title><link>https://tonybai.com/2024/07/15/understand-the-ways-to-access-databases-in-go/</link><pubDate>Mon, 15 Jul 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/07/15/understand-the-ways-to-access-databases-in-go/</guid><description>本文永久链接 – https://tonybai.com/2024/07/15/understand-the-ways-to-access-databases-in-go 关系数据库操作是Go应用开发中的重要一环，尤其是Go Web应用、微服务等。作为Gopher，我们需要了解几种主流的数据库访问和操作方法，以便在项目中做出适当的选择。 我个人在日常开发中较少涉及CRUD类应用，因此使用Go访问和...</description></item><item><title>Go语言编程指南翻译记：一本书，一支队伍，一段难忘的旅程</title><link>https://tonybai.com/2024/07/05/go-fundamentals-translation/</link><pubDate>Fri, 05 Jul 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/07/05/go-fundamentals-translation/</guid><description>Go语言编程指南翻译记：一本书，一支队伍，一段难忘的旅程 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go语言编...</description></item><item><title>Go 1.23中的自定义迭代器与iter包</title><link>https://tonybai.com/2024/06/24/range-over-func-and-package-iter-in-go-1-23/</link><pubDate>Mon, 24 Jun 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/06/24/range-over-func-and-package-iter-in-go-1-23/</guid><description>本文永久链接 – https://tonybai.com/2024/06/24/range-over-func-and-package-iter-in-go-1-23 在《Go 1.23新特性前瞻》一文中，我们提到了Go 1.23中增加的一个主要的语法特性就是**支持了用户自定义iterator**，即range over func试验特性的正式转正。为此，Go 1.23还在标准库中增加了iter...</description></item><item><title>Go团队的工作方式</title><link>https://tonybai.com/2024/06/22/how-things-get-done-on-the-go-team/</link><pubDate>Sat, 22 Jun 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/06/22/how-things-get-done-on-the-go-team/</guid><description>Go团队的工作方式 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go团队的工作方式 ========= * 六月...</description></item><item><title>Gopher的Rust第一课：Rust的依赖管理</title><link>https://tonybai.com/2024/06/16/gopher-rust-first-lesson-managing-deps/</link><pubDate>Sun, 16 Jun 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/06/16/gopher-rust-first-lesson-managing-deps/</guid><description>本文永久链接 – https://tonybai.com/2024/06/16/gopher-rust-first-lesson-managing-deps 在上一章《Gopher的Rust第一课：Rust代码组织》中，我们了解了Rust的代码组织形式，知道了基于Cargo构建项目以及Rust代码组织是目前的标准方式，同时Cargo也是管理项目外部依赖的标准方法，而项目内部的代码组织则由Rust ...</description></item><item><title>Gopher的Rust第一课：Rust代码组织</title><link>https://tonybai.com/2024/06/06/gopher-rust-first-lesson-organizing-rust-code/</link><pubDate>Thu, 06 Jun 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/06/06/gopher-rust-first-lesson-organizing-rust-code/</guid><description>本文永久链接 – https://tonybai.com/2024/06/06/gopher-rust-first-lesson-organizing-rust-code 在上一章的讲解中，我们编写了第一个Rust示例程序”hello, world”，并给出了rustc版和cargo版本。在真实开发中，我们都会使用cargo来创建和管理Rust包。不过，Hello, world示例非常简单，仅仅由...</description></item><item><title>Go 1.23新特性前瞻</title><link>https://tonybai.com/2024/05/30/go-1-23-foresight/</link><pubDate>Thu, 30 May 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/05/30/go-1-23-foresight/</guid><description>本文永久链接 – https://tonybai.com/2024/05/30/go-1-23-foresight 2024年5月22日，Go 1.23版本功能特性正式冻结，后续将只改bug，不增加新feature。 对Go团队来说，这意味着开始了Go 1.23rc1的冲刺，对我们普通Gopher而言，这意味着**是时候对Go 1.23新增的功能做一些前瞻了**！ 在Go没有发布Go 1.23rc...</description></item><item><title>Gopher的Rust第一课：第一个Rust程序</title><link>https://tonybai.com/2024/05/27/gopher-rust-first-lesson-first-rust-program/</link><pubDate>Mon, 27 May 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/05/27/gopher-rust-first-lesson-first-rust-program/</guid><description>本文永久链接 – https://tonybai.com/2024/05/27/gopher-rust-first-lesson-first-rust-program 经过上一章的学习，我想现在你已经成功安装好一个Rust开发环境了，是时候撸起袖子开始写Rust代码了！ 程序员这个历史并不算悠久的行当，却有着一个历史悠久的传统，那就是每种编程语言都将一个名为“hello, world”的示例作为这...</description></item><item><title>Go团队：Go是什么</title><link>https://tonybai.com/2024/05/19/what-the-go-team-think-go-is/</link><pubDate>Sun, 19 May 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/05/19/what-the-go-team-think-go-is/</guid><description>本文永久链接 – https://tonybai.com/2024/05/19/what-the-go-team-think-go-is 2024年的Google I/O大会如期而至。 这届大会的核心主旨毫无疑问是**坚定不移的以AI为中心**：Google先是发布了上下文长度将达到惊人的200万token的Gemini 1.5 Pro，然后面对OpenAI GPT-4o的挑衅，谷歌在大会上直接甩...</description></item><item><title>Go早期的那些布道者</title><link>https://tonybai.com/2024/05/17/the-early-evangelists-of-go/</link><pubDate>Fri, 17 May 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/05/17/the-early-evangelists-of-go/</guid><description>本文永久链接 – https://tonybai.com/2024/05/17/the-early-evangelists-of-go Go自2009年开源至今已经快15年了！这期间，有很多人对Go语言的发展做出了重要贡献，起到了至关重要的作用，他们被视为**Go语言的早期布道者和鼓吹者**。他们向Go社区传达着Go的价值观、Go的最新发展、Go的使用方法以及最佳实践。 这些人有来自Go团队的，有...</description></item><item><title>Gopher的Rust第一课：建立Rust开发环境</title><link>https://tonybai.com/2024/05/10/gopher-rust-first-lesson-setup-dev-env/</link><pubDate>Fri, 10 May 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/05/10/gopher-rust-first-lesson-setup-dev-env/</guid><description>本文永久链接 – https://tonybai.com/2024/05/10/gopher-rust-first-lesson-setup-dev-env 经过上一章的对Rust诞生演化的了解以及设计哲学的探讨后，如果你依然决定继续Rust编程学习之旅，那么欢迎你和我一起正式走进Rust学习和实践的课堂。 编程不是“纸上谈兵”，它是一门实践的艺术。编程语言的学习离不开动手实践，因此学习任何一门编...</description></item><item><title>使用Ollama和Go基于文本嵌入模型实现文本向量化</title><link>https://tonybai.com/2024/05/09/text-vectorization-using-ollama-and-go-based-on-text-embedding-models/</link><pubDate>Thu, 09 May 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/05/09/text-vectorization-using-ollama-and-go-based-on-text-embedding-models/</guid><description>本文永久链接 – https://tonybai.com/2024/05/09/text-vectorization-using-ollama-and-go-based-on-text-embedding-models 基于RAG+大模型的应用已经成为当前AI应用领域的一个热门方向。RAG(Retrieval-Augmented Generation)将检索和生成两个步骤相结合，利用外部知识库来增...</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在Google的历程[译]</title><link>https://tonybai.com/2024/04/24/go-journey-at-google/</link><pubDate>Wed, 24 Apr 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/04/24/go-journey-at-google/</guid><description>本文永久链接 – https://tonybai.com/2024/04/24/go-journey-at-google 2007年Go诞生于Google，2009年Google正式对外宣布了Go语言的开源！时至今日，距离Go开源已经过去了近15个年头了！Go在Google公司内部究竟是怎样的一个状态呢？前Google员工Yves Junqueira近期撰文从其个人所见所闻谈了Go在Google的...</description></item><item><title>使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B</title><link>https://tonybai.com/2024/04/23/playing-with-meta-llama3-8b-on-cpu-using-ollama-and-openwebui/</link><pubDate>Tue, 23 Apr 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/04/23/playing-with-meta-llama3-8b-on-cpu-using-ollama-and-openwebui/</guid><description>本文永久链接 – https://tonybai.com/2024/04/23/playing-with-meta-llama3-8b-on-cpu-using-ollama-and-openwebui 2024年4月18日，meta开源了Llama 3大模型，虽然只有8B和70B两个版本，但Llama 3表现出来的强大能力还是让AI大模型界为之震撼了一番，本人亲测Llama3-70B版本的推理能...</description></item><item><title>Gopher的Rust第一课：Rust的那些事儿</title><link>https://tonybai.com/2024/04/22/gopher-rust-first-lesson-all-about-rust/</link><pubDate>Mon, 22 Apr 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/04/22/gopher-rust-first-lesson-all-about-rust/</guid><description>本文永久链接 – https://tonybai.com/2024/04/22/gopher-rust-first-lesson-all-about-rust 要说这两年后端编程语言谁最火，Rust说自己第二，没人敢说第一。Rust连续8年霸榜stackoverflow最受推崇的编程语言，甚至被推特之父Jack Dorsey称为“完美的编程语言”： &amp;gt; 注：最火：仅代表人气最旺，最受欢迎，但并不代...</description></item><item><title>要么返回错误值，要么输出日志，别两样都做</title><link>https://tonybai.com/2024/04/14/either-return-error-or-log-them-do-not-do-both/</link><pubDate>Sun, 14 Apr 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/04/14/either-return-error-or-log-them-do-not-do-both/</guid><description>本文永久链接 – https://tonybai.com/2024/04/14/either-return-error-or-log-them-do-not-do-both 1\. 缘起 ------ 这周，一个产品团队内进行Go代码评审时，得到了一个结论：所有的if err != nil的地方都应该输出错误日志。然而，这种做法并不是最佳实践，它存在一些问题。 首先，打印过多的错误日志会导致日志文...</description></item><item><title>选择正确的Go Module Path</title><link>https://tonybai.com/2024/04/09/choose-the-right-go-module-path/</link><pubDate>Tue, 09 Apr 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/04/09/choose-the-right-go-module-path/</guid><description>本文永久链接 – https://tonybai.com/2024/04/09/choose-the-right-go-module-path 最近我在查看项目代码时，注意到有人在go.mod文件中将module path写为com.example.foo了。根据这个写法，相信屏幕前的读者也可以推断出这位开发人员可能是从Java阵营转到Go的。实际开发中可能有很多开发者会使用类似的内容作为modu...</description></item><item><title>Go 1.22引入的包级变量初始化次序问题</title><link>https://tonybai.com/2024/03/29/the-issue-in-pkg-level-var-init-order-in-go-1-22/</link><pubDate>Fri, 29 Mar 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/03/29/the-issue-in-pkg-level-var-init-order-in-go-1-22/</guid><description>本文永久链接 – https://tonybai.com/2024/03/29/the-issue-in-pkg-level-var-init-order-in-go-1-22 细心的朋友可能已经注意到，从春节后，我的博客就“停更”了！实际上，这一情况部分是因为工作上的事务繁忙，另一部分则是因为我将工作之外的闲暇时间更多地投入到一本即将于今年中下旬出版的书的撰写了：在之前的积累基础上，我花了两个多...</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>2024年的Rust与Go[译]</title><link>https://tonybai.com/2024/01/24/rust-vs-go-in-2024/</link><pubDate>Wed, 24 Jan 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/01/24/rust-vs-go-in-2024/</guid><description>本文永久链接 – https://tonybai.com/2024/01/24/rust-vs-go-in-2024 本文译自《Rust vs Go in 2024》。 * * * 我可以说些什么而不让大家生气吗？ Rust和Go哪个更好？你应该为下一个项目选择哪种语言，为什么？两者在性能、简单性、安全性、功能特性、规模化(scale)和并发性等方面如何比较？它们有什么共同点，又有什么根本区别？让...</description></item><item><title>依赖Kafka的Go单元测试例解</title><link>https://tonybai.com/2024/01/08/go-unit-testing-deps-on-kafka/</link><pubDate>Mon, 08 Jan 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/01/08/go-unit-testing-deps-on-kafka/</guid><description>本文永久链接 – https://tonybai.com/2024/01/08/go-unit-testing-deps-on-kafka Kafka是Apache基金会开源的一个分布式事件流处理平台，是Java阵营(最初为Scala)中的一款杀手级应用，其提供的高可靠性、高吞吐量和低延迟的数据传输能力，让其到目前为止依旧是现代企业级应用系统以及云原生应用系统中使用的重要中间件。 在日常开发Go程...</description></item><item><title>Go语言之父的反思：我们做对了什么，做错了什么</title><link>https://tonybai.com/2024/01/07/what-we-got-right-what-we-got-wrong/</link><pubDate>Sun, 07 Jan 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/01/07/what-we-got-right-what-we-got-wrong/</guid><description>本文永久链接 – https://tonybai.com/2024/01/07/what-we-got-right-what-we-got-wrong 在《2023年Go语言盘点：稳中求新，稳中求变》和《Go测试的20个实用建议》两篇文章中，我都提到过已经退居二线的Go语言之父Rob Pike在Go开源14周年的那天亲自在GopherCon Australia 2023上发表了“What We G...</description></item><item><title>Go测试的20个实用建议</title><link>https://tonybai.com/2024/01/01/go-testing-by-example/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/01/01/go-testing-by-example/</guid><description>本文永久链接 – https://tonybai.com/2024/01/01/go-testing-by-example 2023年11月初，Go语言技术负责人Russ Cox在GopherCon Australia 2023大会上进行了题为“Go Testing By Example”的演讲： 12月初Russ Cox重新录制了该演讲内容的视频，并在个人网站上放了出来。这个演讲视频是关于如何编...</description></item><item><title>2023年Go语言盘点：稳中求新，稳中求变</title><link>https://tonybai.com/2023/12/31/the-2023-review-of-go-programming-language/</link><pubDate>Sun, 31 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/31/the-2023-review-of-go-programming-language/</guid><description>本文永久链接 – https://tonybai.com/2023/12/31/the-2023-review-of-go-programming-language 时光荏苒，转眼间已经是2023年的最后一天了。《2022年Go语言盘点：泛型落地，无趣很好，稳定为王》仿佛就写在昨天。 回首这一年，全球彻底从新冠大流行中得以复苏，Go语言也不例外，最直观的表现就是**全球各地的GopherCon技术...</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>通过实例理解OpenID身份认证</title><link>https://tonybai.com/2023/12/22/understand-oidc-by-example/</link><pubDate>Fri, 22 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/22/understand-oidc-by-example/</guid><description>本文永久链接 – https://tonybai.com/2023/12/22/understand-oidc-by-example 在《通过实例理解OAuth2》一文中，我们以实例方式讲解了OAuth2授权码模式(Authorization Code)模式的工作原理。实例中的照片冲印服务经过用户(tonybai)的授权后，使用用户提供的code(实则是由授权服务器分配并通过用户的浏览器重定向到照...</description></item><item><title>通过实例理解OAuth2授权</title><link>https://tonybai.com/2023/12/16/understand-oauth2-by-example/</link><pubDate>Sat, 16 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/16/understand-oauth2-by-example/</guid><description>本文永久链接 – https://tonybai.com/2023/12/16/understand-oauth2-by-example 在之前的《通过实例理解Go Web身份认证的几种方式》和《通过实例理解Web应用授权的几种方式》两篇文章中，我们对Web应用身份认证(AuthN)和授权(AuthZ)的几种方式做了介绍并配以实例增强理解。 在现实世界中，还有一大类的认证与授权是在前面的文章中没有...</description></item><item><title>简单之道</title><link>https://tonybai.com/2023/12/11/simplicity/</link><pubDate>Mon, 11 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/11/simplicity/</guid><description>本文永久链接 – https://tonybai.com/2023/12/11/simplicity 已经退居二线的Go语言之父Rob Pike近日发表了一篇名为“Simplicity”的博文，记述了2009年在Google内部一次圆桌会议上发表的演讲内容。Pike老先生在这个时间点发表这篇文章究竟有何深意呢？是对Go语言演进的路线有所不满吗？我们不得而知。不过，这篇文章的内容却是非常值得我们学习...</description></item><item><title>Go未来演进：基于共同目标和数据驱动的决策</title><link>https://tonybai.com/2023/12/10/go-changes/</link><pubDate>Sun, 10 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/10/go-changes/</guid><description>本文永久链接 – https://tonybai.com/2023/12/10/go-changes 自从Go语言之父Rob Pike从Google退休并隐居澳洲后，Russ Cox便成为了Go语言团队的“带头大哥”，虽然其资历还无法与依旧奋战在一线的另外一位Go语言之父Robert Griesemer相比。如今，Russ Cox对Go语言未来的演化发展是很有“发言权”的，Go module的引入...</description></item><item><title>通过实例理解API网关的主要功能特性</title><link>https://tonybai.com/2023/12/03/understand-api-gateway-main-functional-features-by-example/</link><pubDate>Sun, 03 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/03/understand-api-gateway-main-functional-features-by-example/</guid><description>本文永久链接 – https://tonybai.com/2023/12/03/understand-api-gateway-main-functional-features-by-example 在当今的技术领域中，“下云”的概念正逐渐抬头，像David Heinemeier Hansson(37signals公司的联合创始人, Ruby on Rails的Creator)就直接将公司所有的业务...</description></item><item><title>Go语言gRPC服务Handler单元测试详解</title><link>https://tonybai.com/2023/11/25/grpc-handler-unit-testing-in-go/</link><pubDate>Sat, 25 Nov 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/11/25/grpc-handler-unit-testing-in-go/</guid><description>本文永久链接 – https://tonybai.com/2023/11/25/grpc-handler-unit-testing-in-go 在云原生时代和微服务架构背景下，HTTP和RPC协议成为服务间通信和与客户端交互的两种主要方式。对于Go语言而言，标准库提供了net/http/httptest包，为开发人员提供了便捷的方式来构建服务端HTTP Handler单元测试的测试脚手架代码，而无...</description></item><item><title>通过实例理解Web应用跨域问题</title><link>https://tonybai.com/2023/11/19/understand-go-web-cross-origin-problem-by-example/</link><pubDate>Sun, 19 Nov 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/11/19/understand-go-web-cross-origin-problem-by-example/</guid><description>本文永久链接 – https://tonybai.com/2023/11/19/understand-go-web-cross-origin-problem-by-example 在开发Web应用的过程中，我们经常会遇到所谓“跨域问题(Cross Origin Problem)”。跨域问题是由于浏览器的同源策略(Same-origin policy)导致的，它限制了不同源(Origin：域名、协议...</description></item><item><title>关系代数、SQL语句和Go语言示例</title><link>https://tonybai.com/2023/11/15/relational-algebra-and-sql-with-go-examples/</link><pubDate>Wed, 15 Nov 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/11/15/relational-algebra-and-sql-with-go-examples/</guid><description>本文永久链接 – https://tonybai.com/2023/11/15/relational-algebra-and-sql-with-go-examples 近些年，数据库领域发展日新月异，除传统的关系型数据库外，还出现了许多新型的数据库，比如：以HBase、Cassandra、MongoDB为代表的NoSQL数据库，以InfluxDB、TDEngine为代表的时序数据库，以Neo4J、...</description></item><item><title>Go，14周年[译]</title><link>https://tonybai.com/2023/11/11/go-opensource-14-years/</link><pubDate>Sat, 11 Nov 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/11/11/go-opensource-14-years/</guid><description>本文永久链接 – https://tonybai.com/2023/11/11/go-opensource-14-years 国内的双十一购物狂欢已没有了当年的那种热闹与喧嚣，但大洋彼岸的Go团队却始终保持稳中有增的开发和语言演进节奏。今晨Go核心团队的Russ Cox代表Go语言项目团队在Go官博上发表了《Fourteen Years of Go》的博文，纪念Go语言开源14周年，并对2023年...</description></item><item><title>通过实例理解Web应用的机密管理</title><link>https://tonybai.com/2023/11/08/understand-go-web-secret-management-by-example/</link><pubDate>Wed, 08 Nov 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/11/08/understand-go-web-secret-management-by-example/</guid><description>本文永久链接 – https://tonybai.com/2023/11/08/understand-go-web-secret-management-by-example 如果你是一个Web应用系统的开发人员，你的日常大概率是“乐此不疲”地做着CRUD的活儿，很少接触到安全方面的内容。如果这时有人和你提到“机密(信息)管理(secret management)”，你大概率会说：那是啥？和我有关系...</description></item><item><title>通过实例理解Web应用授权的几种方式</title><link>https://tonybai.com/2023/11/04/understand-go-web-authz-by-example/</link><pubDate>Sat, 04 Nov 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/11/04/understand-go-web-authz-by-example/</guid><description>本文永久链接 – https://tonybai.com/2023/11/04/understand-go-web-authz-by-example 在前面的系列文章中，我们了解了Go Web应用身份认证的几种方式，也知道了该如何相对安全地存储用户的密码信息，最大程度减小在系统数据库被攻破时用户密码信息的泄露程度。 一旦用户通过身份验证，他/她就可以以合法的身份进入到系统中，那么问题来了：**用户...</description></item><item><title>通过实例理解Web应用用户密码存储方案</title><link>https://tonybai.com/2023/10/25/understand-password-storage-of-web-app-by-example/</link><pubDate>Wed, 25 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/25/understand-password-storage-of-web-app-by-example/</guid><description>本文永久链接 – https://tonybai.com/2023/10/25/understand-password-storage-of-web-app-by-example 在上一篇文章《通过实例理解Go Web身份认证的几种方式》中，我们了解了Web应用的多种身份验证方式。但无论哪种方式，用户初次访问Web应用的注册流程和登录流程是不可避免的，而基于用户名密码的注册流程依旧是当今主流。注册...</description></item><item><title>通过实例理解Go Web身份认证的几种方式</title><link>https://tonybai.com/2023/10/23/understand-go-web-authn-by-example/</link><pubDate>Mon, 23 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/23/understand-go-web-authn-by-example/</guid><description>本文永久链接 – https://tonybai.com/2023/10/23/understand-go-web-authn-by-example 在2023年Q1 Go官方用户调查报告中，API/RPC services、Websites/web services都位于使用Go开发的应用类别的头部(如下图)： 我个人使用Go开发已很多年，但一直从事底层基础设施、分布式中间件等方向，Web应用开...</description></item><item><title>基于公钥验签实现应用许可机制</title><link>https://tonybai.com/2023/10/16/implementation-of-app-licensing-based-on-verifying-sign-by-pubkey/</link><pubDate>Mon, 16 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/16/implementation-of-app-licensing-based-on-verifying-sign-by-pubkey/</guid><description>本文永久链接 – https://tonybai.com/2023/10/16/implementation-of-app-licensing-based-on-verifying-sign-by-pubkey 随着互联网的普及以及应用的快速发展，商业软件的订阅模式变得越来越流行。软件公司开始提供基于订阅的服务，用户每月或每年支付费用以获取软件的使用权。这种模式使用户可以更灵活地选择服务期限，并且...</description></item><item><title>Go TLS服务端绑定证书的几种方式</title><link>https://tonybai.com/2023/10/13/multiple-ways-to-bind-certificates-on-go-tls-server-side/</link><pubDate>Fri, 13 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/13/multiple-ways-to-bind-certificates-on-go-tls-server-side/</guid><description>本文永久链接 – https://tonybai.com/2023/10/13/multiple-ways-to-bind-certificates-on-go-tls-server-side 随着互联网的发展，网站提供的服务类型和规模不断扩大，同时也对Web服务的安全性提出了更高的要求。TLS(Transport Layer Security)已然成为Web服务最重要的安全基础设施之一。默认情况...</description></item><item><title>Service Weaver：以单体形式编码，以微服务形式部署</title><link>https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices/</link><pubDate>Mon, 09 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices/</guid><description>本文永久链接 – https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices 分布式应用的主流架构模式演化为**微服务架构**已经有些年头了。微服务、DevOps、持续交付和容器技术(k8s)是构成最初云原生概念的核心要素。它们相生相拌，共同演进，并推动了云计算**全面进入云原...</description></item><item><title>Go项目目录该怎么组织？官方终于出指南了！</title><link>https://tonybai.com/2023/10/05/the-official-guide-of-organizing-go-project/</link><pubDate>Thu, 05 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/05/the-official-guide-of-organizing-go-project/</guid><description>本文永久链接 – https://tonybai.com/2023/10/05/the-official-guide-of-organizing-go-project 长久以来，在Go语言进阶的学习和实践之路上，Go项目目录究竟如何布局一直是困扰大家的一个问题，这是因为Go官方针对这个问题迟迟没有给出说法，更没有提供标准供大家参考。仅有Go语言项目技术负责人Russ Cox在一个开源项目的issu...</description></item><item><title>聊聊Go与依赖注入</title><link>https://tonybai.com/2023/09/28/dependency-injection-with-go/</link><pubDate>Thu, 28 Sep 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/09/28/dependency-injection-with-go/</guid><description>本文永久链接 – https://tonybai.com/2023/09/28/dependency-injection-with-go 如果你读过Robert C. Martin的《敏捷软件开发：原则、模式与实践》(书的封皮见下图)，那么你一定知道经典的SOLID设计原则中的“D”：依赖倒置原则（Dependency Inversion Principle, DIP）。 依赖倒置原则是面向对象设...</description></item><item><title>使用Go和WebRTC data channel实现端到端实时通信</title><link>https://tonybai.com/2023/09/23/p2p-rtc-implementation-with-go-and-webrtc-data-channel/</link><pubDate>Sat, 23 Sep 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/09/23/p2p-rtc-implementation-with-go-and-webrtc-data-channel/</guid><description>本文永久链接 – https://tonybai.com/2023/09/23/p2p-rtc-implementation-with-go-and-webrtc-data-channel 关于实时通信(RTC，Real-Time Communication)，我和大多数人一样，是用的多(比如网络电话、音视频会议等)，但对RTC概念和其底层技术原理了解的却不多。近期，一项目恰用到了RTC技术，我就...</description></item><item><title>聊聊Go语言的向前兼容性和toolchain规则</title><link>https://tonybai.com/2023/09/10/understand-go-forward-compatibility-and-toolchain-rule/</link><pubDate>Sun, 10 Sep 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/09/10/understand-go-forward-compatibility-and-toolchain-rule/</guid><description>本文永久链接 – https://tonybai.com/2023/09/10/understand-go-forward-compatibility-and-toolchain-rule Go语言在发展演进过程中一直十分注重向后兼容性(backward compatibility)，在Go 1.0版本发布之初就发布了Go1兼容性承诺，简单来说就是保证使用新版本Go(比如Go 1.21版本)可以正...</description></item><item><title>slog实战：文件日志、轮转与kafka集成</title><link>https://tonybai.com/2023/09/04/slog-in-action-file-logging-rotation-and-kafka-integration/</link><pubDate>Mon, 04 Sep 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/09/04/slog-in-action-file-logging-rotation-and-kafka-integration/</guid><description>本文永久链接 – https://tonybai.com/2023/09/04/slog-in-action-file-logging-rotation-and-kafka-integration 《slog正式版来了：Go日志记录新选择！》一文发布后，收到了很多读者的反馈，意见集中在以下几点： * 基于slog如何将日志写入文件 * slog是否支持log轮转(rotation)，如果slog不...</description></item><item><title>slog正式版来了：Go日志记录新选择！</title><link>https://tonybai.com/2023/09/01/slog-a-new-choice-for-logging-in-go/</link><pubDate>Fri, 01 Sep 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/09/01/slog-a-new-choice-for-logging-in-go/</guid><description>本文永久链接 – https://tonybai.com/2023/09/01/slog-a-new-choice-for-logging-in-go 在大约一年前，我就写下了《slog：Go官方版结构化日志包》一文，文中介绍了Go团队正在设计并计划在下一个Go版本中落地的Go官方结构化日志包：slog。但slog并未如预期在Go 1.20版本中落地，而是在golang.org/x/exp/slo...</description></item><item><title>编译Go应用的黑盒挑战：无源码只有.a文件，你能搞定吗？</title><link>https://tonybai.com/2023/08/30/how-to-build-with-only-archive-in-go/</link><pubDate>Wed, 30 Aug 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/08/30/how-to-build-with-only-archive-in-go/</guid><description>本文永久链接 – https://tonybai.com/2023/08/30/how-to-build-with-only-archive-in-go 上周末，一个Gopher在微信上与我交流了一个有关Go程序编译的问题。他的述求说起来也不复杂，那就是合作公司提供的API包仅包括golang archive(使用go build -buildmode=archive构建的.a文件)，没有Go包的...</description></item><item><title>Go 1.21中值得关注的几个变化</title><link>https://tonybai.com/2023/08/20/some-changes-in-go-1-21/</link><pubDate>Sun, 20 Aug 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/08/20/some-changes-in-go-1-21/</guid><description>本文永久链接 – https://tonybai.com/2023/08/20/some-changes-in-go-1-21 美国时间2023年8月8日，Go团队在Go官博上正式发布了1.21版本！ 早在今年4月末，我就撰写了文章《Go 1.21新特性前瞻》，对Go 1.21可能引入的新特性、新优化和新标准库包做了粗略梳理。 在6月初举办的GopherChina 2023大会上，我又以“The ...</description></item><item><title>Go项目初始化不再困扰你：gonew全方位解析</title><link>https://tonybai.com/2023/08/11/introduction-to-the-gonew-tool/</link><pubDate>Fri, 11 Aug 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/08/11/introduction-to-the-gonew-tool/</guid><description>本文永久链接 – https://tonybai.com/2023/08/11/introduction-to-the-gonew-tool 近日，Go官博介绍了一个名为gonew的新工具。该工具支持基于go project template clone并创建一个属于你的Go项目。gonew工具的引入大幅简化了Go项目的创建，同时由于对自定义项目模板的支持，也可以提高Go项目的标准化水平。gone...</description></item><item><title>Gopher Daily改版了</title><link>https://tonybai.com/2023/08/06/gopherdaily-revamped/</link><pubDate>Sun, 06 Aug 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/08/06/gopherdaily-revamped/</guid><description>本文永久链接 – https://tonybai.com/2023/08/06/gopherdaily-revamped 已经记不得GopherDaily是何时创建的了，翻了一下GopherDaily项目的commit history，才发现我的这个个人项目是2019年9月创建的，最初内容组织很粗糙，但我的编辑制作的热情很高，基本能坚持**每日一发**，甚至节假日也**不停刊**： 该项目的初衷就...</description></item><item><title>Go语言开发者的Apache Arrow使用指南：读写Parquet文件</title><link>https://tonybai.com/2023/07/31/a-guide-of-using-apache-arrow-for-gopher-part6/</link><pubDate>Mon, 31 Jul 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/07/31/a-guide-of-using-apache-arrow-for-gopher-part6/</guid><description>本文永久链接 – https://tonybai.com/2023/07/31/a-guide-of-using-apache-arrow-for-gopher-part6 Apache Arrow是一种开放的、与语言无关的列式内存格式，在本系列文章的前几篇中，我们都聚焦于内存表示与内存操作。 但对于一个数据库系统或大数据分析平台来说，数据不能也无法一直放在内存中，虽说目前内存很大也足够便宜了，但...</description></item><item><title>Go语言开发者的Apache Arrow使用指南：扩展compute包</title><link>https://tonybai.com/2023/07/22/a-guide-of-using-apache-arrow-for-gopher-part5/</link><pubDate>Sat, 22 Jul 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/07/22/a-guide-of-using-apache-arrow-for-gopher-part5/</guid><description>本文永久链接 – https://tonybai.com/2023/07/22/a-guide-of-using-apache-arrow-for-gopher-part5 在本系列文章的第4篇《Go语言开发者的Apache Arrow使用指南：数据操作》中我们遇到了**大麻烦**：Go的Arrow实现居然不支持像max、min、sum这样的简单聚合计算函数:(，分组聚合(grouped aggr...</description></item><item><title>使用testify包辅助Go测试指南</title><link>https://tonybai.com/2023/07/16/the-guide-of-go-testing-with-testify-package/</link><pubDate>Sun, 16 Jul 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/07/16/the-guide-of-go-testing-with-testify-package/</guid><description>本文永久链接 – https://tonybai.com/2023/07/16/the-guide-of-go-testing-with-testify-package 我虽然算不上Go标准库的“清教徒”，但在测试方面还多是基于标准库testing包以及go test框架的，除了需要mock的时候，基本上没有用过第三方的Go测试框架。我在《Go语言精进之路》一书中对Go测试组织的讲解也是基于Go ...</description></item><item><title>Go语言开发者的Apache Arrow使用指南：数据操作</title><link>https://tonybai.com/2023/07/13/a-guide-of-using-apache-arrow-for-gopher-part4/</link><pubDate>Thu, 13 Jul 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/07/13/a-guide-of-using-apache-arrow-for-gopher-part4/</guid><description>本文永久链接 – https://tonybai.com/2023/07/13/a-guide-of-using-apache-arrow-for-gopher-part4 在前面的Arrow系列文章中，我们介绍了Arrow的基础数据类型以及高级数据类型，这让我们具备了在内存中建立起一个immutable数据集的能力。但这并非我们的目标，我们最终是要对建立起来的数据集进行查询和分析等操作(mani...</description></item><item><title>Go语言开发者的Apache Arrow使用指南：高级数据结构</title><link>https://tonybai.com/2023/07/08/a-guide-of-using-apache-arrow-for-gopher-part3/</link><pubDate>Sat, 08 Jul 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/07/08/a-guide-of-using-apache-arrow-for-gopher-part3/</guid><description>本文永久链接 – https://tonybai.com/2023/07/08/a-guide-of-using-apache-arrow-for-gopher-part3 经过对前面两篇文章《Arrow数据类型》和《Arrow Go实现的内存管理》的学习，我们知道了各种Arrow array type以及它们在内存中的layout，我们了解了Go arrow实现在内存管理上的一些机制和使用原则。...</description></item><item><title>Apache Arrow：驱动列式分析性能和连接性的提升[译]</title><link>https://tonybai.com/2023/07/01/arrow-columnar-analytics/</link><pubDate>Sat, 01 Jul 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/07/01/arrow-columnar-analytics/</guid><description>本文永久链接 – https://tonybai.com/2023/07/01/arrow-columnar-analytics 本文翻译自Voltron Data公司CTO Wes McKinney的文章《Apache Arrow: Driving Columnar Analytics Performance and Connectivity》。这篇文章回顾了现代大数据分析遇到的问题、Arrow...</description></item><item><title>Go语言开发者的Apache Arrow使用指南：内存管理</title><link>https://tonybai.com/2023/06/30/a-guide-of-using-apache-arrow-for-gopher-part2/</link><pubDate>Fri, 30 Jun 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/06/30/a-guide-of-using-apache-arrow-for-gopher-part2/</guid><description>本文永久链接 – https://tonybai.com/2023/06/30/a-guide-of-using-apache-arrow-for-gopher-part2 如果你看了上一篇《Go语言开发者的Apache Arrow使用指南：数据类型》中的诸多Go操作arrow的代码示例，你很可能会被代码中大量使用的Retain和Release方法搞晕。不光大家有这样的感觉，我也有同样的feeli...</description></item><item><title>Go语言开发者的Apache Arrow使用指南：数据类型</title><link>https://tonybai.com/2023/06/25/a-guide-of-using-apache-arrow-for-gopher-part1/</link><pubDate>Sun, 25 Jun 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/06/25/a-guide-of-using-apache-arrow-for-gopher-part1/</guid><description>本文永久链接 – https://tonybai.com/2023/06/25/a-guide-of-using-apache-arrow-for-gopher-part1 如果你不是做大数据分析的，提到Arrow这个词，你可能会以为我要聊聊那个箭牌卫浴或是箭牌口香糖(注：其实箭牌口香糖使用的单词并非Arrow)。其实我要聊的是Apache的一个顶级项目：Arrow。 为什么要聊这个项目呢？说来话...</description></item><item><title>Go语言包设计指南</title><link>https://tonybai.com/2023/06/18/go-package-design-guide/</link><pubDate>Sun, 18 Jun 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/06/18/go-package-design-guide/</guid><description>本文永久链接 – https://tonybai.com/2023/06/18/go-package-design-guide 1\. Go包的认知 ---------- 1.1 Go包是基本功能单元 我们知道Go包是Go编程语言中的一个重要概念，它是一组相关的Go源代码文件。并且，在Go中，每个Go源文件都必须属于一个包。 Go包是一个逻辑上独立的单元，是Go的**基本功能单元**，用来做功能边...</description></item><item><title>Go GC：了解便利背后的开销</title><link>https://tonybai.com/2023/06/13/understand-go-gc-overhead-behind-the-convenience/</link><pubDate>Tue, 13 Jun 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/06/13/understand-go-gc-overhead-behind-the-convenience/</guid><description>本文永久链接 – https://tonybai.com/2023/06/13/understand-go-gc-overhead-behind-the-convenience &amp;gt; 注：本文部分摘录自GopherChina 2023前的《Go高级工程师训练营》课程。 1\. 简介 ------ 当今，移动互联网和人工智能的快(越)速(来)发(越)展(卷)，对编程语言的高效性和便利性提出了更高的要求...</description></item><item><title>Go语言反射编程指南</title><link>https://tonybai.com/2023/06/04/reflection-programming-guide-in-go/</link><pubDate>Sun, 04 Jun 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/06/04/reflection-programming-guide-in-go/</guid><description>本文永久链接 – https://tonybai.com/2023/06/04/reflection-programming-guide-in-go 反射是一种编程语言的高级特性，它允许程序在运行时检视自身的结构和行为。通过反射，程序可以动态地获取类型(type)与值(value)等信息，并对它们进行操作，诸如修改字段、调用方法等，这使得程序具有更大的灵活性和可扩展性。 不过，反射虽然具有强大的功...</description></item><item><title>理解时序数据库的时间线</title><link>https://tonybai.com/2023/05/28/understand-time-series-of-tsdb/</link><pubDate>Sun, 28 May 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/05/28/understand-time-series-of-tsdb/</guid><description>本文永久链接 – https://tonybai.com/2023/05/28/understand-time-series-of-tsdb 在当今数据爆炸的时代，时序数据已经成为企业和组织中不可或缺的一部分。它们包括了从传感器、监控设备、日志记录系统和金融交易等多种来源的大量数据，这些数据按照时间顺序排列，记录了各种事件和活动的发生和变化。时序数据的分析和处理对于企业的业务决策和运营效率至关重要...</description></item><item><title>聊聊Go语言的控制语句</title><link>https://tonybai.com/2023/05/27/control-flow-statement-in-go/</link><pubDate>Sat, 27 May 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/05/27/control-flow-statement-in-go/</guid><description>本文永久链接 – https://tonybai.com/2023/05/27/control-flow-statement-in-go 在高级编程语言中，控制流语句(control-flow statement)是一类用于控制程序执行流程的语句，以下简称为**控制语句**。它们可以根据条件或循环执行相应的代码块，或者跳转到指定位置执行代码。 常见的控制语句包括： * 条件语句：根据条件执行不同的...</description></item><item><title>Go与神经网络：张量运算</title><link>https://tonybai.com/2023/05/21/go-and-nn-part1-tensor-operations/</link><pubDate>Sun, 21 May 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/05/21/go-and-nn-part1-tensor-operations/</guid><description>本文永久链接 – https://tonybai.com/2023/05/21/go-and-nn-part1-tensor-operations 0\. 背景 ------ 2023年年初，我们很可能是见证了一次新工业革命的起点，也可能是见证了AGI(Artificial general intelligence，通用人工智能)孕育的开始。ChatGPT应用以及后续GPT-4大模型的出现，其震撼...</description></item><item><title>Go错误处理：错误链使用指南</title><link>https://tonybai.com/2023/05/14/a-guide-of-using-go-error-chain/</link><pubDate>Sun, 14 May 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/05/14/a-guide-of-using-go-error-chain/</guid><description>本文永久链接 – https://tonybai.com/2023/05/14/a-guide-of-using-go-error-chain 0\. Go错误处理简要回顾 -------------- Go是一种非常强调错误处理的编程语言。在Go中，错误被表示为实现了error接口的类型的值，error接口只有一个方法： type error interface { Error() string...</description></item><item><title>Go项目组织：在单一repo中管理多个Go module指南</title><link>https://tonybai.com/2023/05/10/a-guide-of-managing-multiple-go-modules-in-mono-repo/</link><pubDate>Wed, 10 May 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/05/10/a-guide-of-managing-multiple-go-modules-in-mono-repo/</guid><description>本文永久链接 – https://tonybai.com/2023/05/10/a-guide-of-managing-multiple-go-modules-in-mono-repo 0\. 单repo单module管理回顾 -------------------- 众所周知，Go在1.11版本中引入了go module，随着近几年Go module机制的逐渐成熟，它已经被Go团队确定为**Go...</description></item><item><title>Go：值与指针</title><link>https://tonybai.com/2023/05/05/go-value-and-pointer/</link><pubDate>Fri, 05 May 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/05/05/go-value-and-pointer/</guid><description>本文永久链接 – https://tonybai.com/2023/05/05/go-value-and-pointer 1\. 计算机中的值 ---------- 在百万年的演化历史中，人类对事物的属性进行了抽象，有了数量、精度、信息等概念的表示，对应的我们称之为整数、小数、文本文字等。计算机出现后，我们使用计算机对真实世界的问题进行建模，通过计算机的高效计算解决这些问题并输出答案。为了建模，计...</description></item><item><title>Go 1.21新特性前瞻</title><link>https://tonybai.com/2023/04/26/go-1-21-foresight/</link><pubDate>Wed, 26 Apr 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/04/26/go-1-21-foresight/</guid><description>本文永久链接 – https://tonybai.com/2023/04/26/go-1-21-foresight Go 1.21版本正在如火如荼地开发当中，按照Go核心团队的一年两次的发布节奏来算，Go 1.21版本预计将在2023年8月发布(Go 1.20版本是在2023年2月份发布的)。 本文将和大家一起看看Go 1.21都会带来哪些新特性。不过由于目前为时尚早，下面列出的有些变化最终不一定...</description></item><item><title>单测时尽量用fake object</title><link>https://tonybai.com/2023/04/20/provide-fake-object-for-external-collaborators/</link><pubDate>Thu, 20 Apr 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/04/20/provide-fake-object-for-external-collaborators/</guid><description>本文永久链接 – https://tonybai.com/2023/04/20/provide-fake-object-for-external-collaborators 1\. 单元测试的难点：外部协作者(external collaborators)的存在 -------------------------------------------- 单元测试是软件开发的一个重要部分，它有助于在开...</description></item><item><title>理解unsafe-assume-no-moving-gc包</title><link>https://tonybai.com/2023/04/16/understanding-unsafe-assume-no-moving-gc/</link><pubDate>Sun, 16 Apr 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/04/16/understanding-unsafe-assume-no-moving-gc/</guid><description>本文永久链接 – https://tonybai.com/2023/04/16/understanding-unsafe-assume-no-moving-gc 1\. 背景 ------ 在之前的《Go与神经网络：张量计算》一文中，不知道大家是否发现了，所有例子代码执行时，前面都加了一个环境变量ASSUME\_NO\_MOVING\_GC\_UNSAFE\_RISK\_IT\_WITH，就像下面...</description></item><item><title>一文告诉你当module path为main时执行go test失败的真正原因</title><link>https://tonybai.com/2023/04/08/the-reason-why-go-test-fails-when-module-path-is-main/</link><pubDate>Sat, 08 Apr 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/04/08/the-reason-why-go-test-fails-when-module-path-is-main/</guid><description>本文永久链接 – https://tonybai.com/2023/04/08/the-reason-why-go-test-fails-when-module-path-is-main 近期收到新加入“Gopher部落”知识星球的星友“凌风”的一个问题，内容如下： 在一个目录下，我编写了a.go和a_test.go，在go mod init main后执行go test，会报错：could no...</description></item><item><title>一文告诉你哪些map element类型支持就地更新</title><link>https://tonybai.com/2023/04/02/map-element-types-support-in-place-update/</link><pubDate>Sun, 02 Apr 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/04/02/map-element-types-support-in-place-update/</guid><description>本文永久链接 – https://tonybai.com/2023/04/02/map-element-types-support-in-place-update 年初，我代表团队和人民邮电出版社签订了翻译《Go Fundamentals》一书的合同，本月底便是四分之一进度的交稿时间点，近期闲时我们都在忙着做交叉review。 上周末我review小伙伴翻译的有关map类型的章节时，看到了书中对m...</description></item><item><title>使用go test框架驱动的自动化测试</title><link>https://tonybai.com/2023/03/30/automated-testing-driven-by-go-test/</link><pubDate>Thu, 30 Mar 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/03/30/automated-testing-driven-by-go-test/</guid><description>本文永久链接 – https://tonybai.com/2023/03/30/automated-testing-driven-by-go-test 一. 背景 ----- 团队的测试人员稀缺，无奈只能“自己动手，丰衣足食”，针对我们开发的系统进行自动化测试，这样**既节省的人力，又提高了效率，还增强了对系统质量保证的信心**。 我们的目标是让自动化测试覆盖三个环境，如下图所示： 我们看到这三个...</description></item><item><title>Go开发命令行程序指南</title><link>https://tonybai.com/2023/03/25/the-guide-of-developing-cli-program-in-go/</link><pubDate>Sat, 25 Mar 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/03/25/the-guide-of-developing-cli-program-in-go/</guid><description>&amp;gt; 注：上面篇首配图的底图由百度文心一格生成。 本文永久链接 – https://tonybai.com/2023/03/25/the-guide-of-developing-cli-program-in-go 近期在Twitter上看到一个名为“Command Line Interface Guidelines”的站点，这个站点汇聚了帮助大家编写出更好命令行程序的哲学与指南。这份指南基于传统的U...</description></item><item><title>聊聊Go语言的全局变量</title><link>https://tonybai.com/2023/03/22/global-variable-in-go/</link><pubDate>Wed, 22 Mar 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/03/22/global-variable-in-go/</guid><description>本文永久链接 – https://tonybai.com/2023/03/22/global-variable-in-go &amp;gt; 注：上面篇首配图的底图由百度文心一格生成。 C语言是Go语言的先祖之一，Go继承了很多C语言的语法与表达方式，这其中就包含了**全局变量**，虽然Go在其语法规范中并没有直接给出全局变量的定义。但是已经入门Go的童鞋都知道，在Go中**包的导出变量(exported va...</description></item><item><title>聊聊godoc、go doc与pkgsite</title><link>https://tonybai.com/2023/03/20/godoc-vs-go-doc-vs-pkgsite/</link><pubDate>Mon, 20 Mar 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/03/20/godoc-vs-go-doc-vs-pkgsite/</guid><description>本文永久链接 – https://tonybai.com/2023/03/20/godoc-vs-go-doc-vs-pkgsite 就像上一篇文章聊到的Go内置单元测试框架一样，既重视语言特性，又不忘对Go软件项目提供整体环境特性的Go在诞生伊始就定义了如何在源码中通过注释编写代码文档的格式，并提供了基于代码注释实时生成Go文档并支持文档查看的工具。 而一些早期的语言，比如C、C++等则需要使用...</description></item><item><title>一文搞懂Go subtest</title><link>https://tonybai.com/2023/03/15/an-intro-of-go-subtest/</link><pubDate>Wed, 15 Mar 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/03/15/an-intro-of-go-subtest/</guid><description>&amp;gt; 注：本篇首图片基于lexica AI生成的图片二次加工而成。 本文永久链接 – https://tonybai.com/2023/03/15/an-intro-of-go-subtest 单元测试(unit testing)是软件开发中至关重要的一环，它存在的意义包括但不限于如下几个方面： * 提高代码质量：单元测试可以确保代码的正确性、可靠性和稳定性，从而减少代码缺陷和bug。 * 减少回归...</description></item><item><title>Go是一门面向对象编程语言吗</title><link>https://tonybai.com/2023/03/12/is-go-object-oriented/</link><pubDate>Sun, 12 Mar 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/03/12/is-go-object-oriented/</guid><description>本文永久链接 – https://tonybai.com/2023/03/12/is-go-object-oriented Go语言已经开源13年了，在近期TIOBE发布的2023年3月份的编程语言排行榜中，Go再次冲入前十，相较于Go在2022年底的排名提升了2个位次： 《Go语言第一课》专栏中关于Go在这两年开始飞起的“预言”也正在逐步成为现实^\_^，大家学习Go的热情也在快速提升， 《Go...</description></item><item><title>小厂内部私有Go module拉取方案3</title><link>https://tonybai.com/2023/03/03/the-approach-to-go-get-private-go-module-in-house-part3/</link><pubDate>Fri, 03 Mar 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/03/03/the-approach-to-go-get-private-go-module-in-house-part3/</guid><description>本文永久链接 – https://tonybai.com/2023/03/03/the-approach-to-go-get-private-go-module-in-house-part3 1\. 缘起 ------ 我们的Go团队这两年完全是按照之前写的《小厂内部私有Go module拉取方案》和《小厂内部私有Go module拉取方案（续）》中的方案搭建的内部拉取私有仓库的基础设施，总体感觉...</description></item><item><title>十分钟入门Go语言</title><link>https://tonybai.com/2023/02/23/learn-go-in-10-min/</link><pubDate>Thu, 23 Feb 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/02/23/learn-go-in-10-min/</guid><description>本文永久链接 – https://tonybai.com/2023/02/23/learn-go-in-10-min 本文旨在带大家快速入门Go语言，期望小伙伴们在花费十分钟左右通读全文后能对Go语言有一个初步的认知，为后续进一步深入学习Go奠定基础。 本文假设你完全没有接触过Go，你可能是一名精通其他编程语言的程序员，也可能是毫无编程经验、刚刚想转行为码农的热血青年。 编程简介 ---- 编程就...</description></item><item><title>2023年的Rust与Go[译]</title><link>https://tonybai.com/2023/02/22/rust-vs-go-in-2023/</link><pubDate>Wed, 22 Feb 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/02/22/rust-vs-go-in-2023/</guid><description>本文永久链接 – https://tonybai.com/2023/02/22/rust-vs-go-in-2023 本文译自《Rust vs Go in 2023》。 &amp;gt; 注：从2022年下半年开始，我们研发团队的产品研发不再局限于云端，车端也是将来的一个重要方向。于是我除了继续对Go语言保持常规的高度关注之外，也逐步开始留意Rust语言的发展。 * * * Rust和Go哪个更好？Go还是Ru...</description></item><item><title>一文告诉你如何判断Go接口变量是否相等</title><link>https://tonybai.com/2023/02/19/how-to-determine-if-two-interface-vars-are-equal/</link><pubDate>Sun, 19 Feb 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/02/19/how-to-determine-if-two-interface-vars-are-equal/</guid><description>本文永久链接 – https://tonybai.com/2023/02/19/how-to-determine-if-two-interface-vars-are-equal 近日一位《Go语言第一课》专栏的读者向我提出一个问题，代码如下： func main() { printNonEmptyInterface1() } type T struct { name string } func (...</description></item><item><title>Go 1.20中值得关注的几个变化</title><link>https://tonybai.com/2023/02/08/some-changes-in-go-1-20/</link><pubDate>Wed, 08 Feb 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/02/08/some-changes-in-go-1-20/</guid><description>本文永久链接 – https://tonybai.com/2023/02/08/some-changes-in-go-1-20 美国时间2023年2月1日，唯一尚未退休的Go语言之父Robert Griesemer代表Go核心开发团队在Go官博撰文正式发布了Go 1.20版本。就像Russ Cox在2022 GopherCon大会所说的那样：**Go2永不会到来，Go 1.x.y将无限延续**！ ...</description></item><item><title>将Roaring Bitmap序列化为JSON</title><link>https://tonybai.com/2023/02/01/serialize-roaring-bitmap-to-json/</link><pubDate>Wed, 01 Feb 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/02/01/serialize-roaring-bitmap-to-json/</guid><description>本文永久链接 – https://tonybai.com/2023/02/01/serialize-roaring-bitmap-to-json 近期在实现一个数据结构时使用到了位图索引(bitmap index)，本文就来粗浅聊聊位图(bitmap)。 一. 什么是bitmap 位图索引使用位数组(bit array，也有叫bitset的，通常被称为位图(bitmap)，以下均使用bitmap这...</description></item><item><title>聊聊Go与TLS 1.3</title><link>https://tonybai.com/2023/01/13/go-and-tls13/</link><pubDate>Fri, 13 Jan 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/01/13/go-and-tls13/</guid><description>本文永久链接 – https://tonybai.com/2023/01/13/go-and-tls13 除了一些综述类文章和译文，我的文章选题多来源于实际工作和学习中遇到的问题。这次我们来聊聊近期遇到一个问题：**如何加快基于TLS安全通信的海量连接的建连速度**? TLS(Transport Layer Security)传输安全层的下面是TCP层，我们首先可能会想到的是**优化内核有关TCP...</description></item><item><title>2022年博客回顾与总结</title><link>https://tonybai.com/2023/01/11/2022-blog-summary/</link><pubDate>Wed, 11 Jan 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/01/11/2022-blog-summary/</guid><description>本文永久链接 – https://tonybai.com/2023/01/11/2022-blog-summary 2022年对我来说，也是**十分忙碌和充实的一年**。尽管和2021年相比，成果物没那么多^\_^。 伴随着二宝的长大，我发现自己的闲暇时间被进一步“压缩”，还好大宝上初中后领悟到了自驱学习的重要性和相关方法后，她的学习现在基本不需要我过问了。 2022年初，《Go语言精进之路：从新...</description></item><item><title>聊聊Prometheus Gauge的增减操作实现</title><link>https://tonybai.com/2023/01/10/how-prometheus-gauge-add-and-sub/</link><pubDate>Tue, 10 Jan 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/01/10/how-prometheus-gauge-add-and-sub/</guid><description>本文永久链接 – https://tonybai.com/2023/01/10/how-prometheus-gauge-add-and-sub 1\. Gauge是啥？ 熟悉Prometheus的小伙伴们都知道Prometheus提供了四大指标类型： * Counter * Gauge * Histogram * Summary Histogram和Summary是一类，但理解起来稍复杂一些，这...</description></item><item><title>2022年Go语言盘点：泛型落地，无趣很好，稳定为王</title><link>https://tonybai.com/2022/12/29/the-2022-review-of-go-programming-language/</link><pubDate>Thu, 29 Dec 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/12/29/the-2022-review-of-go-programming-language/</guid><description>本文永久链接 – https://tonybai.com/2022/12/29/the-2022-review-of-go-programming-language 早早就计划好在年前写一个Go语言年度盘点，就像2020年和2021年那样。但恰逢国内疫情管控放开，一波阳了之后身体十分容易疲劳，再加上工作上的事情挺多，这篇盘点也就迟迟没能下笔。 今年的盘点思路将围绕三个关键字来展开：**泛型、无趣(...</description></item><item><title>Go类型系统：有何与众不同</title><link>https://tonybai.com/2022/12/18/go-type-system/</link><pubDate>Sun, 18 Dec 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/12/18/go-type-system/</guid><description>本文永久链接 – https://tonybai.com/2022/12/18/go-type-system Go是一门强类型的静态编程语言。使用Go编程，我们的每一行代码几乎都离不开**类型**。因此，深入学习Go，我们首先要对Go的类型系统(type system)有一个全面和深入的认知。Go类型系统可以给予我们一个全局整体的视角，以帮助我们更好地学习和理解Go语言中那些具体的与类型相关的内容...</description></item><item><title>Go为什么能成功</title><link>https://tonybai.com/2022/12/07/why-go-succeed/</link><pubDate>Wed, 07 Dec 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/12/07/why-go-succeed/</guid><description>本文永久链接 – https://tonybai.com/2022/12/07/why-go-succeed * * * 大家在入门Go语言时，多埋头于Go语法，忙于练手或快速完成公司的项目，无暇思考。 但当大家到了要进阶，要冲刺高级阶段的时候，我建议你不能再稀里糊涂了。既然入了Go这个坑，在进入高级阶段前，我们最好在门口的“影壁墙”前驻留一下。 仔细思考一下**我们投入这么多精力研究的Go为什么...</description></item><item><title>这可能是最权威、最全面的Go语言编码风格规范了！</title><link>https://tonybai.com/2022/11/26/intro-of-google-go-style/</link><pubDate>Sat, 26 Nov 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/11/26/intro-of-google-go-style/</guid><description>本文永久链接 – https://tonybai.com/2022/11/26/intro-of-google-go-style 每种编程语言除了固定的语法之外，都会有属于自己的**地道的(idiomatic)写法**。其实，自然语言也不例外，你想，你用心想想是不是这样。 语言的设计者们希望开发人员都能编写统一风格的地道的代码，这样不仅代码可读性好，便于社区统一代码风格，而且针对惯用法的优化也可能...</description></item><item><title>Go 1.20新特性前瞻</title><link>https://tonybai.com/2022/11/17/go-1-20-foresight/</link><pubDate>Thu, 17 Nov 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/11/17/go-1-20-foresight/</guid><description>本文永久链接 – https://tonybai.com/2022/11/17/go-1-20-foresight * * * 在近期Russ Cox代表Go核心团队发表的“Go, 13周年”一文中，他提到了“在Go的第14个年头，Go团队将继续努力使Go成为用于大规模软件工程的最好的环境，将特别关注供应链安全，提高兼容性和结构化日志记录，当然还会有很多其他改进，包括profile-guided ...</description></item><item><title>使用反射操作channel</title><link>https://tonybai.com/2022/11/15/using-reflect-to-manipulate-channels/</link><pubDate>Tue, 15 Nov 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/11/15/using-reflect-to-manipulate-channels/</guid><description>本文永久链接 – https://tonybai.com/2022/11/15/using-reflect-to-manipulate-channels * * * 今年教师节极客时间送给讲师4999 SVIP卡，一直没顾过来用，上周激活后在极客时间的众多精品课和专栏中徜徉，收获颇丰。尤其是在拜读鸟窝老师的《Go并发编程实战课》 后，get到一个以前从未用过的“技能点”：**使用reflect操作...</description></item><item><title>Go，13周年[译]</title><link>https://tonybai.com/2022/11/11/go-opensource-13-years/</link><pubDate>Fri, 11 Nov 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/11/11/go-opensource-13-years/</guid><description>本文永久链接 – https://tonybai.com/2022/11/11/go-opensource-13-years 在中华大地的老百姓抱着手机进行双十一购物节狂欢，忙着支付尾款和秒杀的时候，Go核心团队的Russ Cox代表Go语言项目团队在Go官博上发表了《Thirteen Years of Go》的博文，纪念Go语言开源13周年，并对2021年以来Go语言的演进进行了归纳总结，对Go...</description></item><item><title>通过实例理解Go标准库context包</title><link>https://tonybai.com/2022/11/08/understand-go-context-by-example/</link><pubDate>Tue, 08 Nov 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/11/08/understand-go-context-by-example/</guid><description>* **原weibo账号处于jy状态，临时先用小号 https://weibo.com/u/6484441286，欢迎大家关注！** * “Gopher部落”知识星球双十一新人特惠，领劵加入即享立减88元优惠 – https://t.zsxq.com/078E1QTjM 本文永久链接 – https://tonybai.com/2022/11/08/understand-go-context-by...</description></item><item><title>slog：Go官方版结构化日志包</title><link>https://tonybai.com/2022/10/30/first-exploration-of-slog/</link><pubDate>Sun, 30 Oct 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/10/30/first-exploration-of-slog/</guid><description>本文永久链接 – https://tonybai.com/2022/10/30/first-exploration-of-slog * * * Go自诞生以来就在其标准库内置了log包作为Go源码输出日志的标准组件，该包被广泛应用于Go标准库自身以及Go社区项目中。 不过，针对Go标准库log包，Go社区要求改进的声音始终不断，主流声音聚焦在以下几点： * log包是为了方便人类可读而设计的，不支...</description></item><item><title>当函数设计遇到切片</title><link>https://tonybai.com/2022/10/27/when-encountering-slice-during-function-design/</link><pubDate>Thu, 27 Oct 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/10/27/when-encountering-slice-during-function-design/</guid><description>本文永久链接 – https://tonybai.com/2022/10/27/when-encountering-slice-during-function-design 切片(slice)是Go语言中的一种重要的也是最常用的同构数据类型。在Go语言编码过程中，我们多数情况下会使用slice替代数组，一来是因为其动态可扩展，二来在多数场合传递slice的开销要比传递数组要小(这里有一些例外)。 ...</description></item><item><title>Go标准库依赖的那些modules</title><link>https://tonybai.com/2022/10/25/the-modules-that-go-standard-library-depend-on/</link><pubDate>Tue, 25 Oct 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/10/25/the-modules-that-go-standard-library-depend-on/</guid><description>本文永久链接 – https://tonybai.com/2022/10/25/the-modules-that-go-standard-library-depend-on 对于程序员来说，编写的代码依赖标准库是“天经地义”的事情。标准库在程序员眼中就是高质量的代名词，也是最值得信赖的非自己所写的代码，当然更是代码包依赖关系链条上的最后一环，即所有直接或间接依赖的第三方module最终都会依赖标准...</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语言之道[译]</title><link>https://tonybai.com/2022/09/25/the-tao-of-go/</link><pubDate>Sun, 25 Sep 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/09/25/the-tao-of-go/</guid><description>本文永久链接 – https://tonybai.com/2022/09/25/the-tao-of-go 近期阅读了John Arundel的文章《The Tao of Go》，看完后我都有心去阅读一遍《道德经》了:)。作者将Go语言设计哲学与惯例与“道”学三宝有机的联系到一起，给了我不小的启发。这里译成中文，供大家参考。 * * * &amp;gt; 你可以让水牛去任何地方，只要它们想去 – 杰拉尔德・温伯...</description></item><item><title>使用viper实现yaml配置文件的合并</title><link>https://tonybai.com/2022/09/20/use-viper-to-do-merge-of-yml-configuration-files/</link><pubDate>Tue, 20 Sep 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/09/20/use-viper-to-do-merge-of-yml-configuration-files/</guid><description>本文永久链接 – https://tonybai.com/2022/09/20/use-viper-to-do-merge-of-yml-configuration-files 作为小厂，我们的基础设施还不够完备，项目经理中秋节通知我们的系统近期要上second-to-last stage环境和生产环境，于是从运维人员部署效率方面考量，我们紧急开发了一个一键安装脚本生成工具，这样运维人员便可以利用...</description></item><item><title>如何像gitlab-runner那样将Go应用安装为系统服务</title><link>https://tonybai.com/2022/09/12/how-to-install-a-go-app-as-a-system-service-like-gitlab-runner/</link><pubDate>Mon, 12 Sep 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/09/12/how-to-install-a-go-app-as-a-system-service-like-gitlab-runner/</guid><description>本文永久链接 – https://tonybai.com/2022/09/12/how-to-install-a-go-app-as-a-system-service-like-gitlab-runner 在《让reviewdog支持gitlab-push-commit，守住代码质量下限》一文中，gitlab-runner(一个Go语言开发的应用)通过自身提供的install命令将自己安装为了一个...</description></item><item><title>有没有安全漏洞，你说了不算，govulncheck是裁判！</title><link>https://tonybai.com/2022/09/10/an-intro-of-govulncheck/</link><pubDate>Sat, 10 Sep 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/09/10/an-intro-of-govulncheck/</guid><description>本文永久链接 – https://tonybai.com/2022/09/10/an-intro-of-govulncheck * * * 2022年9月7日，Go安全团队在Go官博发表文章《Vulnerability Management for Go》，正式向所有Gopher介绍Go对安全漏洞管理的工具和方案。 在这篇文章中，Go安全团队引入了一个名为govulncheck的命令行工具。这个工...</description></item><item><title>让reviewdog支持gitlab-push-commit，守住代码质量下限</title><link>https://tonybai.com/2022/09/08/make-reviewdog-support-gitlab-push-commit-to-preserve-the-code-quality-floor/</link><pubDate>Thu, 08 Sep 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/09/08/make-reviewdog-support-gitlab-push-commit-to-preserve-the-code-quality-floor/</guid><description>本文永久链接 – https://tonybai.com/2022/09/08/make-reviewdog-support-gitlab-push-commit-to-preserve-the-code-quality-floor 一. 代码质量保证的手段 从世界上首款计算机高级程序设计语言Fortran自上世纪50年代诞生以来，编程这个行当已经走过了近70年。虽然年头已不少，但不可否认的一点是...</description></item><item><title>Go 1.19中值得关注的几个变化</title><link>https://tonybai.com/2022/08/22/some-changes-in-go-1-19/</link><pubDate>Mon, 22 Aug 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/08/22/some-changes-in-go-1-19/</guid><description>本文永久链接 – https://tonybai.com/2022/08/22/some-changes-in-go-1-19 我们知道Go团队在2015年重新规定了团队发布版本的节奏，将Go大版本的发布频率确定为每年两次，发布窗口定为每年的2月与8月。而实现自举的Go 1.5版本是这一个节奏下发布的第一个版本。一般来说，Go团队都会在这两个窗口的中间位置发布版本，不过这几年也有意外，比如承载着泛...</description></item><item><title>使用Go开发Kubernetes Operator：基本结构</title><link>https://tonybai.com/2022/08/15/developing-kubernetes-operators-in-go-part1/</link><pubDate>Mon, 15 Aug 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/08/15/developing-kubernetes-operators-in-go-part1/</guid><description>本文永久链接 – https://tonybai.com/2022/08/15/developing-kubernetes-operators-in-go-part1 &amp;gt; 注：文章首图基于《Kubernetes Operators Explained》修改 几年前，我还称Kubernetes为服务编排和容器调度领域的事实标准，如今K8s已经是这个领域的“霸主”，地位无可撼动。不过，虽然Kubern...</description></item><item><title>使用Go语言实现eBPF程序内核态与用户态的双向数据交换</title><link>https://tonybai.com/2022/07/25/bidirectional-data-exchange-between-kernel-and-user-states-of-ebpf-programs-using-go/</link><pubDate>Mon, 25 Jul 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/07/25/bidirectional-data-exchange-between-kernel-and-user-states-of-ebpf-programs-using-go/</guid><description>本文永久链接 – https://tonybai.com/2022/07/25/bidirectional-data-exchange-between-kernel-and-user-states-of-ebpf-programs-using-go 在之前的两篇文章中，无论是使用C语言开发eBPF程序，还是使用Go开发的eBPF程序，都是hello world级别的，可能有用，但谈不上十分实用。 ...</description></item><item><title>使用Go语言开发eBPF程序</title><link>https://tonybai.com/2022/07/19/develop-ebpf-program-in-go/</link><pubDate>Tue, 19 Jul 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/07/19/develop-ebpf-program-in-go/</guid><description>本文永久链接 – https://tonybai.com/2022/07/19/develop-ebpf-program-in-go 在前面的《使用C语言从头开发一个Hello World级别的eBPF程序》一文中，我们详细说明了如何基于C语言和libbpf库从头开发一个eBPF程序(包括其用户态部分)。那篇文章是后续有关eBPF程序开发文章的基础，因为到目前为止，无论eBPF程序的用户态部分用什...</description></item><item><title>使用Go基于国密算法实现双向认证</title><link>https://tonybai.com/2022/07/17/two-way-authentication-using-go-and-sm-algorithm/</link><pubDate>Sun, 17 Jul 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/07/17/two-way-authentication-using-go-and-sm-algorithm/</guid><description>本文永久链接 – https://tonybai.com/2022/07/17/two-way-authentication-using-go-and-sm-algorithm 国内做2B(to Biz)或2G(to Gov)产品和解决方案的企业都绕不过**国密算法**，越来越多的国内甲方在采购需求中包含了基于国密算法的认证、签名、加密等需求。对于国内的车联网平台来说，支持基于国密的双向认证也是大...</description></item><item><title>GoCN社区Go读书会第二期：《Go语言精进之路》</title><link>https://tonybai.com/2022/07/07/gocn-community-go-book-club-issue2-go-programming-from-beginner-to-master/</link><pubDate>Thu, 07 Jul 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/07/07/gocn-community-go-book-club-issue2-go-programming-from-beginner-to-master/</guid><description>本文永久链接 – https://tonybai.com/2022/07/07/gocn-community-go-book-club-issue2-go-programming-from-beginner-to-master 本文是2022年6月26日我在**GoCN社区的Go读书会第二期《Go语言精进之路》直播的文字稿**。本文对直播的内容做了重新整理与修订，供喜欢阅读文字的朋友们在收看直播后...</description></item><item><title>使用C语言从头开发一个Hello World级别的eBPF程序</title><link>https://tonybai.com/2022/07/05/develop-hello-world-ebpf-program-in-c-from-scratch/</link><pubDate>Tue, 05 Jul 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/07/05/develop-hello-world-ebpf-program-in-c-from-scratch/</guid><description>本文永久链接 – https://tonybai.com/2022/07/05/develop-hello-world-ebpf-program-in-c-from-scratch * * * 近两年最火的Linux内核技术非eBPF莫属！ 2019年以来，除了eBPF技术自身快速演进之外，基于eBPF技术的观测(Observability)、安全(Security)和网络(Networking)...</description></item><item><title>Go语言数据竞争检测与数据竞争模式</title><link>https://tonybai.com/2022/06/21/data-race-detection-and-pattern-in-go/</link><pubDate>Tue, 21 Jun 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/06/21/data-race-detection-and-pattern-in-go/</guid><description>本文永久链接 – https://tonybai.com/2022/06/21/data-race-detection-and-pattern-in-go uber，就是那个早早退出中国打车市场的优步，是Go语言早期接纳者，也是Go技术栈的“重度用户”。uber内部的Go代码仓库有5000w+行Go代码，有2100个Go实现的独立服务，这样的Go应用规模在世界范围内估计也是Top3了吧。 uber...</description></item><item><title>小厂内部私有Go module拉取方案（续）</title><link>https://tonybai.com/2022/06/18/the-approach-to-go-get-private-go-module-in-house-part2/</link><pubDate>Sat, 18 Jun 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/06/18/the-approach-to-go-get-private-go-module-in-house-part2/</guid><description>本文永久链接 – https://tonybai.com/2022/06/18/the-approach-to-go-get-private-go-module-in-house-part2 自从去年在公司搭建了内部私有Go module proxy后，我们的私有代理工作得基本良好。按理说，这篇续篇本不该存在:)。 日子一天天过去，Go团队逐渐壮大，空气中都充满了“Go的香气”。 突然有一天，业务...</description></item><item><title>Prometheus采不到数据了！居然是Prometheus client包的锅</title><link>https://tonybai.com/2022/06/15/prometheus-can-not-pick-up-data-because-of-the-prometheus-client-package/</link><pubDate>Wed, 15 Jun 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/06/15/prometheus-can-not-pick-up-data-because-of-the-prometheus-client-package/</guid><description>本文永久链接 – https://tonybai.com/2022/06/15/prometheus-can-not-pick-up-data-because-of-the-prometheus-client-package 在基于eBPF的新一代观测设施尚未成熟之前，我们采用了业界成熟的Prometheus+Grafana方案采集节点与应用度量指标(metrics)信息。众所周知，这样的方案是一...</description></item><item><title>Go 1.19新特性前瞻</title><link>https://tonybai.com/2022/06/12/go-1-19-foresight/</link><pubDate>Sun, 12 Jun 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/06/12/go-1-19-foresight/</guid><description>本文永久链接 – https://tonybai.com/2022/06/12/go-1-19-foresight 美国时间2022年5月7日，Go 1.19版本开发分支进入新特性冻结(freeze)阶段，即只能修Bug，不能再向Go 1.19版本中增加新特性了。由于上一个版本Go 1.18因引入泛型改动较大，推迟了一个月发布，这直接导致了Go 1.19版本的开发周期被缩短。 虽然开发周期少了近一...</description></item><item><title>Go：方法集合中“消失的方法”</title><link>https://tonybai.com/2022/06/06/the-disappeared-method-in-method-set/</link><pubDate>Mon, 06 Jun 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/06/06/the-disappeared-method-in-method-set/</guid><description>本文永久链接 – https://tonybai.com/2022/06/06/the-disappeared-method-in-method-set 在《Go语言第一课》中，我花了三节课对Go方法做了全面细致的讲解，而类型的方法集合是其中的一个重点，因为**方法集合决定接口实现**，并且课程还分门别类地对各种使用类型嵌入(type embedding)机制定义的类型进行了说明，讲解了这些类型的...</description></item><item><title>评点2021-2022年上市的那些Go语言新书</title><link>https://tonybai.com/2022/06/01/reviewing-those-new-go-language-books-coming-out-in-2021-2022/</link><pubDate>Wed, 01 Jun 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/06/01/reviewing-those-new-go-language-books-coming-out-in-2021-2022/</guid><description>本文永久链接 – https://tonybai.com/2022/06/01/reviewing-those-new-go-language-books-coming-out-in-2021-2022 计算机科学与技术这个工业大类与传统工业类别相比还很“年轻”，并且由于历史原因，整个计算机科学与技术学科的奠基都是由欧美人完成的，因此但凡诞生一门新IT技术或新编程语言，我们首先参考的都是来自欧美的...</description></item><item><title>手把手教你使用ANTLR和Go实现一门DSL语言（第五部分）：错误处理</title><link>https://tonybai.com/2022/05/30/an-example-of-implement-dsl-using-antlr-and-go-part5/</link><pubDate>Mon, 30 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/30/an-example-of-implement-dsl-using-antlr-and-go-part5/</guid><description>本文永久链接 – https://tonybai.com/2022/05/30/an-example-of-implement-dsl-using-antlr-and-go-part5 无论是端应用还是云应用，要上生产环境，有一件事必须要做好，那就是**错误处理**。在本系列前面的文章中，我们设计了文法与语法、建立并验证了语义模型，但我们没有特别关注错误处理。在这一篇中，我们就来补上这个环节。 D...</description></item><item><title>手把手教你使用ANTLR和Go实现一门DSL语言（第四部分）：组装语义模型并测试DSL</title><link>https://tonybai.com/2022/05/28/an-example-of-implement-dsl-using-antlr-and-go-part4/</link><pubDate>Sat, 28 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/28/an-example-of-implement-dsl-using-antlr-and-go-part4/</guid><description>本文永久链接 – https://tonybai.com/2022/05/28/an-example-of-implement-dsl-using-antlr-and-go-part4 在上一篇文章中，我们为DSL建立了完整的语义模型，我们距离DSL的语法示例真正run起来还差最后一步，那就是基于语法树提取信息(逆波兰式)、组装语义模型，在加载语义模型并实例化各个规则处理器(processor)后...</description></item><item><title>手把手教你使用ANTLR和Go实现一门DSL语言（第三部分）：建立和验证语义模型</title><link>https://tonybai.com/2022/05/27/an-example-of-implement-dsl-using-antlr-and-go-part3/</link><pubDate>Fri, 27 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/27/an-example-of-implement-dsl-using-antlr-and-go-part3/</guid><description>本文永久链接 – https://tonybai.com/2022/05/27/an-example-of-implement-dsl-using-antlr-and-go-part3 在前面的系列文章中，我们为气象学家们设计了一门名为**Tdat**的DSL，使用ANTLR的文法规则编写了Tdat的文法，基于该文法生成了Tdat的语法解析器代码并初步验证了文法的正确性，Tdat可以成功将我们编写...</description></item><item><title>手把手教你使用ANTLR和Go实现一门DSL语言（第二部分）：文法验证</title><link>https://tonybai.com/2022/05/25/an-example-of-implement-dsl-using-antlr-and-go-part2/</link><pubDate>Wed, 25 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/25/an-example-of-implement-dsl-using-antlr-and-go-part2/</guid><description>本文永久链接 – https://tonybai.com/2022/05/25/an-example-of-implement-dsl-using-antlr-and-go-part2 在本系列的第一篇文章《手把手教你使用ANTLR和Go实现一门DSL语言：设计DSL语法与文法》中，我们已经为气象学家们设计了一门DSL，建立了语法样例，并用ANTLR4文法将DSL定义了出来。按照外部DSL设计与实...</description></item><item><title>手把手教你使用ANTLR和Go实现一门DSL语言（第一部分）：设计DSL语法与文法</title><link>https://tonybai.com/2022/05/24/an-example-of-implement-dsl-using-antlr-and-go-part1/</link><pubDate>Tue, 24 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/24/an-example-of-implement-dsl-using-antlr-and-go-part1/</guid><description>本文永久链接 – https://tonybai.com/2022/05/24/an-example-of-implement-dsl-using-antlr-and-go-part1 在《使用ANTLR和Go实现DSL入门》一文中，我们了解了DSL与通用编程语言(GPL)的差异、DSL解析器生成工具选择以及ANTLR文法的简要书写规则，并和大家一起完成了一个CSV解析器的例子。看完上述文章后，你...</description></item><item><title>使用具名返回值巧妙解决泛型函数返回零值的问题</title><link>https://tonybai.com/2022/05/20/solving-problems-in-generic-function-implementation-using-named-return-values/</link><pubDate>Fri, 20 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/20/solving-problems-in-generic-function-implementation-using-named-return-values/</guid><description>本文永久链接 – https://tonybai.com/2022/05/20/solving-problems-in-generic-function-implementation-using-named-return-values Go语言泛型语法特性在Go 1.18版本落地后，不出所料，在github上看到大量的基础容器类型数据结构被用泛型重写。这种重写我觉得是很正常、很自然的，并且实现良好...</description></item><item><title>绞尽脑汁，帮你理解方法本质并选择正确的receiver类型</title><link>https://tonybai.com/2022/05/17/understand-the-nature-of-go-method-and-how-to-choose-the-correct-receiver-type/</link><pubDate>Tue, 17 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/17/understand-the-nature-of-go-method-and-how-to-choose-the-correct-receiver-type/</guid><description>本文永久链接 – https://tonybai.com/2022/05/17/understand-the-nature-of-go-method-and-how-to-choose-the-correct-receiver-type Go语言虽然不支持经典的面向对象语法元素，比如：类、对象、继承等，但Go语言也有方法（method）。和函数相比，Go语言中的方法在声明形式上仅仅多了一个参数，G...</description></item><item><title>Go程序员拥抱C语言简明指南</title><link>https://tonybai.com/2022/05/16/the-short-guide-of-embracing-c-lang-for-gopher/</link><pubDate>Mon, 16 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/16/the-short-guide-of-embracing-c-lang-for-gopher/</guid><description>本文永久链接 – https://tonybai.com/2022/05/16/the-short-guide-of-embracing-c-lang-for-gopher 本文是为于航老师的极客时间专栏《深入C语言和程序运行原理》写的加餐文章《Tony Bai：Go程序员拥抱C语言简明指南》，这里分享给大家，尤其是那些想学习C语言的Gopher们。 * * * 你好，我是Tony Bai。 也许...</description></item><item><title>使用ANTLR和Go实现DSL入门</title><link>https://tonybai.com/2022/05/10/introduction-of-implement-dsl-using-antlr-and-go/</link><pubDate>Tue, 10 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/10/introduction-of-implement-dsl-using-antlr-and-go/</guid><description>本文永久链接 – https://tonybai.com/2022/05/10/introduction-of-implement-dsl-using-antlr-and-go 一. 引子 设计与实现一门像Go这样的通用编程语言的确很难！那是世界上少数程序员从事的事业，但是实现一门领域特定语言(Domain Specific Language, DSL)似乎是可行的。 就像著名的语言解析器生成工具...</description></item><item><title>Go编程语言与环境：万字长文复盘导致Go语言成功的那些设计决策[译]</title><link>https://tonybai.com/2022/05/04/the-paper-of-go-programming-language-and-environment/</link><pubDate>Wed, 04 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/04/the-paper-of-go-programming-language-and-environment/</guid><description>本文永久链接 – https://tonybai.com/2022/05/04/the-paper-of-go-programming-language-and-environment 美国计算机学会通讯(Communications of the ACM)期刊2022年5月第65卷第5期将发表一篇有关Go语言的综述类Paper：《Go编程语言与环境》，这类综述类文章只有资深的Go核心团队的人才“...</description></item><item><title>我来告诉你Go项目标准结构如何布局</title><link>https://tonybai.com/2022/04/28/the-standard-layout-of-go-project/</link><pubDate>Thu, 28 Apr 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/04/28/the-standard-layout-of-go-project/</guid><description>本文永久链接 – https://tonybai.com/2022/04/28/the-standard-layout-of-go-project 每当我们编写一个非hello world的实用Go程序或库时，我们都会在项目结构、代码风格以及标识符命名这三个“门槛”前面踯躅徘徊许久，甚至始终得不到满意答案。 本文将通过《Go语言精进之路：从新手到高手的编程思想、方法与技巧》这本书的内容来详细看一看...</description></item><item><title>世界读书日：带你走近Go语言编程思维</title><link>https://tonybai.com/2022/04/23/taking-a-closer-look-at-programming-thinking-in-go/</link><pubDate>Sat, 23 Apr 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/04/23/taking-a-closer-look-at-programming-thinking-in-go/</guid><description>本文永久链接 – https://tonybai.com/2022/04/23/taking-a-closer-look-at-programming-thinking-in-go 经过十几年的演化和发展，Go语言在全世界范围内已经拥有了百万级别的拥趸，在这些开发者当中，除了一部分新入行的编程语言初学者之外，更多的是从其他编程语言阵营转过来的开发者。由于Go语言上手容易，在转Go的初期大家很快就掌...</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字符串比较，终于有人讲清楚了</title><link>https://tonybai.com/2022/04/18/inside-go-string-comparison/</link><pubDate>Mon, 18 Apr 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/04/18/inside-go-string-comparison/</guid><description>本文永久链接 – https://tonybai.com/2022/04/18/inside-go-string-comparison 西娅(Thea)是一个刚刚入门Go语言的妹子程序员，今天她遇到了一个让她“surprise”的问题。下面就是那段让妹子西娅困惑的Go代码： func main() { s1 := &amp;#34;12345&amp;#34; s2 := &amp;#34;2&amp;#34; fmt.Println(`&amp;#34;12345&amp;#34; &amp;gt; &amp;#34;...</description></item><item><title>Go是如何缓解供应链攻击的[译]</title><link>https://tonybai.com/2022/04/02/how-go-mitigates-supply-chain-attacks/</link><pubDate>Sat, 02 Apr 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/04/02/how-go-mitigates-supply-chain-attacks/</guid><description>本文永久链接 – https://tonybai.com/2022/04/02/how-go-mitigates-supply-chain-attacks 这些年来，关于软件供应链的安全问题频发，软件供应链已然成为IT安全领域的一个热点，在前不久的《聊聊Go语言的软件供应链安全》一文中我曾提到过Go在SBOM(软件物料清单)方面给开发人员带来的方便。这两天Go官博又发表了一篇由Go项目安全负责人F...</description></item><item><title>Go社区主流Kafka客户端简要对比</title><link>https://tonybai.com/2022/03/28/the-comparison-of-the-go-community-leading-kakfa-clients/</link><pubDate>Mon, 28 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/28/the-comparison-of-the-go-community-leading-kakfa-clients/</guid><description>本文永久链接 – https://tonybai.com/2022/03/28/the-comparison-of-the-go-community-leading-kakfa-clients 一. 背景 众所周知，Kafka是Apache开源基金会下的明星级开源项目，作为一个开源的分布式事件流平台，它被成千上万的公司用于高性能数据管道、流分析、数据集成和关键任务应用。在国内，无论大厂小厂，无论是...</description></item><item><title>Go泛型介绍[译]</title><link>https://tonybai.com/2022/03/25/intro-generics/</link><pubDate>Fri, 25 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/25/intro-generics/</guid><description>本文永久链接 – https://tonybai.com/2022/03/25/intro-generics Go核心团队在官博上发布了一篇名为《An Introduction To Generics》的文章，该文章基于Robert Griesemer和Ian Lance Taylor在2021年GopherCon大会上的演讲，这是Go团队发布Go 1.18版本后官博发表的首篇有关Go泛型的文章，...</description></item><item><title>len(s)表达式的求值结果究竟是常量还是变量？我来告诉你</title><link>https://tonybai.com/2022/03/24/the-result-of-a-len-expression-is-constant-or-variable/</link><pubDate>Thu, 24 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/24/the-result-of-a-len-expression-is-constant-or-variable/</guid><description>本文永久链接 – https://tonybai.com/2022/03/24/the-result-of-a-len-expression-is-constant-or-variable **len**是Go预定义标识符，同时也是Go内置的预定义函数，通过go doc工具我们能查到len函数的doc如下： ``` $go doc builtin.len package builtin // im...</description></item><item><title>Go是否支持增量构建？我来告诉你！</title><link>https://tonybai.com/2022/03/21/go-native-support-incremental-build/</link><pubDate>Mon, 21 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/21/go-native-support-incremental-build/</guid><description>本文永久链接 – https://tonybai.com/2022/03/21/go-native-support-incremental-build Go语言**以编译速度快闻名于码农界**。这缘于Go在设计之初就选择抛弃其祖辈C语言的头文件包含机制，选择了以包(package)作为基本编译单元。Go语言的这种以包为基本构建单元的构建模型使得依赖分析变得十分简单，避免了C语言那种通过头文件分析依...</description></item><item><title>针对大型数组的迭代，for range真的比经典for loop慢吗？</title><link>https://tonybai.com/2022/03/19/for-range-vs-classic-for-loop-when-iterating-large-array/</link><pubDate>Sat, 19 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/19/for-range-vs-classic-for-loop-when-iterating-large-array/</guid><description>本文永久链接 – https://tonybai.com/2022/03/19/for-range-vs-classic-for-loop-when-iterating-large-array Go语言推崇“**一件事情仅有一个作法**”！比如：Go仅保留一类循环控制语句，那就是**经典版的for loop**： ``` for i := 0; i &amp;lt; 100; i++ { ... ... } `...</description></item><item><title>Go 1.18版本正式发布了</title><link>https://tonybai.com/2022/03/16/go-1-18-released/</link><pubDate>Wed, 16 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/16/go-1-18-released/</guid><description>本文永久链接 – https://tonybai.com/2022/03/16/go-1-18-released 美国时间2022年3月15日，Go核心团队官宣了Go 1.18版本正式版的发布！这是一个万众期待的版本，因为在这个版本中，Go核心团队做了Go语言开源以来的最大一次语法特性变更 – 增加了对泛型(generics)的支持！下面是对Go官博文章的全文翻译，供大家参考！ * * * 今天，...</description></item><item><title>Go语言map类型变量背后的那些事儿</title><link>https://tonybai.com/2022/03/15/the-underlying-of-a-map-type-variable/</link><pubDate>Tue, 15 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/15/the-underlying-of-a-map-type-variable/</guid><description>本文永久链接 – https://tonybai.com/2022/03/15/the-underlying-of-a-map-type-variable 切片(slice)和map是Go语言中最常用的两种原生复合数据类型，同时也是最容易使初学者感觉迷惑和“掉坑”的两个类型，这很大程度是因为Go runtime层的存在。什么是Go runtime层？可以参考我在《Go语言第一课FAQ》中的解释。 ...</description></item><item><title>聊聊Go语言的软件供应链安全</title><link>https://tonybai.com/2022/03/14/software-supply-chain-security-in-go/</link><pubDate>Mon, 14 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/14/software-supply-chain-security-in-go/</guid><description>本文永久链接 – https://tonybai.com/2022/03/14/software-supply-chain-security-in-go 在Go 12岁生日以及Go 1.18 beta1发布的博文中，Go核心团队技术负责人Russ Cox都提到了2022年Go团队将关注Go软件供应链安全，并在Go中为软件供应链提供相关工具。 提到供应链，我们立马想到的它是制造业的存在，在软件开发领...</description></item><item><title>为什么有了Go module后“依赖地狱”问题依然存在</title><link>https://tonybai.com/2022/03/12/dependency-hell-in-go/</link><pubDate>Sat, 12 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/12/dependency-hell-in-go/</guid><description>本文永久链接 – https://tonybai.com/2022/03/12/dependency-hell-in-go 如果所有Gopher都抛弃GOPATH构建模式，拥抱Go module构建模式；如果所有legacy Go package作者都能为自己的legacy package加上go.mod；如果所有Go module作者都严格遵守语义版本(semver)规范，那么Go将彻底解决“依...</description></item><item><title>Gopher部落：2022年要做的事儿</title><link>https://tonybai.com/2022/03/06/the-2022-plan-of-gopher-tribe/</link><pubDate>Sun, 06 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/06/the-2022-plan-of-gopher-tribe/</guid><description>本文永久链接 – https://tonybai.com/2022/03/06/the-2022-plan-of-gopher-tribe 2021年末，我对Gopher部落知识星球的这一年进行了简单的复盘。2022年初，我陆续收到知识星球官方的一些排名数据： 这些数据让我对2022年星球的运营更加有信心了！那么，2022年Gopher部落知识星球会有哪些变化呢？在本文中，我就来说一说这方面内容。...</description></item><item><title>聊聊Go应用输出日志的工程实践</title><link>https://tonybai.com/2022/03/05/go-logging-practice/</link><pubDate>Sat, 05 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/05/go-logging-practice/</guid><description>&amp;gt; 配图改自网络 本文永久链接 – https://tonybai.com/2022/03/05/go-logging-practice Go隶属于后端语言，以开发各类服务、中间件和系统平台见长。日常学习Go语言时，日志不是不可或缺的，甚至是无需考虑的，但是一旦到真正的Go的工程实践中，输出日志便是我们绕不过去的、必须面对的问题。 Go开发的服务大多具有连续和自主运行的属性，通常都是7×24小时运...</description></item><item><title>为什么这个T类型实例无法调用*T类型的方法</title><link>https://tonybai.com/2022/02/27/go-addressable/</link><pubDate>Sun, 27 Feb 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/02/27/go-addressable/</guid><description>本文永久链接 – https://tonybai.com/2022/02/27/go-addressable 近期在“Go语言第一课”专栏后台看到一位学员的一则留言，如下图： 由于有课程上下文，所以我这里将问题的上下文重新描述一下。 在专栏的第25讲，我们学习了Go语言提供的一个“语法糖”，比如下面这个例子： ``` type T struct { a int } func (t T) M1() ...</description></item><item><title>Go GC如何检测内存对象中是否包含指针</title><link>https://tonybai.com/2022/02/21/how-gc-detect-pointer-in-mem-obj/</link><pubDate>Mon, 21 Feb 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/02/21/how-gc-detect-pointer-in-mem-obj/</guid><description>本文永久链接 – https://tonybai.com/2022/02/21/how-gc-detect-pointer-in-mem-obj 众所周知，Go是带垃圾回收(GC)的编程语言，开发者通常不需要考虑对内存的管理，降低了心智负担。Go程序运行的时候，GC在背后默默辛劳地为开发者**“擦屁股”**：把无法reach到的内存对象定期地释放掉以备后续重用。 GC只关心**指针**，只要被扫描...</description></item><item><title>“Go语言第一课”结课了</title><link>https://tonybai.com/2022/02/17/go-first-course-close/</link><pubDate>Thu, 17 Feb 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/02/17/go-first-course-close/</guid><description>本文永久链接 – https://tonybai.com/2022/02/17/go-first-course-close 就在家家户户刚刚过完虎年元宵佳节之际，我的Go语言专栏：《Tony Bai·Go语言第一课》也迎来了它的最后一讲**结术语**。 这门专栏的撰写开始于2021年5月中旬，翻看我用于管理专栏原始文稿的github仓库的commit log记录，这一有纪念价值的日子被精确定位在5...</description></item><item><title>Go究竟是否为空切片分配了底层数组</title><link>https://tonybai.com/2022/02/15/whether-go-allocate-underlying-array-for-empty-slice/</link><pubDate>Tue, 15 Feb 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/02/15/whether-go-allocate-underlying-array-for-empty-slice/</guid><description>本文永久链接 – https://tonybai.com/2022/02/15/whether-go-allocate-underlying-array-for-empty-slice 这周在“Go语言第一课”的留言区看到一位同学的这样一个问题： 切片是Go语言中的一个重要的语法元素，也是日常Go开发中使用最为频繁的语法元素。有过Go语言开发经验的童鞋估计大多都知道空切片(empty slice)...</description></item><item><title>2021年Go语言盘点：厉兵秣马强技能，蓄势待发新征程</title><link>https://tonybai.com/2022/01/16/the-2021-review-of-go-programming-language/</link><pubDate>Sun, 16 Jan 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/01/16/the-2021-review-of-go-programming-language/</guid><description>本文永久链接 – https://tonybai.com/2022/01/16/the-2021-review-of-go-programming-language 由于日常忙工作，闲时忙专栏，我早已策划的**2021年Go语言盘点**这篇文章一直拖到了2022年元旦之后才开始落笔。 2021年，Go迈过了其开源的第12个年头。虽然已经演进了10余年，但在编程语言这个领域中，Go依旧属于“小字辈”...</description></item><item><title>Go语言精进之路：为Gopher们准备的“知识年货”</title><link>https://tonybai.com/2022/01/15/go-programming-from-beginners-to-masters-is-published/</link><pubDate>Sat, 15 Jan 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/01/15/go-programming-from-beginners-to-masters-is-published/</guid><description>本文永久链接 – https://tonybai.com/2022/01/15/go-programming-from-beginners-to-masters-is-published 历时三年多编写的Go语言进阶类图书《Go语言精进之路：从新手到高手的编程思想、方法和技巧》系列1、2册终于在2021年12月17日出版了！ 2021年的最后一天，我收到了机械工业出版社华章分社编辑罗词亮老师从微信...</description></item><item><title>2021年博客回顾与总结</title><link>https://tonybai.com/2021/12/31/2021-blog-summary/</link><pubDate>Fri, 31 Dec 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/12/31/2021-blog-summary/</guid><description>本文永久链接 – https://tonybai.com/2021/12/31/2021-blog-summary 2021年对我来说是极其充实的一年。 在这一年里，生活上的充实体现在**带娃**上。除了要带不到一岁的二宝，还要辅导大宝学习，陪大宝上补习班。 工作中，由于我刚入行智能网联汽车这个行业，要学的东西很多，要做的东西也很很多，要解决的问题同样很多，每天都十分忙碌。 业余时间，我还实现了“...</description></item><item><title>切换到Go 1.18后的第一件事：将interface{}全部替换为any</title><link>https://tonybai.com/2021/12/18/replace-empty-interface-with-any-first-after-switching-to-go-1-18/</link><pubDate>Sat, 18 Dec 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/12/18/replace-empty-interface-with-any-first-after-switching-to-go-1-18/</guid><description>本文永久链接 – https://tonybai.com/2021/12/18/replace-empty-interface-with-any-first-after-switching-to-go-1-18 伴随着Go 1.18 beta1版本的发布，很多Gopher已经迫不及待地下载该版本并体验其中的新特性了！ Go 1.18 beta1到手后，**你想做的第一件事是什么呢**？ 说到这里，...</description></item><item><title>Gopher部落：简单复盘这一年</title><link>https://tonybai.com/2021/12/17/gopher-tribe-first-anniversary-review/</link><pubDate>Fri, 17 Dec 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/12/17/gopher-tribe-first-anniversary-review/</guid><description>本文永久链接 – https://tonybai.com/2021/12/17/gopher-tribe-first-anniversary-review 简要复盘 12月15日早上，手机收到知识星球app的一条推送信息，提示我的星球“Gopher部落”迎来了第100位星友： 我这才想起来Gopher部落星球已经创建满一年了。从上面的星球名片来看，准确来说是390多天。在这390多天中，我发表了5...</description></item><item><title>Go 1.18 Beta1版本发布，支持泛型[译]</title><link>https://tonybai.com/2021/12/15/go-1-18-beta1/</link><pubDate>Wed, 15 Dec 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/12/15/go-1-18-beta1/</guid><description>本文永久链接 – https://tonybai.com/2021/12/15/go-1-18-beta1 北京时间今天凌晨，美国时间12月14日，Go核心团队技术负责人Russ Cox在Go官博发表文章《Go 1.18 Beta 1 is available, with generics》，正式宣布Go 1.18的第一个预览版Go 1.18 beta1发布！Go团队这次少见的通过官博来发布一个b...</description></item><item><title>使用Docker容器突破客户端6w可用端口的误区</title><link>https://tonybai.com/2021/12/14/the-misconception-of-using-docker-to-break-out-of-6w-ports-of-the-client/</link><pubDate>Tue, 14 Dec 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/12/14/the-misconception-of-using-docker-to-break-out-of-6w-ports-of-the-client/</guid><description>本文永久链接 – https://tonybai.com/2021/12/14/the-misconception-of-using-docker-to-break-out-of-6w-ports-of-the-client 近期的一个项目刚刚完成了第一个版本的开发，经过一段时间的自测与集成测试，功能问题已经不是重点了。项目在初期设定了性能目标，压测与性能优化势在必行，因此这一阶段我们都在做压测前...</description></item><item><title>惊了！原来Go语言也有隐式转型</title><link>https://tonybai.com/2021/12/02/go-has-implicit-type-convertion/</link><pubDate>Thu, 02 Dec 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/12/02/go-has-implicit-type-convertion/</guid><description>本文永久链接 – https://tonybai.com/2021/12/02/go-has-implicit-type-convertion 我的极客时间专栏《Go语言第一课》上线后收到了很多学员的反馈，大家提出了很多显然是经过认真思考的高水平问题。有些时候我也会被这些问题所“难倒”，比如昨天我在后台看到的这个问题。 我把这个问题整理为下面代码文本，方便大家copy和重现问题： ``` pack...</description></item><item><title>Go 1.18新特性前瞻：原生支持Fuzzing测试</title><link>https://tonybai.com/2021/12/01/first-class-fuzzing-in-go-1-18/</link><pubDate>Wed, 01 Dec 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/12/01/first-class-fuzzing-in-go-1-18/</guid><description>本文永久链接 – https://tonybai.com/2021/12/01/first-class-fuzzing-in-go-1-18 今年6月初，Go官博发表了一篇名为《Fuzzing is Beta Ready》的文章，文中称gotip版本已经原生支持Fuzzing并开始了公测。这意味着Fuzzing将以一等公民(first-class citizen)的身份正式加入到即将于2022年2...</description></item><item><title>ants：在Submit中再调用当前Pool的Submit可能导致阻塞</title><link>https://tonybai.com/2021/11/27/ants-call-submit-in-submit-may-cause-blocking/</link><pubDate>Sat, 27 Nov 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/11/27/ants-call-submit-in-submit-may-cause-blocking/</guid><description>本文永久链接 – https://tonybai.com/2021/11/27/ants-call-submit-in-submit-may-cause-blocking 1. goroutine pool的必要性 Go在并发程序方面的一个小创新就是支持轻量级用户线程goroutine，不过虽然goroutine很轻，但并不是免费的，尤其是Go程序中存在大量goroutine反复启停时(比如采用每...</description></item><item><title>使用Docker Compose构建一键启动的运行环境</title><link>https://tonybai.com/2021/11/26/build-all-in-one-runtime-environment-with-docker-compose/</link><pubDate>Fri, 26 Nov 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/11/26/build-all-in-one-runtime-environment-with-docker-compose/</guid><description>本文永久链接 – https://tonybai.com/2021/11/26/build-all-in-one-runtime-environment-with-docker-compose 如今，不管你是否喜欢，不管你是否承认，微服务架构模式的流行就摆在那里。作为架构师的你，如果再将系统设计成个大单体结构，那么即便不懂技术的领导，都会给你送上几次白眼。好吧，妥协了！开拆！“没吃过猪肉，还没见过...</description></item><item><title>Go 1.18新特性前瞻：Go工作区模式</title><link>https://tonybai.com/2021/11/12/go-workspace-mode-in-go-1-18/</link><pubDate>Fri, 12 Nov 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/11/12/go-workspace-mode-in-go-1-18/</guid><description>本文永久链接 – https://tonybai.com/2021/11/12/go-workspace-mode-in-go-1-18 **Go 1.18版本如无意外，将于2022年2月发布**。 在这个版本中，除了包含万众期待的Go泛型之外，还包含很多实用的功能特性，Go工作区模式(Go workspace mode)就是其中之一，它弥补了当前go module构建模式的一些不足，堪称是**g...</description></item><item><title>Go，12周年</title><link>https://tonybai.com/2021/11/11/go-opensource-12-years/</link><pubDate>Thu, 11 Nov 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/11/11/go-opensource-12-years/</guid><description>本文永久链接 – https://tonybai.com/2021/11/11/go-opensource-12-years 2009年11月10日，Go语言正式对外发布并开源。如今，距那一历史时刻已经过去12年了。今早Go核心团队技术负责人Russ Cox在Go官博撰文庆祝Go开源12周年，他回顾了这一年来发布的Go 1.16与Go 1.17版本给Go与Go社区带来的变化，粗略总结了Go核心团队...</description></item><item><title>Ian Lance Taylor：Go泛型使用的一般准则</title><link>https://tonybai.com/2021/11/07/using-generics-in-go/</link><pubDate>Sun, 07 Nov 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/11/07/using-generics-in-go/</guid><description>本文永久链接 – https://tonybai.com/2021/11/07/using-generics-in-go 在近期Google Open Source Live的Go Day 2021环节，Go泛型的主要设计者Ian Lance Taylor做了Using Generics in Go的简短演讲(国内地址在这里)。这篇演讲的重点**不是即将于Go 1.18版本降临的Go泛型的语法细节...</description></item><item><title>Go 1.18对泛型的支持策略</title><link>https://tonybai.com/2021/10/28/expectations-for-generics-in-go-1-18/</link><pubDate>Thu, 28 Oct 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/10/28/expectations-for-generics-in-go-1-18/</guid><description>本文永久链接 – https://tonybai.com/2021/10/28/expectations-for-generics-in-go-1.18 2021年10月中旬，Go语言之父Rob Pike在github上的Go项目中发了一条issue：建议不在Go 1.18的标准库中使用泛型。 不得不说“姜还是老的辣”！Rob Pike的理由很简单，Go泛型是Go诞生以来最大的一次语言变化，Go ...</description></item><item><title>Go语言第一课背后的那些事儿</title><link>https://tonybai.com/2021/10/25/the-things-behind-the-first-lesson-of-go-language/</link><pubDate>Mon, 25 Oct 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/10/25/the-things-behind-the-first-lesson-of-go-language/</guid><description>本文永久链接 – https://tonybai.com/2021/10/25/the-things-behind-the-first-lesson-of-go-language 《Go语言第一课》正式上线一周多了，从编辑和运营老师那边反馈，成绩似乎还不错，感谢大家的捧场！今天和大家说说专栏《Go语言第一课》背后的那些事儿。 年初策划：Gopher的《C++ Primer》 学过C++的童鞋想必都...</description></item><item><title>Tony Bai带你入门Go语言</title><link>https://tonybai.com/2021/10/15/your-first-go-course-by-tonybai/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/10/15/your-first-go-course-by-tonybai/</guid><description>本文永久链接 – https://tonybai.com/2021/10/15/your-first-go-course-by-tonybai 没错，Tony Bai就是我。这次终于轮到我了！ 极客时间在10月13日正式上线了我的Go语言专栏：《Tony Bai·Go语言第一课》。 * * * 现如今，越来越多的程序员因为自己或公司的需求，逐渐转成Go开发。当前国内外一线，包括 BAT 等大厂，以...</description></item><item><title>Go语言之父谈Go编程语言与环境</title><link>https://tonybai.com/2021/10/06/the-go-programming-language-and-environment/</link><pubDate>Wed, 06 Oct 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/10/06/the-go-programming-language-and-environment/</guid><description>本文永久链接 – https://tonybai.com/2021/10/06/the-go-programming-language-and-environment 2021年中旬，Go语言联合创始人Rob Pike应邀在线出席由UNSW Computing(悉尼新南威尔士大学计算机)组织主办的John Lions Distinguished Lectures，会上Rob Pike以Go之父身份...</description></item><item><title>gRPC服务的响应设计</title><link>https://tonybai.com/2021/09/26/the-design-of-the-response-for-grpc-server/</link><pubDate>Sun, 26 Sep 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/09/26/the-design-of-the-response-for-grpc-server/</guid><description>本文永久链接 – https://tonybai.com/2021/09/26/the-design-of-the-response-for-grpc-server 1. 服务端响应的现状 做后端服务的开发人员对错误处理总是很敏感的，因此在做服务的响应(response/reply)设计时总是会很慎重。 如果后端服务选择的是HTTP API(rest api)，比如json over http，A...</description></item><item><title>gRPC客户端的那些事儿</title><link>https://tonybai.com/2021/09/17/those-things-about-grpc-client/</link><pubDate>Fri, 17 Sep 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/09/17/those-things-about-grpc-client/</guid><description>本文永久链接 – https://tonybai.com/2021/09/17/those-things-about-grpc-client 在云原生与微服务主导架构模式的时代，内部服务间交互所采用的通信协议选型无非就是两类：HTTP API(RESTful API)和RPC。在如今的硬件配置与网络条件下，现代RPC实现的性能一般都是好于HTTP API的。我们以json over http与gR...</description></item><item><title>小厂内部私有Go module拉取方案</title><link>https://tonybai.com/2021/09/03/the-approach-to-go-get-private-go-module-in-house/</link><pubDate>Fri, 03 Sep 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/09/03/the-approach-to-go-get-private-go-module-in-house/</guid><description>本文永久链接 – https://tonybai.com/2021/09/03/the-approach-to-go-get-private-go-module-in-house 1. 问题来由 Go 1.11版本引入Go module后，Go命令拉取依赖的公共go module不再是“痛点”。如下图所示： 图：从公司内部经由公共GOPROXY服务拉取公共go module 我们在公司/组织内部仅...</description></item><item><title>Brooks、Wirth和Go[译]</title><link>https://tonybai.com/2021/08/25/brooks-wirth-and-go/</link><pubDate>Wed, 25 Aug 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/08/25/brooks-wirth-and-go/</guid><description>本文永久链接 – https://tonybai.com/2021/08/25/brooks-wirth-and-go 本文翻译自瑞典程序员Fredrik Holmqvist的博客文章《Brooks, Wirth and Go》。 现在是1975年。 程序员们带着FORTRAN代码回来了，不过使用的是穿孔卡片的形式。 图：记录代码的穿孔卡片(图片来自punchcardreader.com，译者加)...</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新特性详解：module依赖图修剪与延迟module加载</title><link>https://tonybai.com/2021/08/19/go-module-changes-in-go-1-17/</link><pubDate>Thu, 19 Aug 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/08/19/go-module-changes-in-go-1-17/</guid><description>本文永久链接 – https://tonybai.com/2021/08/19/go-module-changes-in-go-1-17 Go module的引入终于让Go语言有了自己的包依赖管理标准机制与工具，虽说它的引入与推广过程略显坎坷，但不得不承认Go 1.11及之后的每一次Go版本发布，Go module都在进步！在Go 1.17版本中亦是如此，本篇我们就来详细聊聊在Go 1.17版本中...</description></item><item><title>Go 1.17新特性详解：支持将切片转换为数组指针</title><link>https://tonybai.com/2021/08/18/go-language-specs-changes-in-go-1-17/</link><pubDate>Wed, 18 Aug 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/08/18/go-language-specs-changes-in-go-1-17/</guid><description>本文永久链接 – https://tonybai.com/2021/08/18/go-language-specs-changes-in-go-1-17 Go属于那种极简的语言，从诞生到现在语言自身特性变化很小，不会像其他主流语言那样走“你有的我也要有”的特性融合路线。因此新语言特性对于Gopher来说属于“稀缺品”，属于“供不应求”那类事物^\_^。这也直接导致了每次Go新版本发布，我们都要首先...</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语言Beta公测版或RC候选发布版</title><link>https://tonybai.com/2021/08/11/how-to-test-go-beta-or-rc/</link><pubDate>Wed, 11 Aug 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/08/11/how-to-test-go-beta-or-rc/</guid><description>本文永久链接 – https://tonybai.com/2021/08/11/how-to-test-go-beta-or-rc Go 1.17已经发布到RC2版本！正式版最早将在8月中旬发布，最迟也不会晚于月底。对于喜欢尝鲜的Gopher而言，在体验Go 1.17的新特性的同时，也不要忘了为Go语言项目做做贡献！贡献什么呢？其实很简单，就是在尝鲜的同时，对Go语言的Beta公测版以及RC发布候...</description></item><item><title>Go中被闭包捕获的变量何时会被回收</title><link>https://tonybai.com/2021/08/09/when-variables-captured-by-closures-are-recycled-in-go/</link><pubDate>Mon, 09 Aug 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/08/09/when-variables-captured-by-closures-are-recycled-in-go/</guid><description>本文永久链接 – https://tonybai.com/2021/08/09/when-variables-captured-by-closures-are-recycled-in-go 1. Go函数闭包 Go语言原生提供了对闭包(closure)的支持。在Go语言中，闭包就是函数字面值。Go规范中是这样诠释闭包的： &amp;gt; 函数字面值(function literals)是闭包：它们可以引用其包...</description></item><item><title>Go基于I/O多路复用的TCP协议流解析实践</title><link>https://tonybai.com/2021/07/31/io-multiplexing-model-tcp-stream-protocol-parsing-practice-in-go/</link><pubDate>Sat, 31 Jul 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/07/31/io-multiplexing-model-tcp-stream-protocol-parsing-practice-in-go/</guid><description>本文永久链接 – https://tonybai.com/2021/07/31/io-multiplexing-model-tcp-stream-protocol-parsing-practice-in-go 在《Go经典阻塞式TCP协议流解析的实践》一文中，我们基于Go经典的阻塞I/O模型实现了一个基于TCP流的自定义协议的解析。这种**one-connection-per-goroutine*...</description></item><item><title>Go经典阻塞式TCP协议流解析的实践</title><link>https://tonybai.com/2021/07/28/classic-blocking-network-tcp-stream-protocol-parsing-practice-in-go/</link><pubDate>Wed, 28 Jul 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/07/28/classic-blocking-network-tcp-stream-protocol-parsing-practice-in-go/</guid><description>本文永久链接 – https://tonybai.com/2021/07/28/classic-blocking-network-tcp-stream-protocol-parsing-practice-in-go 1. Go经典阻塞I/O的TCP网络编程模型 Go语言诞生十多年来取得了飞速发展，并得到了全世界开发者的广泛接纳和应用，其应用领域广泛，包括：Web服务、数据库、网络编程、系统编程、D...</description></item><item><title>一文搞懂Go语言的plugin</title><link>https://tonybai.com/2021/07/19/understand-go-plugin/</link><pubDate>Mon, 19 Jul 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/07/19/understand-go-plugin/</guid><description>本文永久链接 – https://tonybai.com/2021/07/19/understand-go-plugin 要历数Go语言中还有哪些我还没用过的特性，在Go 1.8版本中引入的go plugin算一个。近期想给一个网关类平台设计一个插件系统，于是想起了go plugin^\_^。 Go plugin支持将Go包编译为共享库（.so）的形式单独发布，主程序可以在运行时动态加载这些编译为...</description></item><item><title>一文告诉你如何用好uber开源的zap日志库</title><link>https://tonybai.com/2021/07/14/uber-zap-advanced-usage/</link><pubDate>Wed, 14 Jul 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/07/14/uber-zap-advanced-usage/</guid><description>本文永久链接 – https://tonybai.com/2021/07/14/uber-zap-advanced-usage 1. 引子 日志在后端系统中有着重要的地位，通过日志不仅可以直观看到程序的当前运行状态，更重要的是日志可以在程序发生问题时为开发人员提供线索。 在Go生态中，logrus可能是使用最多的Go日志库，它不仅提供结构化的日志，更重要的是与标准库log包在api层面兼容。在性能...</description></item><item><title>使用section.key的形式读取ini配置项</title><link>https://tonybai.com/2021/07/10/read-ini-config-item-by-passing-section-key/</link><pubDate>Sat, 10 Jul 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/07/10/read-ini-config-item-by-passing-section-key/</guid><description>本文永久链接 – https://tonybai.com/2021/07/10/read-ini-config-item-by-passing-section-key 配置文件读取是很多Go项目必备的功能，这方面社区提供的方案也相对成熟稳定。但之前写这部分代码时除了使用了针对不同配置文件格式（比如：ini、toml等）的驱动包之外，很少直接使用第三方包对读取出的配置项的值进行管理。于是我们就面对这...</description></item><item><title>使用go-metrics在Go应用中增加度量</title><link>https://tonybai.com/2021/07/06/add-metrics-for-go-application-using-go-metrics/</link><pubDate>Tue, 06 Jul 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/07/06/add-metrics-for-go-application-using-go-metrics/</guid><description>本文永久链接 – https://tonybai.com/2021/07/06/add-metrics-for-go-application-using-go-metrics Go语言内置expvar，基于expvar提供的对基础度量的支持能力，我们可以自定义各种度量（metrics）。但是expvar仅仅是提供了最底层的度量定义支持，对于一些复杂的度量场景，第三方或自实现的metrics包必不可...</description></item><item><title>通过实例理解Go Execution Tracer</title><link>https://tonybai.com/2021/06/28/understand-go-execution-tracer-by-example/</link><pubDate>Mon, 28 Jun 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/06/28/understand-go-execution-tracer-by-example/</guid><description>本文永久链接 – https://tonybai.com/2021/06/28/understand-go-execution-tracer-by-example Netflix（奈飞公司）的性能架构师Brendan Gregg在其《BPF Performance Tools》一书中对tracing、sampling等概念做了细致描述，以帮助开发人员理解这些概念，并基于这些概念对性能优化辅助工具进...</description></item><item><title>使用functrace辅助进行Go项目源码分析</title><link>https://tonybai.com/2021/06/04/go-source-analysis-with-functrace/</link><pubDate>Fri, 04 Jun 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/06/04/go-source-analysis-with-functrace/</guid><description>本文永久链接 – https://tonybai.com/2021/06/04/go-source-analysis-with-functrace 在《像跟踪分布式服务调用那样跟踪Go函数调用链》一文中，我们介绍了一种跟踪函数调用链的思路，并给出了一种实现functrace：https://github.com/bigwhite/functrace。这个小工具不仅仅是分享给大家的，我自己在工作和学...</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>minikube v1.20.0版本的一个bug</title><link>https://tonybai.com/2021/05/14/a-bug-of-minikube-1-20/</link><pubDate>Fri, 14 May 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/05/14/a-bug-of-minikube-1-20/</guid><description>本文永久链接 – https://tonybai.com/2021/05/14/a-bug-of-minikube-1-20 近期在研究dapr(分布式应用运行时)，这是一个很朴素却很棒的想法，目前大厂，如阿里和鹅厂都有大牛在研究该项目，甚至是利用dapr落地了部分应用。关于dapr，后续我也会用单独的文章详细说说。 dapr不仅支持k8s部署，还支持本地部署，并可以对接多个世界知名的公有云厂商的...</description></item><item><title>Go标准库http与fasthttp服务端性能比较</title><link>https://tonybai.com/2021/04/25/server-side-performance-nethttp-vs-fasthttp/</link><pubDate>Sun, 25 Apr 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/04/25/server-side-performance-nethttp-vs-fasthttp/</guid><description>本文永久链接 – https://tonybai.com/2021/04/25/server-side-performance-nethttp-vs-fasthttp 1. 背景 Go初学者学习Go时，在编写了经典的“hello, world”程序之后，可能会迫不及待的体验一下Go强大的标准库，比如：用几行代码写一个像下面示例这样拥有完整功能的web server： ``` // 来自https:...</description></item><item><title>使用reflect包在反射世界里读写各类型变量</title><link>https://tonybai.com/2021/04/19/variable-operation-using-reflection-in-go/</link><pubDate>Mon, 19 Apr 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/04/19/variable-operation-using-reflection-in-go/</guid><description>本文永久链接 – https://tonybai.com/2021/mm/dd/variable-operation-using-reflection-in-go Go在标准库中提供的reflect包让Go程序具备运行时的反射能力(reflection)，但这种反射能力也是一把“双刃剑”，它在解决一类特定问题方面具有优势，但也带来了逻辑不清晰、性能问题以及难于发现问题和调试等不足。不过从Go诞生伊...</description></item><item><title>给expvarmon插上数据持久化的“翅膀”</title><link>https://tonybai.com/2021/04/14/expvarmon-save-and-convert-to-xlsx/</link><pubDate>Wed, 14 Apr 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/04/14/expvarmon-save-and-convert-to-xlsx/</guid><description>本文永久链接 – https://tonybai.com/2021/04/14/expvarmon-save-and-convert-to-xlsx 1\. expvar包与expvarmon Go在标准库中为暴露Go应用内部指标数据提供了标准的对外接口，这就是expvar包。expvar包通过init函数将内置的expvarHandler(一个标准http HandlerFunc)注册到http...</description></item><item><title>Go标准库flag包的“小陷阱”</title><link>https://tonybai.com/2021/04/12/pitfall-in-std-flag-pkg/</link><pubDate>Mon, 12 Apr 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/04/12/pitfall-in-std-flag-pkg/</guid><description>本文永久链接 – https://tonybai.com/2021/04/12/pitfall-in-std-flag-pkg Go语言号称“自带电池(battery-included)”，这意味着Go标准库可开箱即用，为Gopher提供了功能丰富的常用工具包，足以应付多数日常开发所需。尤其在Go语言擅长的领域，Go标准库工具包更是有着广泛的应用。下图是Go官方2020年用户调查的结果： 我们看到...</description></item><item><title>Go语言“十诫”[译]</title><link>https://tonybai.com/2021/04/09/ten-commandments-of-go/</link><pubDate>Fri, 09 Apr 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/04/09/ten-commandments-of-go/</guid><description>本文永久链接 – https://tonybai.com/2021/04/09/ten-commandments-of-go 本文翻译自John Arundel的《Ten commandments of Go》。全文如下： 作为一名全职的Go语言作家和老师，我花了很多时间和学生们一起，帮助他们写出更清晰、更好、更有用的Go程序。我发现，我给他们的建议可以归纳总结为一套通用原则，在这里我将这些原则分...</description></item><item><title>Go泛型语法又出“幺蛾子”：引入type set概念和移除type list中的type关键字</title><link>https://tonybai.com/2021/04/07/go-generics-use-type-sets-to-remove-type-keyword/</link><pubDate>Wed, 07 Apr 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/04/07/go-generics-use-type-sets-to-remove-type-keyword/</guid><description>本文永久链接 – https://tonybai.com/2021/04/07/go-generics-use-type-sets-to-remove-type-keyword 近日，Go泛型语法负责人之一的Ian Lance Taylor发布了一个issue，说明go团队想引入新的type set概念，并去除原Go泛型方案中置于interface定义中的type list中的type关键字。 对...</description></item><item><title>http.Client的连接行为控制详解</title><link>https://tonybai.com/2021/04/02/go-http-client-connection-control/</link><pubDate>Fri, 02 Apr 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/04/02/go-http-client-connection-control/</guid><description>1\. http包默认客户端 Go语言以“自带电池”闻名，很多开发者对Go自带的功能丰富的标准库喜爱有加。而在Go标准库中，net/http包又是最受欢迎和最常用的包之一，我们用几行代码就能生成一个支持大并发、性能中上的http server。而http.Client也是用途最为广泛的http客户端，其性能也可以满足多数情况下的需求。知名女gopherJaana Dogan开源的类apache a...</description></item><item><title>Go语言中常见的几种反模式[译]</title><link>https://tonybai.com/2021/03/31/common-anti-patterns-in-go/</link><pubDate>Wed, 31 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/31/common-anti-patterns-in-go/</guid><description>本文翻译自Saif Sadiq的文章《Common anti-patterns in Go》。 众所周知，编码是一门艺术，就像每个拥有精湛艺术并为之感到骄傲的工匠一样，我们作为开发人员也为我们编写的代码感到自豪。为了获得最佳效果，艺术家不断寻找可提高其手艺的方法和工具。同样，作为开发人员，我们也在不断提高自己的技能，并对”如何写出好的代码”这个最重要的问题的答案保持好奇。 弗雷德里克·布鲁克斯（F...</description></item><item><title>Go语言的“黑暗角落”：盘点学习Go语言时遇到的那些陷阱[译]（第二部分）</title><link>https://tonybai.com/2021/03/29/darker-corners-of-go-part2/</link><pubDate>Mon, 29 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/29/darker-corners-of-go-part2/</guid><description>本文翻译自Rytis Bieliunas的文章《Darker Corners of Go》。 第一部分参见[《Go语言的“黑暗角落”：盘点学习Go语言时遇到的那些陷阱\[译\]（第一部分）》](https://tonybai.com/2021/03/29/darker-corners-of-go-part1) 7\. 字符串和字节数组 ------------ 1) Go中的字符串 Go字符串的内...</description></item><item><title>Go语言的“黑暗角落”：盘点学习Go语言时遇到的那些陷阱[译]（第一部分）</title><link>https://tonybai.com/2021/03/29/darker-corners-of-go-part1/</link><pubDate>Mon, 29 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/29/darker-corners-of-go-part1/</guid><description>本文翻译自Rytis Bieliunas的文章《Darker Corners of Go》。 &amp;gt; 译注：若干年前，Kyle Quest曾发过一篇名为“50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs”的文章，仿效著名的《C Traps and Pitfalls》编写了50条Go语言的陷阱与缺陷，一时在G...</description></item><item><title>使用Go实现可用select监听的队列</title><link>https://tonybai.com/2021/03/26/implement-a-queue-with-select-listener-in-go/</link><pubDate>Fri, 26 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/26/implement-a-queue-with-select-listener-in-go/</guid><description>1\. 背景与选型 和《基于Redis Cluster的分布式锁实现以互斥方式操作共享资源》一文一样，今天要说的Go队列方案也是有一定项目背景的。 5G消息方兴未艾！前一段时间从事了一段时间5G消息网关的研发，但凡涉及类似消息业务的网关，我们一般都离不开**队列**这种数据结构的支持。这个5G消息网关项目采用的是Go技术栈开发，那么我们应该如何为它选择一个**与业务模型匹配且性能不差**的实现呢？...</description></item><item><title>对Go 1.16 io/fs设计的第一感觉：得劲儿！</title><link>https://tonybai.com/2021/03/23/io-fs-interface-is-an-excellent-design/</link><pubDate>Tue, 23 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/23/io-fs-interface-is-an-excellent-design/</guid><description>1\. 设计io/fs的背景 Go语言的接口是Gopher最喜欢的语法元素之一，其隐式的契约满足和“当前唯一可用的泛型机制”的特质让其成为面向组合编程的强大武器，其存在为Go建立事物抽象奠定了基础，同时也是建立抽象的主要手段。 Go语言从诞生至今，最成功的接口定义之一就是io.Writer和io.Reader接口： type Writer interface { Write(p []byte) (...</description></item><item><title>Rust vs. Go：为什么强强联合会更好</title><link>https://tonybai.com/2021/03/15/rust-vs-go-why-they-are-better-together/</link><pubDate>Mon, 15 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/15/rust-vs-go-why-they-are-better-together/</guid><description>本文翻译自乔纳森·特纳（Jonathan Turner）和史蒂夫·弗朗西亚（Steve Francia）的文章《Rust vs. Go: Why They’re Better Together》。 &amp;gt; 史蒂夫·弗朗西亚（Steve Francia）：在过去的25年里，Steve Francia建立了一些最具创新性和成功的技术和公司，这些技术和公司已经成为云计算的基础，被全世界的企业和开发者所接受。...</description></item><item><title>究竟是什么让Go语言成为恶意软件作者的最爱</title><link>https://tonybai.com/2021/03/07/go-malware-round-up-2020/</link><pubDate>Sun, 07 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/07/go-malware-round-up-2020/</guid><description>2020年5月份，Go语言之父Rob Pike接受了evrone.com的专访。当Rob Pike老爷子被问及多年来他看到过最奇怪、最有创意或有趣的Go用法或最让他惊讶的是什么时，老爷子是这么回答的： &amp;gt; Rob：最大的惊喜是当我们得知Go被用于编写恶意软件时。您无法控制谁将使用您的作品或他们将如何使用它。 近期安全技术公司Intezer发布了一份名为《Year of the Gopher, A ...</description></item><item><title>Go 1.16中值得关注的几个变化</title><link>https://tonybai.com/2021/02/25/some-changes-in-go-1-16/</link><pubDate>Thu, 25 Feb 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/02/25/some-changes-in-go-1-16/</guid><description>辛丑牛年初七开工大吉的日子(2021.2.18)，Go核心开发团队为中国Gopher们献上了大礼 – Go 1.16版本正式发布了！国内Gopher可以在Go中国官网上下载到Go 1.16在各个平台的安装包： 2020年双12，Go 1.16进入freeze状态，即不再接受新feature，仅fix bug、编写文档和接受安全更新等，那时我曾写过一篇名为《Go 1.16新功能特性不完全前瞻》的文章...</description></item><item><title>“能力越大，责任越大” – Go语言之父详解将于Go 1.18发布的Go泛型</title><link>https://tonybai.com/2021/02/18/typing-generic-go-by-griesemer-at-gophercon-2020/</link><pubDate>Thu, 18 Feb 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/02/18/typing-generic-go-by-griesemer-at-gophercon-2020/</guid><description>&amp;gt; 注：本文是首发于笔者微信公众号“iamtonybai”上的付费文章，这里免费分享给大家！ 在2020.11.9~11.13举行的全球最具影响力的Go语言技术大会GopherCon 2020上，Go语言之父之一的Robert Griesemer为全世界Gopher们带来了本次大会最重量级的演讲**“Typing \[Generic\] Go”**。 图：Robert Griesemer带来的有关...</description></item><item><title>基于Redis Cluster的分布式锁实现以互斥方式操作共享资源</title><link>https://tonybai.com/2021/02/13/operate-with-shared-resources-in-a-mutually-exclusive-way-through-distributed-lock-implemented-by-redis-cluster/</link><pubDate>Sat, 13 Feb 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/02/13/operate-with-shared-resources-in-a-mutually-exclusive-way-through-distributed-lock-implemented-by-redis-cluster/</guid><description>今天要说的技术方案也是有一定项目背景的。在上一个项目中，我们需要对一个redis集群中过期的key进行处理，这是一个分布式 系统，考虑到高可用性，需要具备过期处理功能的服务有多个副本，这样我们就要求在同一时间内仅有一个副本可以对过期的key&amp;gt;进行处理，如果该副本挂掉，系统会在其他副本中再挑选出一个来处理过期的key。 很显然，这里涉及到一个选主(leader election)的过程。每当涉及选主...</description></item><item><title>以单件方式创建和获取数据库实例</title><link>https://tonybai.com/2021/02/09/create-and-get-db-access-instance-through-singleton/</link><pubDate>Tue, 09 Feb 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/02/09/create-and-get-db-access-instance-through-singleton/</guid><description>在屡次的Go用户调查中，使用Go语言进行Web服务/API开发都占据了Go语言用途调查结果的头部位置。下面是知名Go IDE goland的母公司JetBrains最新发布的Go当前状态报告(2021.2.3)中的截图： 开发Web或API服务，难免会与数据库打交道。如今创建数据库实例并访库的技术已经是很成熟了，于是就有了下面这样的程序结构： 上面这个图片中，Web服务中的每个要与数据库进行数据交...</description></item><item><title>Go语言学习技术路线图2021发布了！</title><link>https://tonybai.com/2021/02/08/go-programming-language-learning-roadmap-2021/</link><pubDate>Mon, 08 Feb 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/02/08/go-programming-language-learning-roadmap-2021/</guid><description>上一次与CSDN的合作还要追溯到《程序员》杂志仍然发行的时代(网络发行)，最后一次投稿是2017年末的《追求极简：Docker镜像构建演化史》。 今年元旦前，CSDN编辑周翔老师邀请我参与他们策划的“IT人才成长路线图”，合作编写其中的Go语言学习技术路线图。**出于让更多开发者学习Go语言、加入Go社区、壮大Go生态的公心考虑以及扩大个人影响力的私心考虑，我接受了邀请**。 去年圣诞节的前一周我...</description></item><item><title>使用multipart/form-data实现文件的上传与下载</title><link>https://tonybai.com/2021/01/16/upload-and-download-file-using-multipart-form-over-http/</link><pubDate>Sat, 16 Jan 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/01/16/upload-and-download-file-using-multipart-form-over-http/</guid><description>1\. Form简介 **Form**(中文译为表单)，是HTML标记语言中的重要语法元素。一个Form不仅包含正常的文本内容、标记等，还包含被称为控件的特殊元素。用户通常通过修改控件（比如：输入文本、选择菜单项等）来“完成”表单，然后将表单数据以HTTP Get或Post请求的形式提交（submit）给Web服务器。 &amp;gt; 很多初学者总是混淆HTML和HTTP。其实，http通常作为html传输的...</description></item><item><title>通过实例理解Go标准库http包是如何处理keep-alive连接的</title><link>https://tonybai.com/2021/01/08/understand-how-http-package-deal-with-keep-alive-connection/</link><pubDate>Fri, 08 Jan 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/01/08/understand-how-http-package-deal-with-keep-alive-connection/</guid><description>HTTP是如今互联网的基础协议，承载了互联网上的绝大部分应用层流量，并且从目前趋势来看，在未来10年，http仍然会是互联网应用的主要协议。Go语言自带“电池”，基于Go标准库我们可以轻松建立起一个http server处理客户端http请求，或创建一个http client向服务端发送http请求。 最初早期的http 1.0协议只支持短连接，即客户端每发送一个请求，就要和服务器端建立一个新TC...</description></item><item><title>Go语言很无聊…其实它妙不可言！[译]</title><link>https://tonybai.com/2021/01/07/go-is-boring/</link><pubDate>Thu, 07 Jan 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/01/07/go-is-boring/</guid><description>&amp;gt; 无聊是一种很奇妙的状态，它可以稀释掉人类的一切情感。- 《古董局中局》马伯庸 在GopherCon 2020技术大会上(线上虚拟大会)，Jon Bodner为全球gopher们做了主题为“Go Is Boring”的精彩演讲(关注公众号**iamtonybai**，发送**gophercon2020**即可得到GopherCon 2020技术大会幻灯片资料)。 其实早在2020年6月，Jon ...</description></item><item><title>Hugo作者、Go核心开发团队成员谈诞生13年的Go语言：生态系统、演化与未来[译]</title><link>https://tonybai.com/2021/01/02/go-language-13-years/</link><pubDate>Sat, 02 Jan 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/01/02/go-language-13-years/</guid><description>本文翻译自《Go Language at 13 Years: Ecosystem, Evolution, and Future in Conversation with Steve Francia》。 &amp;gt; 译注：Go开源于2009年，如果从那时算起，Go才11岁；但在Go核心开发团队眼中，Go的真正诞生年份是2007年，至今13个年头了。关于Go的演化简史可以参见我的专栏文章：《Go语言的前生今世...</description></item><item><title>2020年Go语言盘点：新冠大流行阻挡不了Go演进的步伐</title><link>https://tonybai.com/2020/12/30/the-2020-review-of-go-programming-language/</link><pubDate>Wed, 30 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/30/the-2020-review-of-go-programming-language/</guid><description>2020，这一六十年一遇的庚子年的确“名不虚传”。在这一年发生了很多事，而最受瞩目的事情莫过于**新冠疫情的全球大流行**。疫情给全球的经济带来了近似毁灭性的打击，给人们的生命带来了极大威胁，给人们的生活也带来了很大痛苦及不确定性。好在**这个糟糕的2020年马上就要过去了**！相信此时此刻每个人心中都会有一句呐喊：“**2020，快滚吧**！”。 然而肆虐的新冠疫情并没有阻挡住Go语言前进的坚实...</description></item><item><title>如何作废一个已发布的Go module版本，我来告诉你！</title><link>https://tonybai.com/2020/12/26/how-to-deprecate-a-published-version-of-some-specific-go-module/</link><pubDate>Sat, 26 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/26/how-to-deprecate-a-published-version-of-some-specific-go-module/</guid><description>Go语言自诞生以来，一路走到今天已经经历了11个年头了。其包依赖管理机制也从无到有，从vendor演化成了如今的Go module。Go module从Go 1.11进入gopher们视野，到目前的Go 1.15，其改进和优化一直在持续。在即将到来的Go 1.16中，Go module将成为默认包依赖管理模式(即默认GO111MODULE=on)。但即便如此，我们在进行go module的实践过程...</description></item><item><title>BPF和Go：在Linux中内省的现代方式[译]</title><link>https://tonybai.com/2020/12/25/bpf-and-go-modern-forms-of-introspection-in-linux/</link><pubDate>Fri, 25 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/25/bpf-and-go-modern-forms-of-introspection-in-linux/</guid><description>本文翻译自马可·凯瓦克（Marko Kevac）的《BPF and Go: Modern forms of introspection in Linux》(https://medium.com/bumble-tech/bpf-and-go-modern-forms-of-introspection-in-linux-6b9802682223)。 每个人都有自己喜欢的关于魔法的书。对于一个人来说是托...</description></item><item><title>Go语言有哪些“劣势”</title><link>https://tonybai.com/2020/12/24/the-disadvantages-of-go/</link><pubDate>Thu, 24 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/24/the-disadvantages-of-go/</guid><description>本文源于笔者对知乎上的一个问题“Go有哪些劣势？”(https://www.zhihu.com/question/300163211)的一次回答(https://www.zhihu.com/question/300163211/answer/1632229924)。当时随手花几分钟在手机上写了一些点。但事后我觉得应该再做一些系统地思考。在这里我就将更系统地思考后的答案整理并分享给大家。 关于Go语...</description></item><item><title>Go语言对ARM架构的支持与未来[译]</title><link>https://tonybai.com/2020/12/18/go-ports-until-202012/</link><pubDate>Fri, 18 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/18/go-ports-until-202012/</guid><description>本文翻译自Go官方博客文章《Go on ARM and Beyond》(https://blog.golang.org/ports)。 最近业界关于非x86处理器的讨论沸沸扬扬，所以我们认为值得简单的写一篇关于Go语言对这些非x86处理器的支持情况的文章。 对我们来说，Go的可移植性一直很重要，我们不会过度去适配任何特定的操作系统或架构。Go最初的开源版本包括对两种操作系统（Linux和MacOS...</description></item><item><title>一文告诉你神奇的Go内建函数源码在哪里</title><link>https://tonybai.com/2020/12/17/where-is-the-source-of-builtin-functions/</link><pubDate>Thu, 17 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/17/where-is-the-source-of-builtin-functions/</guid><description>&amp;gt; Go内建函数源码，我好像在哪里见过你。 – 佚名 1\. 何为Go内建函数 众所周知，Go是最简单的主流编程语言之一，截至Go 1.15版本，Go语言的关键字的规模依旧保持在25个： 很多刚入门的gopher可能会问：像bool、byte、error、true、iota甚至int都难道都不是关键字？没错！和其他语言不同，这些**标识符**并不是关键字，在Go中它们被称为**预定义标识符**。这...</description></item><item><title>如何查看历史版本的Go文档？嘘！答案我只告诉你！</title><link>https://tonybai.com/2020/12/15/how-to-see-the-manual-of-go-history-version/</link><pubDate>Tue, 15 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/15/how-to-see-the-manual-of-go-history-version/</guid><description>Go语言自开源至今已经11个年头了！截至本文发稿时，目前最新的Go版本为1.15，Go核心开发团队正紧锣密鼓的进行着Go 1.16版本的开发（现阶段主要是修复bug），该版本将在2021年2月份正式发布。 Go以“自带电池(battery included)”而为人所知，除了Go标准库的全面和强大之外，Go工具链的丰富和易用在主流编程语言中也是位列“执牛耳者”之列的，而Go文档查看工具就在Go工具...</description></item><item><title>Go 1.16新功能特性不完全前瞻</title><link>https://tonybai.com/2020/12/12/a-forward-look-to-new-feature-of-go-1-16/</link><pubDate>Sat, 12 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/12/a-forward-look-to-new-feature-of-go-1-16/</guid><description>2020年最后一个购物狂欢，双十二购物节“Gopher部落”知识星球推出双十二优惠！本年度最低折扣仅限今天一天。笔者建立“Gopher部落”旨在建立一个高质量的Go语言技术精品社区，持续不断的高质量技术资料分享，让加入的星友每天都有新收获！欢迎大家加入！ Go 1.16将于2021年2月发布。目前已经进入freeze状态，即不再接受新feature，仅fix bug、编写文档和接受安全更新等。 目...</description></item><item><title>Go函数调用链跟踪的一种实现思路</title><link>https://tonybai.com/2020/12/10/a-kind-of-thinking-about-how-to-trace-function-call-chain/</link><pubDate>Thu, 10 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/10/a-kind-of-thinking-about-how-to-trace-function-call-chain/</guid><description>这篇文章的初衷是想解答知乎上的一位知友提出的问题。没想到完成一种实现后，这个问题居然被删除了。那么既然实现了，就分享出来吧。问题的原文找不到了，问题大致是这样的： 一个程序中存在多个函数调用链都调用了函数D： A1 -&amp;gt; B1 &amp;gt; C1 -&amp;gt; D A2 -&amp;gt; B2 &amp;gt; C2 -&amp;gt; D A3 -&amp;gt; B3 -&amp;gt; C3 -&amp;gt; D ... ... 那么，如果某次函数D被调用时出现了问题，那么怎么知道这个D...</description></item><item><title>vendor目录是否需要提交到代码库中？答案全在这一篇</title><link>https://tonybai.com/2020/12/03/should-you-commit-the-vendor-folder-in-go/</link><pubDate>Thu, 03 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/03/should-you-commit-the-vendor-folder-in-go/</guid><description>如果您还在使用vendor机制管理依赖包，那么说明您肯定是处于下面两种情况之一！ * 还工作在传统的GOPATH模式下(使用Go 1.10及之前版本；或Go 1.11及之后版本，但GO111MODULE=off)，利用vendor管理目标包的特定依赖； * 工作在go module模式下，但仍然利用vendor管理目标module的特定依赖并使用go build -mod=vendor来构建。 那...</description></item><item><title>Go是编程语言世界的“特斯拉”</title><link>https://tonybai.com/2020/12/01/go-is-the-tesla-of-programming-world/</link><pubDate>Tue, 01 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/01/go-is-the-tesla-of-programming-world/</guid><description>Go技术专栏“改善Go语⾔编程质量的50个有效实践”正在慕课网火热热销中！本专栏主要满足广大gopher关于Go语言进阶的需求，围绕如何写出地道且高质量Go代码给出50条有效实践建议，上线后收到一致好评！78元简直就是白菜价，简直就是白piao! 欢迎大家订阅！ 本文翻译自《GO — The TESLA Of Programming World》 – https://medium.com/glob...</description></item><item><title>一文告诉你如何抢先体验Go泛型</title><link>https://tonybai.com/2020/11/28/httpstonybai-com20201128how-to-experience-go-generics-first/</link><pubDate>Sat, 28 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/28/httpstonybai-com20201128how-to-experience-go-generics-first/</guid><description>本文首发于我主持的“Gopher部落”知识星球，欢迎大家加入星球，一起学习Go语言！年底前8.8折优惠，不要错过哦！ 2020年11月22日，Go核心开发团队技术负责人Russ Cox在golang-dev论坛上确认了Go泛型将在Go 1.18落地(2022.2)： 这对于那些迫切期盼go加入泛型的gopher来说无疑是一个重大利好消息！不过，泛型是把双刃剑！泛型的加入势必会让Go语言的复杂性大幅...</description></item><item><title>一文搞懂Go语言中的切片排序</title><link>https://tonybai.com/2020/11/26/slice-sort-in-go/</link><pubDate>Thu, 26 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/26/slice-sort-in-go/</guid><description>本文首发于“Gopher部落”知识星球！ **切片**是Go语言中引入的用于在大多数场合替代数组的语法元素。切片是长度可变的同类型元素序列，它不支持存储不同类型的元素，当然如果你非用**sl := \[\]interface{}{“hello”, 11, 3.14}**来抬杠^\_^，那就另当别论。 **有序列的地方就有排序的需求**。在各种排序算法都已经成熟的今天，我们完全可以针对特定元素类型的...</description></item><item><title>“Gopher部落”知识星球开球了</title><link>https://tonybai.com/2020/11/22/zssq-gopher-tribe-born/</link><pubDate>Sun, 22 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/22/zssq-gopher-tribe-born/</guid><description>考虑了很久自己要不要开一个知识星球？自己并不擅长社群运营，但 * 自己的技术内容输出档次又是不错的且是持续的，能让一定范围的朋友感觉是有价值的； * 面对大家的问题，相信自己的知识和经验储备也能给出很具参考价值的答案； * 并且这样的一个知识付费的产品还能反过来督促自己输出更多、更有价值的内容，何乐而不为！ 于是鄙人下载了**知识星球**的app，大胆地点击了“创建星球”，**“Gopher部落”...</description></item><item><title>没有VPS搭建govanityurls服务？别急！你依然可以自定义Go包导入路径</title><link>https://tonybai.com/2020/11/15/another-approach-to-customize-package-import-path/</link><pubDate>Sun, 15 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/15/another-approach-to-customize-package-import-path/</guid><description>我们见到的Go包的导入路径常常以github.com、bitbucket.org等代码托管站点的域名为前缀，这样的包导入路径有一个问题，那就是**当Go包的托管站点发生变更时(比如从github.om迁移到bitbucket.org或gitlab.com)，该包的使用者需要更新包的导入路径**。当然，在支持go module+GOPROXY的情况下，如果使用者不再升级包版本，他/她完全可以继续使用...</description></item><item><title>HashiCorp联合创始人：Go是成功且无悔的选择</title><link>https://tonybai.com/2020/11/13/go-is-a-successful-and-zero-regret-choice-for-us-by-hashicorp-founder/</link><pubDate>Fri, 13 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/13/go-is-a-successful-and-zero-regret-choice-for-us-by-hashicorp-founder/</guid><description>提到HashiCorp这个公司，可能很多人都没听说过。但提到vagrant、consul、nomad、terraform或者vault，那么你一定对这些工具或其中之一有所耳闻。这些工具都是HashiCorp这家公司的开源项目。 今年年初，HashiCorp在中国IT圈着实“火”了一把！当时HashiCorp宣布旗下软件禁止在中国区销售，这让很多重度依赖欧美主导的开源软件的国内大厂、小厂、传统IT公...</description></item><item><title>Go，11周年</title><link>https://tonybai.com/2020/11/11/go-opensource-11-years/</link><pubDate>Wed, 11 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/11/go-opensource-11-years/</guid><description>本文翻译自Go官方博客文章《Eleven Years of Go》，原作者：Russ Cox。 今天，我们一起庆祝Go语言正式开业发布11周年。去年的“Go turning 10”周年庆典聚会似乎已成为久远的回忆。这是艰难的一年，但我们一直保持了Go开发的步伐，并积累了很多亮点。 在去年11月，我们在庆祝Go 10周年后不久就发布和上线了go.dev和pkg.go.dev站点。 今年2月，Go 1...</description></item><item><title>通过实例深入理解sync.Map的工作原理</title><link>https://tonybai.com/2020/11/10/understand-sync-map-inside-through-examples/</link><pubDate>Tue, 10 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/10/understand-sync-map-inside-through-examples/</guid><description>&amp;gt; 注：本文首发于笔者的个人微信公众号”iamtonybai”，是公号付费文章(价格1元)。首发于2020.10.9日，经过一个月收费期，我觉得将其免费分享出来。如果你觉得文章质量不错，欢迎到首发地址付费支持：https://mp.weixin.qq.com/s/rsDC-6paC5zN4sepWd5LqQ 近期在项目考虑在内存中保存从数据库加载的配置数据的方案，初步考虑采用map来保存。Go语言...</description></item><item><title>重度使用Go的“后遗症“，你有吗？</title><link>https://tonybai.com/2020/11/05/the-sequela-after-being-used-to-writting-code-in-go/</link><pubDate>Thu, 05 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/05/the-sequela-after-being-used-to-writting-code-in-go/</guid><description>有一种未经证实的说法：**Go诞生于C++程序的漫长构建过程中**。如果C++编译很快，那么Robert Griesemer、Rob Pike和Ken Thompson这三位大佬也没有闲暇时间一起喝着咖啡并决定是时候设计一门新语言了。的确，Go语言诞生后，其简洁的语法、极速地构建、新颖的并发结构、体验优良的工具链以及完成度不低的标准库吸引了很多C/C++程序员转型成为Gopher并开始重度使用Go...</description></item><item><title>系统学习Go语言，有这几本书就够了！</title><link>https://tonybai.com/2020/11/04/the-recommend-books-list-for-learning-go/</link><pubDate>Wed, 04 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/04/the-recommend-books-list-for-learning-go/</guid><description>1\. Go语言的发展现状 如果从2007年9月20日那个下午三个“程序员大佬”在谷歌总部的一间办公室里进行的一次有关设计一门新编程语言的讨论算起，那么Go语言已经度过了自己的13个年头了。 Robert Griesemer、Rob Pike和Ken Thompson 如果从2009年11月10日Go语言正式开源发布算起，Go语言也即将迎来自己的第11个生日。 2020年，Go联合创始人Rob P...</description></item><item><title>Go 1.15中值得关注的几个变化</title><link>https://tonybai.com/2020/10/11/some-changes-in-go-1-15/</link><pubDate>Sun, 11 Oct 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/10/11/some-changes-in-go-1-15/</guid><description>Go 1.15版本在8月12日就正式发布了，给我的感觉就是发布的挺痛快^\_^。这种感觉来自与之前版本发布时间的对比：Go 1.13版本发布于当年的9月4日，更早的Go 1.11版本发布于当年的8月25日。 不过这个时间恰与我家二宝出生和老婆月子时期有重叠，每天照顾孩子团团转的我实在抽不出时间研究Go 1.15的变化:(。如今，我逐渐从照顾二宝的工作中脱离出来^\_^，于是“Go x.xx版本值得...</description></item><item><title>官宣：Go专栏“改善Go语言编程质量的50个有效实践”上线了</title><link>https://tonybai.com/2020/09/08/imooc-go-column-is-available/</link><pubDate>Tue, 08 Sep 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/09/08/imooc-go-column-is-available/</guid><description>断断续续写了一年多的Go专栏：《改善Go语言编程质量的50个有效实践》今天终于正式上线了！- https://www.imooc.com/read/87 慕课专栏：《改善Go语言编程质量的50个有效实践》 Go语言是Google大牛团队(Robert Griesemer、Rob Pike以及Ken Thompson)设计的一种静态类型、编译型编程语言，支持垃圾回收和轻量级并发，它于2009年11月...</description></item><item><title>Google内部是如何使用Go语言的</title><link>https://tonybai.com/2020/08/30/new-case-studies-about-googles-use-of-go/</link><pubDate>Sun, 30 Aug 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/08/30/new-case-studies-about-googles-use-of-go/</guid><description>Go语言始于2007年9月，当时Robert Griesemer，Ken Thompson和我开始讨论设计一种新语言，以解决我们和Google同事在日常工作中面临的工程挑战。我们当时编写的软件通常是一个网络服务器-一个与数百台其他服务器交互的程序-并且在其生命周期内，成千上万的程序员可能会参与编写和维护它。但是我们当时正在使用的语言似乎没有提供正确的工具来解决我们在这种复杂环境中面临的问题。 因此...</description></item><item><title>基于Markdown格式的电子书生成工具大比拼：gohugo、mdbook和peach</title><link>https://tonybai.com/2020/06/27/gohugo-vs-mdbook-vs-peach/</link><pubDate>Sat, 27 Jun 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/06/27/gohugo-vs-mdbook-vs-peach/</guid><description>基于Markdown格式文件写博客已经很多年了，一直使用的是Wordpress的markdown插件，由于各种遗留原因，一直没有转换到直接使用静态站点的方式。博客文章之间一般来说多是独立篇章，少有关联，即便是写一个系列文章，数量也不会太多。因此，用博客形式来组织书籍章节是不大合适的。“术业有专攻”，我们还得寻找专门用来制作电子书的工具或平台，并且要支持本地安装，支持基于Markdown格式的源数据...</description></item><item><title>Go泛型真的要来了！最早在Go 1.17版本支持</title><link>https://tonybai.com/2020/06/18/the-go-generics-is-coming-and-supported-in-go-1-17-at-the-earliest/</link><pubDate>Thu, 18 Jun 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/06/18/the-go-generics-is-coming-and-supported-in-go-1-17-at-the-earliest/</guid><description>Go官博今晨发表了Go核心团队两位大神Ian Lance Taylor和Go语言之父之一的Robert Griesemer撰写的文章“The Next Step for Generics”，该文介绍了Go泛型(Go Generics)的最新进展和未来计划。 2019年中旬，在Go 1.13版本发布前夕的GopherCon 2019大会上，Ian Lance Taylor代表Go核心团队做了有关Go...</description></item><item><title>关于xml包在Unmarshal时将 重写为 的问题</title><link>https://tonybai.com/2020/06/04/the-issue-of-go-xml-package-rewrite-carriage-return/</link><pubDate>Thu, 04 Jun 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/06/04/the-issue-of-go-xml-package-rewrite-carriage-return/</guid><description>今年4月份，中国移动、中国电信、中国联通三大运营商联合举行线上发布会，发布了《5G消息白皮书》。所谓5G消息，即传统短信消息（仅能进行文本展示）的升级版，是由GSMA组织制定的RCS(Rich Communication Suite)消息规范所定义。2019年RCS UP（unified profile)更新到2.4版本，并成为了5G终端标准的一部分，该版本也是第一个具备商用能力的版本，为5G消息...</description></item><item><title>Go语言联合作者Rob Pike专访：Go确实已成为云基础架构的语言</title><link>https://tonybai.com/2020/05/01/rob-pike-interview-go-become-the-language-of-cloud-infrastructure/</link><pubDate>Fri, 01 May 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/05/01/rob-pike-interview-go-become-the-language-of-cloud-infrastructure/</guid><description>&amp;gt; 尽管看到Docker，Kubernetes和用Go编写的云计算的许多其他组件令人欣喜和重要，但也许并不奇怪。Go确实已经成为云基础架构的语言。- Rob Pike，Go编程语言的联合作者 本文翻译自《Rob Pike interview: “Go has indeed become the language of cloud infrastructure”》。 简介 -- 我们与Go编程语言之...</description></item><item><title>后端程序员一定要看的语言大比拼：Java vs. Go vs. Rust</title><link>https://tonybai.com/2020/05/01/comparison-between-java-go-and-rust/</link><pubDate>Fri, 01 May 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/05/01/comparison-between-java-go-and-rust/</guid><description>这是Java，Go和Rust之间的比较。这不是基准测试，更多是对可执行文件大小、内存使用率、CPU使用率、运行时要求等的比较，当然还有一个小的基准测试，可以看到每秒处理的请求数量，我将尝试对这些数字进行有意义的解读。 为了尝试尽可能公平比较，我在此比较中使用每种语言编写了一个Web服务。Web服务非常简单，它提供了三个REST服务端点(endpoint)。 Web服务提供的服务端点 这三个Web服...</description></item><item><title>go protobuf v1败给了gogo protobuf，那v2呢？</title><link>https://tonybai.com/2020/04/24/gogoprotobuf-vs-goprotobuf-v1-and-v2/</link><pubDate>Fri, 24 Apr 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/04/24/gogoprotobuf-vs-goprotobuf-v1-and-v2/</guid><description>近期的一个项目有对结构化数据进行序列化和反序列化的需求，该项目具有**performance critical**属性，因此我们在选择序列化库包时是要考虑包的性能的。 github上有一个有关Go序列化方法性能比较的repo：go\_serialization\_benchmarks，这个repo横向比较了数十种数据序列化方法的正确性、性能、内存分配等，并给出了一个结论：推荐**gogo prot...</description></item><item><title>图解git原理的几个关键概念</title><link>https://tonybai.com/2020/04/07/illustrated-tale-of-git-internal-key-concepts/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/04/07/illustrated-tale-of-git-internal-key-concepts/</guid><description>git是那个“爱骂人”的Linux之父Linus Torvalds继Linux内核后奉献给全世界程序员的第二个礼物（不能确定已经逐渐老去的Torvalds能否迸发第三春，第三次给我们一个超大惊喜^\_^）。这里再强调一下，git读作**/git/**，而不是**/dʒit/**。 在诞生十余载后(2005年发布第一版)，**git**毫无争议地成为了程序员版本管理工具的首选，它改变了全世界程序员的...</description></item><item><title>Hello，WireGuard</title><link>https://tonybai.com/2020/03/29/hello-wireguard/</link><pubDate>Sun, 29 Mar 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/03/29/hello-wireguard/</guid><description>2020年1月28日，Linux之父Linus Torvalds正式将WireGuard merge到Linux 5.6版本内核主线： 图：WireGuard被加入linux kernel 5.6主线的commit log 这意味着在Linux 5.6内核发布时，linux在内核层面将**原生**支持一个新的VPN协议栈：WireGuard。 图：WireGuard Logo 一. VPN与Wir...</description></item><item><title>图解Go运行时调度器</title><link>https://tonybai.com/2020/03/21/illustrated-tales-of-go-runtime-scheduler/</link><pubDate>Sat, 21 Mar 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/03/21/illustrated-tales-of-go-runtime-scheduler/</guid><description>本文翻译自《Illustrated Tales of Go Runtime Scheduler》。 &amp;gt; 译注：原文章结构有些乱，笔者自行在译文中增加了一些分级标题，让结构显得更清晰一些:)。 多goroutines形式的Go并发是编写现代并发软件的一种非常方便的方法，但是您的Go程序是如何高效地运行这些goroutines的呢？ 在这篇文章中，我们将深入Go运行时底层，从设计角度了解Go运行时调度...</description></item><item><title>使用minio搭建高性能对象存储-第一部分：原型</title><link>https://tonybai.com/2020/03/16/build-high-performance-object-storage-with-minio-part1-prototype/</link><pubDate>Mon, 16 Mar 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/03/16/build-high-performance-object-storage-with-minio-part1-prototype/</guid><description>近期参与了一个项目，该项目有存储大量图片、短视频、音频等非结构化数据的需求。于是我优先在Go社区寻找能满足这类需求的开源项目，minio就这样进入了我的视野。 图：minio logo 其实三年前我就知道了minio，并还下载玩(研)耍(究)了一番，但那时minio的成熟程度与今天相比还是相差较远的(当时需求简单，于是选择了较为熟悉的weedfs)。而如今的minio在github上收获了广泛的关...</description></item><item><title>可视化Go内存管理</title><link>https://tonybai.com/2020/03/10/visualizing-memory-management-in-golang/</link><pubDate>Tue, 10 Mar 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/03/10/visualizing-memory-management-in-golang/</guid><description>本文翻译自《Visualizing memory management in Golang》。 “内存管理”系列的一部分 在这个由多部分组成的系列文章中，我旨在揭示内存管理背后的概念，并对某些现代编程语言的内存管理机制做更深入的探究。我希望该系列文章可以使您对这些语言在内存管理方面正在发生的事情能有所了解。 在本章中，我们将研究Go编程语言（Golang）的内存管理。和C/C++、Rust等一样，...</description></item><item><title>小心go.mod中的go directive</title><link>https://tonybai.com/2020/03/09/take-care-of-the-go-directive-in-go-dot-mod/</link><pubDate>Mon, 09 Mar 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/03/09/take-care-of-the-go-directive-in-go-dot-mod/</guid><description>在撰写《Go 1.14中值得关注的几个变化》这篇文章时，我使用的试验环境为我的2019款 MacPro，OS版本：10.14.6。我通过下载 `https://dl.google.com/go/go1.14.darwin-amd64.tar.gz`并解压的方式安装的Go 1.14版本。在我的工作环境中，我通常通过变更`GOROOT`的方式来使用不同的Go版本。但在进行Go 1.14新增的overl...</description></item><item><title>Go 1.14中值得关注的几个变化</title><link>https://tonybai.com/2020/03/08/some-changes-in-go-1-14/</link><pubDate>Sun, 08 Mar 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/03/08/some-changes-in-go-1-14/</guid><description>可能是得益于2020年2月26日Go 1.14的发布，在2020年3月份的TIOBE编程语言排行榜上，Go重新进入TOP 10，而去年同期Go仅排行在第18位。虽然Go语言以及其他主流语言在榜单上的“上蹿下跳”让这个榜单的权威性饱受质疑:)，但Go在这样的一个时间节点能进入TOP 10，对于Gopher和Go社区来说，总还是一个不错的结果。并且在一定层度上说明：Go在努力耕耘十年后，已经在世界主流...</description></item><item><title>Go语言之禅</title><link>https://tonybai.com/2020/02/24/the-zen-of-go/</link><pubDate>Mon, 24 Feb 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/02/24/the-zen-of-go/</guid><description>本文翻译自Go社区知名Gopher和博主Dave Cheney的文章《The Zen of Go》。 本文来自我在GopherCon Israel 2020上的演讲。文章很长:) 如果您希望阅读精简版，请移步到the-zen-of-go.netlify.com。 &amp;gt; 该演讲视频还未上线。如上线，我会把它更新到本文中的。 我应该如何编写出好代码？ 我最近一直在思考很多事情，每当反思自己的工作成果时，...</description></item><item><title>图解Go内存分配器</title><link>https://tonybai.com/2020/02/20/a-visual-guide-to-golang-memory-allocator-from-ground-up/</link><pubDate>Thu, 20 Feb 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/02/20/a-visual-guide-to-golang-memory-allocator-from-ground-up/</guid><description>本文翻译自《A visual guide to Go Memory Allocator from scratch (Golang)》。 当我刚开始尝试了解Go的内存分配器时，我发现这真是一件可以令人发疯的事情，因为所有事情似乎都像一个神秘的黑盒(让我无从下手)。由于几乎所有技术魔法都隐藏在抽象之下，因此您需要逐一剥离这些抽象层才能理解它们。 在这篇文章中，我们就来这么做(剥离抽象层去了解隐藏在其下...</description></item><item><title>Go modules：最小版本选择</title><link>https://tonybai.com/2019/12/21/go-modules-minimal-version-selection/</link><pubDate>Sat, 21 Dec 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/12/21/go-modules-minimal-version-selection/</guid><description>一. 介绍 ----- 每个依赖管理解决方案都必须解决选择依赖项版本的问题。当前存在的许多版本选择算法都试图识别任何依赖项的“最新最大(latest greatest)”版本。如果您认为语义版本控制(sematic versioning)将被正确应用并且这种社会契约得到遵守，那么这是有道理的。在这样的情况下，依赖项的“最新最大”版本应该是最稳定和安全的版本，并且应与较早版本具有向后兼容性。至少在相...</description></item><item><title>计算重现性：一些挑战</title><link>https://tonybai.com/2019/11/19/computational-reproducibility-some-challenges/</link><pubDate>Tue, 19 Nov 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/11/19/computational-reproducibility-some-challenges/</guid><description>&amp;gt; 写在Go语言开源十周年的日子 by Rob Pike 近期，有人对科学结果的可重现性进行了讨论，并得出了一些让人沮丧的结论。一项研究表明：这种可重现性只有62％。 在某些领域，情况可能更糟。任何依赖于计算的结果都面临着其编程环境不断变化的巨大风险：十年前编写的程序如果没有更改，今天构建成功的机会几乎微乎其微，更不用说运行或正确运行了。 这种担忧并不普遍，但正在增长。一个标志就是**十年重现性挑...</description></item><item><title>Go官方发布的go.dev给gopher们带来了什么</title><link>https://tonybai.com/2019/11/14/what-the-godev-website-bring-to-gophers/</link><pubDate>Thu, 14 Nov 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/11/14/what-the-godev-website-bring-to-gophers/</guid><description>众所周知，Go是一个诞生于Google内部的编程语言，它在2009年11月份开源，在开源后立即受到了来自全世界开发人员的关注与贡献。但初期的Go语言的发展依旧是由Go核心团队的若干leader决定的，这种类“民主集中制”的方法延续了若干年。直到Go核心团队逐渐意识到Go应该更多倾听社区的声音，并让更多的gopher参与到Go项目的开发和贡献中来，甚至影响和决定一些语言特定的演化。于是Go团队开始特...</description></item><item><title>Go语言开源十周年</title><link>https://tonybai.com/2019/11/09/go-opensource-10-years/</link><pubDate>Sat, 09 Nov 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/11/09/go-opensource-10-years/</guid><description>本文翻译自Go官方博客上Russ Cox代表Go核心团队发表的“Go Turns 10″一文。 **生日快乐，Go！** 这个周末，我们庆祝Go正式对外发布10周年，即Go作为开源编程语言和构建现代网络软件生态系统的10周年诞辰。 为了纪念这一时刻，Go gopher的创建者Renee French(用下面的新作)描绘了这个令人愉快的场景： 庆祝Go十周年让我回想起2009年11月上旬，那时我们正...</description></item><item><title>Go语言项目的安全评估技术</title><link>https://tonybai.com/2019/11/08/security-assessment-techniques-for-go-projects/</link><pubDate>Fri, 08 Nov 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/11/08/security-assessment-techniques-for-go-projects/</guid><description>在今年夏天我们对Kubernetes的评估成功之后，我们收到了大量Go项目的安全评估需求。为此，我们将在其他编译语言中使用过的安全评估技术和策略调整适配到多个Go项目中。 我们从了解语言的设计开始，识别出开发人员可能无法完全理解语言语义特性的地方。多数这些被误解的语义来自我们向客户报告的调查结果以及对语言本身的独立研究。尽管不是详尽无遗，但其中一些问题领域包括作用域、协程、错误处理和依赖管理。值得...</description></item><item><title>图解中文字符编码-Go语言例解</title><link>https://tonybai.com/2019/11/07/non-ascii-character-encoding-illustrated/</link><pubDate>Thu, 07 Nov 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/11/07/non-ascii-character-encoding-illustrated/</guid><description>今天几个同事在处理一个有关中文字符编码的问题，感觉他们对字符编码这件事依然理解不够透彻。这里用图文方式对中文字符编码做一个简要的解释，例子使用Go语言。 我们知道每个英文字母和数字在计算机中都会对应一个字节，或者说用一个字节来表示，这就是最初的ASCII码。但是随着计算机在全球范围内的广泛使用，非英语国家也要在计算机使用自己的字符，于是出现了字符集“百花齐放”的情况，我国在早期也颁布了自己的中文字...</description></item><item><title>Go语言的遗产</title><link>https://tonybai.com/2019/11/04/the-legacy-of-go/</link><pubDate>Mon, 04 Nov 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/11/04/the-legacy-of-go/</guid><description>本文是gohugo作者Steve Francia在意大利佛罗伦萨举办的GoLab上分享的闭幕演讲讲稿的文字版，该演讲的主题为”Go的遗产”。该演讲讨论了Go语言继承的遗产，以及它是如何尊重这些遗产的，并在最后总结了Go希望留给后来者的遗产。 **演讲胶片** &amp;gt; 我们有责任保留好留给我们的遗产，并留下值得我们子孙后代继承的遗产 – 克里斯汀·格雷格（Christine Gregoire） 1\. ...</description></item><item><title>Go 1.13中值得关注的几个变化</title><link>https://tonybai.com/2019/10/27/some-changes-in-go-1-13/</link><pubDate>Sun, 27 Oct 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/10/27/some-changes-in-go-1-13/</guid><description>2019年对于Go语言来说也是一个重要的年份，因为在2019年的11月10日，Go即将迎来其开源10周年的纪念日。在这个重要日子的前夕，在GopherCon 2019大会后，Go项目组在2019.9.4日发布了Go 1.13版本。 这是自2017年GopherCon大会上Russ Cox做“Toward Go 2″主题演讲以来Go项目发布的第四个版本（前三个分别是：go 1.10、go 1.11和...</description></item><item><title>Go 1.13中的错误处理</title><link>https://tonybai.com/2019/10/18/errors-handling-in-go-1-13/</link><pubDate>Fri, 18 Oct 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/10/18/errors-handling-in-go-1-13/</guid><description>介绍 -- 在过去的十年中， Go的errors are values的理念在编码实践中运行得也很良好。尽管标准库对错误处理的的支持很少（只有errors.New和fmt.Errorf函数可以用来构造仅包含字符串消息的错误），但是内置的error接口使Go程序员可以添加所需的任何信息。它所需要的只是一个实现Error方法的类型： type QueryError struct { Query str...</description></item><item><title>Uber Go语言编码规范</title><link>https://tonybai.com/2019/10/12/uber-go-style-guide/</link><pubDate>Sat, 12 Oct 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/10/12/uber-go-style-guide/</guid><description>Uber是世界领先的生活出行服务提供商，也是Go语言的早期adopter，根据Uber工程博客的内容，大致可以判断出Go语言在Uber内部扮演了十分重要的角色。Uber内部的Go语言工程实践也是硕果累累，有大量Go实现的内部工具被Uber开源到github上，诸如被Gopher圈熟知的zap、jaeger等。2018年年末Uber将内部的Go风格规范开源到github，经过一年的积累和更新，该规范...</description></item><item><title>如何在Go语言中使用Websockets：最佳工具与行动指南</title><link>https://tonybai.com/2019/09/28/how-to-build-websockets-in-go/</link><pubDate>Sat, 28 Sep 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/09/28/how-to-build-websockets-in-go/</guid><description>如今，在不刷新页面的情况下发送消息并获得即时响应在我们看来是理所当然的事情。但是曾几何时，启用实时功能对开发人员来说是一个真正的挑战。开发社区在HTTP长轮询(http long polling)和AJAX上走了很长一段路，但终于还是找到了一种构建真正的实时应用程序的解决方案。 该解决方案以WebSockets的形式出现，这使得在用户浏览器和服务器之间开启一个交互式会话成为可能。WebSocket...</description></item><item><title>Go语言包管理简史</title><link>https://tonybai.com/2019/09/21/brief-history-of-go-package-management/</link><pubDate>Sat, 21 Sep 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/09/21/brief-history-of-go-package-management/</guid><description>包管理是Go一直被诟病做得不好的功能之一。先前版本（go 1.11之前）的主要缺点之一是go get是缺乏对依赖包版本的管理和对可复制构建(reproducible build)的支持。Go社区已经开发了一些包管理器和工具作为版本化包依赖的事实标准解决方案，如glide，dep以及一些辅助工具等。 &amp;gt; “我在生产构建中使用go get。” – 没有人这么说过。 Go语言的包管理实现可追溯到Goog...</description></item><item><title>Go语言回顾：从Go 1.0到Go 1.13</title><link>https://tonybai.com/2019/09/07/go-retrospective/</link><pubDate>Sat, 07 Sep 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/09/07/go-retrospective/</guid><description>Go 1.13版本在2019.9.3正式发布！国外的Gopher Vincent Blanchon发表了一篇文章《Go: Retrospective》(科学上网阅读)，对Go从1.0版本到1.13版本做了简要的回顾，这里是那篇文章的译文。 对于每一位Go开发者来说，Go语言的演化历程是必须要知道的事情。了解这些横跨年份发布的大版本的主要变化将有助于Gopher理解Go语言的发展理念以及该语言每个版...</description></item><item><title>Go module机制下升级major版本号的实践</title><link>https://tonybai.com/2019/06/03/the-practice-of-upgrading-major-version-under-go-module/</link><pubDate>Mon, 03 Jun 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/06/03/the-practice-of-upgrading-major-version-under-go-module/</guid><description>Go module机制在Go 1.11版本引入，虽然也伴随着不小的质疑声，但总体上Go社区多数Gopher是接受go module的，很多标杆式的Go项目(比如kubernetes、kubernetes client-go等)也都逐渐转向了Go module，并且Gopher也在向core team反馈了自己的建议和问题。Go core team也在go module最初设计的基础上持续进行着改进...</description></item><item><title>Go正走在成为下一个企业级编程语言的轨道上</title><link>https://tonybai.com/2019/05/03/go-is-on-a-trajectory-to-become-the-next-enterprise-programming-language/</link><pubDate>Fri, 03 May 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/05/03/go-is-on-a-trajectory-to-become-the-next-enterprise-programming-language/</guid><description>发展演化了十年的Go语言已经被证明了是云计算时代的首选编程语言，但Go的用武之地显然不局限于此。Kevin Goslar近期在Hacker Noon发表了一篇名为：《Go is on a Trajectory to Become the Next Enterprise Programming Language》的文章，阐述了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>使用nomad实现集群管理和微服务部署调度</title><link>https://tonybai.com/2019/03/30/cluster-management-and-microservice-deployment-and-scheduled-by-nomad/</link><pubDate>Sat, 30 Mar 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/03/30/cluster-management-and-microservice-deployment-and-scheduled-by-nomad/</guid><description>在“云原生”、“容器化”、“微服务”、“服务网格”等概念大行其道的今天，一提到集群管理、容器工作负载调度，人们首先想到的是Kubernetes。 Kubernetes经过多年的发展，目前已经成为了云原生计算平台的事实标准，得到了诸如谷歌、微软、红帽、亚马逊、IBM、阿里等大厂的大力支持，各大云计算提供商也都提供了专属Kubernetes集群服务。开发人员可以**一键**在这些大厂的云上创建k8s集...</description></item><item><title>Go 1.12中值得关注的几个变化</title><link>https://tonybai.com/2019/03/02/some-changes-in-go-1-12/</link><pubDate>Sat, 02 Mar 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/03/02/some-changes-in-go-1-12/</guid><description>Go team如期在2月末发布了Go 1.12版本。从Go 1.12的Release Notes粗略来看，这个版本相较于之前增加了go modules机制、WebAssembly支持的Go 1.11，变化略“小”。这也给下一个Go 1.13版本预留了足够的“惊喜”空间:)。从目前的plan来看，Go 1.13很可能落地的包括：Go2的几个proposals：Go 2 number literals...</description></item><item><title>Go2 Error Inspection前瞻</title><link>https://tonybai.com/2019/01/27/perspective-study-on-go2-error-inspection/</link><pubDate>Sun, 27 Jan 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/01/27/perspective-study-on-go2-error-inspection/</guid><description>这几年关于Go语言未来演化的讨论成为了Gopher世界的热点，Go team官方对于Go语言的演化(以Go2为标签)也是十分上心，但吸取了其他语言，比如：Python3割裂社区的、不兼容演化的教训，Go team最终选择了一条尽可能地兼容Go1、稳健、平滑的演化之路，并逐渐开始落地。Go 1.11的Go modules是Go team开启**Go2**演化进程的标志性事件。随着“Go 2 Draf...</description></item><item><title>Go与SOAP</title><link>https://tonybai.com/2019/01/08/go-and-soap/</link><pubDate>Tue, 08 Jan 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/01/08/go-and-soap/</guid><description>在REST和RPC大行其道的今天，支持SOAP（简答对象访问协议）作为Web服务消息交换协议的情况是越来越少了。但在一些遗留系统中，尤其是采用微软技术栈的服务系统中，SOAP依然占有一席之地，比如在一些医院院内的IT系统中。 Go语言诞生后，主流的Web Service设计已经开始过渡到REST和RPC，Go相关开源项目也以对REST和RPC的支持为主。而对SOAP的支持则少而零散，社区里也没有对...</description></item><item><title>Hello，Go module proxy</title><link>https://tonybai.com/2018/11/26/hello-go-module-proxy/</link><pubDate>Mon, 26 Nov 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/11/26/hello-go-module-proxy/</guid><description>一. Go module引入的幸福与“无奈” ---------------------- 在《Go 1.11中值得关注的几个变化》一文中，我们知道了Go语言通过引入module的概念进而引入了Go tool的另外一种工作模式module-aware mode。在新的工作模式下，Go module支持了Versioned Go，并初步解决了包依赖管理的问题。 对于全世界绝大多数Gophers来说，...</description></item><item><title>Go 1.11中值得关注的几个变化</title><link>https://tonybai.com/2018/11/19/some-changes-in-go-1-11/</link><pubDate>Mon, 19 Nov 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/11/19/some-changes-in-go-1-11/</guid><description>转眼间又近年底，距8月25日Go 1.11版本正式发布已过去快三个月了。由于种种原因，Go语言发布变化系列的Go 1.11版本没能及时放出。近期网课发布上线后，个人时间压力稍缓和。又恰看到近期Go 1.12 release note的initial version已经加入到master，于是这篇文章便上升到个人Todo list的Top3的位置，我也尽一切可能的碎片时间收集素材，撰写文章内容。这个...</description></item><item><title>Go，9周年</title><link>https://tonybai.com/2018/11/12/go-opensource-9-years/</link><pubDate>Mon, 12 Nov 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/11/12/go-opensource-9-years/</guid><description>本文翻译自Go官方博客：《Nine years of Go》。 介绍 今天是我们的Go语言初始版本开源的第九个周年纪念日。在每个周年纪念日上，我们都希望花些时间思考过去一年发生的事情。过去12个月对Go语言和Go社区来说是突破性的一年。 对Go的爱和接纳 感谢你们所有人，2018年对Go来说是美好的一年！在多个行业调查中，Gopher们表达了他们使用Go的快乐程度，并且许多非Go开发者也表示了他们...</description></item><item><title>基于consul实现微服务的服务发现和负载均衡</title><link>https://tonybai.com/2018/09/10/setup-service-discovery-and-load-balance-based-on-consul/</link><pubDate>Mon, 10 Sep 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/09/10/setup-service-discovery-and-load-balance-based-on-consul/</guid><description>一. 背景 ----- 随着2018年年初国务院办公厅联合多个部委共同发布了《国务院办公厅关于促进“互联网+医疗健康”发展的意见(国办发〔2018〕26号)》，国内医疗IT领域又迎来了一波互联网医院建设的高潮。不过互联网医院多基于实体医院建设，虽说挂了一个“互联网”的名号，但互联网医院系统也多与传统的院内系统，比如：HIS、LIS、PACS、EMR等共享院内的IT基础设施。 如果你略微了解过国内医...</description></item><item><title>初窥Go module</title><link>https://tonybai.com/2018/07/15/hello-go-module/</link><pubDate>Sun, 15 Jul 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/07/15/hello-go-module/</guid><description>自2007年“三巨头（Robert Griesemer, Rob Pike, Ken Thompson）”提出设计和实现Go语言以来，Go语言已经发展和演化了十余年了。这十余年来，Go取得了巨大的成就，先后在2009年和2016年当选TIOBE年度最佳编程语言，并在全世界范围内拥有数量庞大的拥趸。不过和其他主流编程语言一样，Go语言也不是完美的，不能满足所有开发者的“口味”。这些年来Go在“包依赖...</description></item><item><title>对一段有关Go Code Block和变量作用域的代码的简要分析</title><link>https://tonybai.com/2018/05/11/the-analysis-of-a-go-code-snippet-about-code-blocks-and-scope/</link><pubDate>Fri, 11 May 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/05/11/the-analysis-of-a-go-code-snippet-about-code-blocks-and-scope/</guid><description>近期，Go team的David CrawShaw在twitter上贴出了一段代码，如下： func main() { if a := 1; false { } else if b := 2; false { } else if c := 3; false { } else { println(a, b, c) } } David CrawShaw想表达的意图是gopher们很少在”else if...</description></item><item><title>写Go代码时遇到的那些问题[第3期]</title><link>https://tonybai.com/2018/04/06/the-problems-i-encountered-when-writing-go-code-issue-3rd/</link><pubDate>Fri, 06 Apr 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/04/06/the-problems-i-encountered-when-writing-go-code-issue-3rd/</guid><description>我有一个习惯，那就是随时记录下编程过程中遇到的问题（包括问题现场、问题起因以及对问题的分析），并喜欢阶段性的对一段时间内的**编码过程的得与失**进行回顾和总结。内容可以包括：对编程语法的新认知、遇坑填坑的经历、一些让自己豁然开朗的小tip/小实践等。记录和总结的多了，感觉有价值的，就成文发在博客上的；一些小的点，或是还没有想清楚的事情，或思路没法结构化统一的，就放在资料库里备用。“写Go代码时遇...</description></item><item><title>defer函数参数求值简要分析</title><link>https://tonybai.com/2018/03/23/the-analysis-of-the-param-evaluation-of-defer-functions/</link><pubDate>Fri, 23 Mar 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/03/23/the-analysis-of-the-param-evaluation-of-defer-functions/</guid><description>一. 引子 书接上文，在发表了《对一段Go语言代码输出结果的简要分析》一文之后，原问题提出者又有了新问题，这是一个典型Gopher学习Go的历程，想必很多Gopher们，包括我自己都遇到过的。我们先来看看这段代码(来自原问题提出者)： // https://play.golang.org/p/dOUFNj96EIQ package main import &amp;#34;fmt&amp;#34; func main() { v...</description></item><item><title>对一段Go语言代码输出结果的简要分析</title><link>https://tonybai.com/2018/03/20/the-analysis-of-output-results-of-a-go-code-snippet/</link><pubDate>Tue, 20 Mar 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/03/20/the-analysis-of-output-results-of-a-go-code-snippet/</guid><description>年后事情实在是多，各种被催进度，于是好长一段时间未更博客了，自责中….。今天蹦出来热热身^0^！ 中午在微博私信中看到一封来自某Gopher的咨询，他贴了一段代码，并表示对代码的输出结果的不解，希望我能帮他分析一下。他的代码如下： //testslicerange.go package main import ( &amp;#34;fmt&amp;#34; &amp;#34;time&amp;#34; ) type field struct { name st...</description></item><item><title>TB一周萃选[第10期]</title><link>https://tonybai.com/2018/03/03/10th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sat, 03 Mar 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/03/03/10th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第10期\]”**的归档。 &amp;gt; 这个世界上最危险的毒药，就是成就感。而解药就是每晚都想一想，明天如何做得更好。 – 英格瓦坎普拉德，宜家创始人 2018年元宵节已过，这个传统意义上的年就算真的过完了，我们的那颗有些闲散、有些懈怠的心需要收一收，是时候为2018年的“事业”做些规划，从2018的起跑线上起跑出去了。就连现在的孩子，在开学第一课时都...</description></item><item><title>Go 1.10中值得关注的几个变化</title><link>https://tonybai.com/2018/02/17/some-changes-in-go-1-10/</link><pubDate>Sat, 17 Feb 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/02/17/some-changes-in-go-1-10/</guid><description>又到了Go语言新版本的发布时间窗口了！这次的主角是Go 1.10。 曾几何时， 这是很多Gopher在Go 1.8、Go 1.9时猜测是否存在的那个版本，毕竟minor version即将进化到两位数。从Go语言第一封设计mail发出到现在的十年间，尤其是Go语言经历了近几年的爆发式增长，基本奠定了云原生第一语言的位置之后，人们对Go语言有了更多新的、更为深刻的认知，同时对这门编程语言也有了更多的...</description></item><item><title>TB一周萃选[第9期]</title><link>https://tonybai.com/2018/02/11/9th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sun, 11 Feb 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/02/11/9th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第9期\]”**的归档。 &amp;gt; 亲情犹如一江剪不断的春水，流动的是游子心中永远的思念；亲情犹如一丘数不尽的细沙，沉淀的是长年堆积的牵挂；亲情犹如夜空中那颗北斗，指引的是那迷路的羔羊回家的方向。忙碌了一年，该回家了，给心放个假，带上媳妇带上你的娃，回家看看那年迈的爸妈，出发！ — 改编自网络 此时此刻，很多人刚刚踏上了春节回家的旅途，有些人更是已经...</description></item><item><title>TB一周萃选[第8期]</title><link>https://tonybai.com/2018/02/03/8th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sat, 03 Feb 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/02/03/8th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第8期\]”**的归档。 &amp;gt; 再看看那个光点，它就在这里。那是我们的家园，我们的一切。你所爱的每一个人，你认识的每一个人，你听说过的每一个人，曾经有过的每一个人，都在它上面度过他们的一生。我们的欢乐与痛苦聚集在一起，数以千计的自以为是的宗教、意识形态和经济学说，所有的猎人与强盗、英雄与懦夫、文明的缔造者与毁灭者、国王与农夫、年轻的情侣、母亲与父...</description></item><item><title>TB一周萃选[第7期]</title><link>https://tonybai.com/2018/01/28/7th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sun, 28 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/28/7th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第7期\]”**的归档。 &amp;gt; 我看过小马哥(哈维尔·马斯切拉诺)踢球， &amp;gt; 你看过小马哥踢球， &amp;gt; 他看过小马哥踢球。 &amp;gt; 我们看过小马哥踢球， &amp;gt; 你们看过小马哥踢球， &amp;gt; 他们看过小马哥踢球！ &amp;gt; &amp;gt; — 改编自网络资料 都说三九天是一年中最冷的一段时间，但我们这里稍有偏差，就个人赶脚：四九、五九才是我们这里温度的最低点。这一周的感受用一句...</description></item><item><title>写Go代码时遇到的那些问题[第2期]</title><link>https://tonybai.com/2018/01/27/the-problems-i-encountered-when-writing-go-code-issue-2nd/</link><pubDate>Sat, 27 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/27/the-problems-i-encountered-when-writing-go-code-issue-2nd/</guid><description>第1期的“写Go代码时遇到的那些问题”一经发布后得到了很多Gopher的支持和赞赏，这也是我继续写下去的动力！不过这里依然要强调的是这一系列文章反映的是笔者在实践中对代码编写的认知以及代码的演化过程。这里的代码也许只是“中间阶段”，并不是什么最优的结果，我记录的只是对问题、对代码的一个思考历程。不过，十分欢迎交流与批评指正。 一、dep的日常操作 ---------- 虽然dep在国内使用依然有i...</description></item><item><title>TB一周萃选[第6期]</title><link>https://tonybai.com/2018/01/20/6th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sat, 20 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/20/6th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第6期\]”**的归档。 图：第6期封面 &amp;gt; 凡事欲其成功，必须付出代价——奋斗。 &amp;gt; — 美国作家 爱默生 每期挑选“封面图”都是一件颇为“费工夫”的事情，本期的封面图来自于一个投资界大V发送的微博内容，因为当我第一眼看到这幅图片时，感觉它**颇为契合我当时的心境**。 **“未来的一年里，连睡觉都是浪费时间”**这句话的最原始的出处在哪里我...</description></item><item><title>TB一周萃选[第5期]</title><link>https://tonybai.com/2018/01/14/5th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sun, 14 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/14/5th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第5期\]”**的归档。 &amp;gt; 人生十鉴 &amp;gt; &amp;gt; 大喜易失言 &amp;gt; 大怒易失礼 &amp;gt; 大惊易失态 &amp;gt; 大哀易失颜 &amp;gt; 大乐易失察 &amp;gt; 大惧易失节 &amp;gt; 大思易失爱 &amp;gt; 大醉易失德 &amp;gt; 大话易失信 &amp;gt; 大欲易失命 下雪，是北方城市冬天的“常规操作”，是最不需要被单独关注的的事情。但今年冬天的“雪”却成为了这边的热门话题，原因：**自从入冬以来一直就没下一...</description></item><item><title>写Go代码时遇到的那些问题[第1期]</title><link>https://tonybai.com/2018/01/13/the-problems-i-encountered-when-writing-go-code-issue-1st/</link><pubDate>Sat, 13 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/13/the-problems-i-encountered-when-writing-go-code-issue-1st/</guid><description>程序员步入“大龄”，写代码的节奏也会受到影响。以前是长时间持续地写，现在写代码的节奏变成了“波浪形”：即写一段时间，歇一段时间。当然这里的“歇”并不是真的歇，而是做其他事情了，比如：回顾、整理与总结。 平时写Go代码，时不时就遇到一些问题，或是写出一些让自己还算满意的代码，这里全部列为“问题”行列。这些“问题”(以及其解决方法)往往比较“小”、比较“碎片”，不适合以自己“擅长”的“长篇”风格写出来...</description></item><item><title>TB一周萃选[第4期]</title><link>https://tonybai.com/2018/01/06/4th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sat, 06 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/06/4th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第4期\]”**的归档。 &amp;gt; 孩子，我要求你读书用功，不是因为我要你跟别人比成绩，而是因为，我希望你将来会拥有选择的权利，选择有意义、有时间的工作，而不是被迫谋生。当你的工作在你心中有意义，你就有成就感。当你的工作给你时间，不剥夺你的生活，你就有尊严。成就感和尊严，给你快乐。——龙应台 《亲爱的安德烈》 这两天中原大地的一场大雪正式宣告了深冬的...</description></item><item><title>使用istio治理微服务入门</title><link>https://tonybai.com/2018/01/03/an-intro-of-microservices-governance-by-istio/</link><pubDate>Wed, 03 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/03/an-intro-of-microservices-governance-by-istio/</guid><description>近两年微服务架构流行，主流互联网厂商内部都已经微服务化，初创企业虽然技术积淀不行，但也通过各种开源工具拥抱微服务。再加上容器技术赋能，Kubernetes又添了一把火，微服务架构已然成为当前软件架构设计的首选。 **但微服务化易弄，服务治理难搞！** 一、微服务的“痛点” ---------- 微服务化没有统一标准，多数是进行业务领域垂直切分，业务按一定的粒度划分职责，并形成清晰、职责单一的服务接...</description></item><item><title>TB一周萃选[第3期]</title><link>https://tonybai.com/2017/12/30/3rd-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sat, 30 Dec 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/12/30/3rd-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第3期\]”**的归档。 &amp;gt; 《岁旦》 &amp;gt; &amp;gt; &amp;gt; 宋伯仁 宋代诗人 &amp;gt; &amp;gt; 居间无贺客，早起只如常。桃版随人换，梅花隔岁香。 &amp;gt; 　　春风回笑语，云气卜丰穰。柏酒何劳劝，心平寿自长。 本期萃选是2017年的最后一期，也是迎接2018新年“承前启后”的一期。 对于现代中国人来说，公历新年又称为“元旦”。但稍有些历史常识的朋友都会知道：此“元旦”...</description></item><item><title>TB一周萃选[第2期]</title><link>https://tonybai.com/2017/12/22/2nd-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Fri, 22 Dec 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/12/22/2nd-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**TB一周萃选\[第2期\]**的归档。 封面 &amp;gt; “我天性不宜交际。 &amp;gt; &amp;gt; 在多数场合，我不是觉得对方乏味，就是害怕对方觉得我乏味。可是我既不愿忍受对方的乏味，也不愿费劲使自己显得有趣，那都太累了。 &amp;gt; &amp;gt; 我独处时最轻松，因为我不觉得自己乏味，即使乏味，也自己承受，不累及他人，无需感到不安。” ——周国平 本周日晚上就是平安夜了！ 圣诞节，是西方最重要的节日...</description></item><item><title>追求极简：Docker镜像构建演化史</title><link>https://tonybai.com/2017/12/21/the-concise-history-of-docker-image-building/</link><pubDate>Thu, 21 Dec 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/12/21/the-concise-history-of-docker-image-building/</guid><description>本文首发于CSDN《程序员》杂志2017.12期，这里是原文地址。 本文为《程序员》杂志授权转载，谢绝其他转载。全文如下： 自从2013年dotCloud公司(现已改名为Docker Inc)发布Docker容器技术以来，到目前为止已经有四年多的时间了。这期间Docker技术)飞速发展，并催生出一个生机勃勃的、以轻量级容器技术为基础的庞大的容器平台生态圈。作为Docker三大核心技术之一的镜像技术...</description></item><item><title>在Kubernetes集群上部署高可用Harbor镜像仓库</title><link>https://tonybai.com/2017/12/08/deploy-high-availability-harbor-on-kubernetes-cluster/</link><pubDate>Fri, 08 Dec 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/12/08/deploy-high-availability-harbor-on-kubernetes-cluster/</guid><description>关于基于Harbor的高可用私有镜像仓库，在我的博客里曾不止一次提到，在源创会2017沈阳站上，我还专门以此题目和大家做了分享。事后，很多人通过微博私信、个人公众号或博客评论问我是否可以在Kubernetes集群上安装高可用的Harbor仓库，今天我就用这篇文章来回答大家这个问题。 一、Kubernetes上的高可用Harbor方案 ------------------------- 首先，我可以...</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>理解Docker的多阶段镜像构建</title><link>https://tonybai.com/2017/11/11/multi-stage-image-build-in-docker/</link><pubDate>Sat, 11 Nov 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/11/11/multi-stage-image-build-in-docker/</guid><description>Docker技术从2013年诞生到目前已经4年有余了。对于已经接纳和使用Docker技术)在日常开发工作中的开发者而言，构建Docker镜像已经是家常便饭。但这是否意味着Docker的image构建机制已经相对完美了呢？不是的，Docker官方依旧在持续优化镜像构建机制。这不，从今年发布的Docker 17.05版本起，Docker开始支持容器镜像的多阶段构建(multi-stage build)...</description></item><item><title>Hello，Termux</title><link>https://tonybai.com/2017/11/09/hello-termux/</link><pubDate>Thu, 09 Nov 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/11/09/hello-termux/</guid><description>**_程序员或多或少都有一颗Geek(极客)的心^0^。- Tony Bai_** 折腾开始。 这一切都源于前不久将手机换成了Xiaomi的MIX2。因为青睐开放的系统（相对于水果公司系统的封闭，当然Mac笔记本除外^0^），我长期使用Android平台)的手机。但之前被三星Note3手机的“大屏”搞的不是很舒服，这两年一直用5寸及以下的手机，因为单手操作体验良好。MIX2的所谓“全面屏”概念又让...</description></item><item><title>源创会开源访谈：十年成长，Go语言的演化之路</title><link>https://tonybai.com/2017/10/24/go-evolution-for-ten-years-an-interview-by-osc/</link><pubDate>Tue, 24 Oct 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/10/24/go-evolution-for-ten-years-an-interview-by-osc/</guid><description>在参加源创会沈阳站分享之前，接受了开源中国社区编辑王练的文字专访，以下是我针对专访稿的内容。 同时该专访稿首发于开源中国开源访谈栏目，大家可以点击这里看到首发原稿。 1、首先请介绍一下自己 大家好！我叫白明（Tony Bai），目前是东软云科技的一名架构师，专职于服务端开发，日常工作主要使用Go语言。我算是国内较早接触Go语言的程序员兼Advocater了，平时在我的博客、微博和微信公众号”iam...</description></item><item><title>源创会2017沈阳站讲稿：基于Harbor的高可用企业级私有容器镜像仓库部署实践</title><link>https://tonybai.com/2017/10/23/the-speech-script-practice-on-deploying-a-ha-harbor-cluster-for-osc-shenyang-2017/</link><pubDate>Mon, 23 Oct 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/10/23/the-speech-script-practice-on-deploying-a-ha-harbor-cluster-for-osc-shenyang-2017/</guid><description>上周六开源中国的源创会在沈阳举办了一次技术活动，很荣幸以本地讲师的身份和大家交流了一个topic: “基于Harbor的高可用企业级私有容器镜像仓库部署实践”。之所以选择这个topic，是因为这是我们团队的项目实践心得。很多企业和组织在深入使用Docker之后，都会有类似的高可用私有容器仓库搭建的需求，于是我就把我们摸索的实践和填坑过程拿出来，用30分钟与大家分享一下。另外这算是一个入门级的分享，...</description></item><item><title>Go语言：成长的十年</title><link>https://tonybai.com/2017/09/24/go-ten-years-and-climbing/</link><pubDate>Sun, 24 Sep 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/09/24/go-ten-years-and-climbing/</guid><description>Go语言之父，Google大神Rob Pike代表Go语言的另外两位缔造者Robert Griesemer和Ken Thompson在自己的博客上发表了一篇名为《Go: Ten years and climbing》的文章，用以纪念Go语言从最初的设计idea起到目前的十年发展。笔者读完后，也是深有感触，因此在这里粗略翻译一下全文，希望能有更多的程序员加入到Gopher行列中来。 译文全文如下： ...</description></item><item><title>Go 1.9中值得关注的几个变化</title><link>https://tonybai.com/2017/07/14/some-changes-in-go-1-9/</link><pubDate>Fri, 14 Jul 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/07/14/some-changes-in-go-1-9/</guid><description>Go语言在2016年当选tiobe index的年度编程语言。 转眼间6个月过去了，Go在tiobe index排行榜上继续强势攀升，在最新公布的TIBOE INDEX 7月份的排行榜上，Go挺进Top10： 还有不到一个月，Go 1.9版本也要正式Release了（计划8月份发布），当前Go 1.9的最新版本是go1.9beta2，本篇的实验环境也是基于该版本的，估计与final go 1.9版...</description></item><item><title>搭建你自己的Go Runtime metrics环境</title><link>https://tonybai.com/2017/07/04/setup-go-runtime-metrics-for-yourself/</link><pubDate>Tue, 04 Jul 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/07/04/setup-go-runtime-metrics-for-yourself/</guid><description>自从Go 1.5开始，每次Go release, Gopher Brian Hatfield都会将自己对新版Go的runtime的性能数据（与之前Go版本的比较）在twitter上晒出来。就连Go team staff在世界各地做speaking时也在slide中引用Brian的图片。后来，Brian Hatfield将其用于度量runtime性能数据的代码打包成library并放在github上...</description></item><item><title>使用govanityurls让私有代码仓库中的go包支持go get</title><link>https://tonybai.com/2017/06/30/go-get-go-packages-in-private-code-repo-by-govanityurls/</link><pubDate>Fri, 30 Jun 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/06/30/go-get-go-packages-in-private-code-repo-by-govanityurls/</guid><description>《定制Go Package的Go Get导入路径》一文中我们讲到了通过使用govanityurls服务，我们可以定制go package的go get导入路径。不过，govanityurls的用途还不止这些，它还可以让你的私有代码仓库中的go package支持go get。 众所周知，开源的Go package一般分布在github、bitbucket等站点，但商业组织内部闭源的Go packa...</description></item><item><title>定制Go Package的Go Get导入路径</title><link>https://tonybai.com/2017/06/28/set-custom-go-get-import-path-for-go-package/</link><pubDate>Wed, 28 Jun 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/06/28/set-custom-go-get-import-path-for-go-package/</guid><description>近期Go team的组员Jaana B. Dogan，网名：rakyll开源了一个小工具：Go Vanity URLs。这个小工具可以帮助你快速为你的Go package定制Go get的导入路径（同样也是package被使用时的import路径）。 说到go package的go get导入路径，我们最常见和常使用的domain name就是github.com了，比如：beego包的go ge...</description></item><item><title>也谈Go的可移植性</title><link>https://tonybai.com/2017/06/27/an-intro-about-go-portability/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/06/27/an-intro-about-go-portability/</guid><description>Go有很多优点，比如：简单、原生支持并发等，而不错的可移植性也是Go被广大程序员接纳的重要因素之一。但你知道为什么Go语言拥有很好的平台可移植性吗？本着“知其然，亦要知其所以然”的精神，本文我们就来探究一下Go良好可移植性背后的原理。 一、Go的可移植性 --------- 说到一门编程语言可移植性，我们一般从下面两个方面考量： * 语言自身被移植到不同平台的容易程度； * 通过这种语言编译出来的...</description></item><item><title>也谈goroutine调度器</title><link>https://tonybai.com/2017/06/23/an-intro-about-goroutine-scheduler/</link><pubDate>Fri, 23 Jun 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/06/23/an-intro-about-goroutine-scheduler/</guid><description>Go语言在2016年再次拿下TIBOE年度编程语言称号，这充分证明了Go语言这几年在全世界范围内的受欢迎程度。如果要对世界范围内的gopher发起一次“你究竟喜欢Go的哪一点”的调查，我相信很多Gopher会提到：**goroutine**。 Goroutine是Go语言原生支持并发的具体实现，你的Go代码都无一例外地跑在goroutine中。你可以启动许多甚至成千上万的goroutine，Go的...</description></item><item><title>基于Harbor和CephFS搭建高可用Private Registry</title><link>https://tonybai.com/2017/06/09/setup-a-high-availability-private-registry-based-on-harbor-and-cephfs/</link><pubDate>Fri, 09 Jun 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/06/09/setup-a-high-availability-private-registry-based-on-harbor-and-cephfs/</guid><description>我们有给客户搭建私有容器仓库的需求。开源的私有容器registry可供选择的不多，除了docker官方的distribution之外，比较知名的是VMware China出品的Harbor，我们选择了harbor。 harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。harbor以docker-compose的规范形式组织各...</description></item><item><title>初窥dep</title><link>https://tonybai.com/2017/06/08/first-glimpse-of-dep/</link><pubDate>Thu, 08 Jun 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/06/08/first-glimpse-of-dep/</guid><description>Go语言程序组织和构建的基本单元是Package，但Go语言官方却没有提供一款“像样的”Package Management Tool(包管理工具)。随着Go语言在全球范围内应用的愈加广泛，缺少官方包管理工具这一问题变得日益突出。 2016年GopherCon大会后，在Go官方的组织下，一个旨在改善Go包管理的commitee成立了，共同应对Go在package management上遇到的各种问...</description></item><item><title>专访稿：兴趣才是第一生产力</title><link>https://tonybai.com/2017/05/18/an-interview-from-operation-partner-in-2017/</link><pubDate>Thu, 18 May 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/05/18/an-interview-from-operation-partner-in-2017/</guid><description>本文是公司“运营拍档”公众号的专访文稿，这里转载一下^0^。原文链接在这里&amp;amp;version=11020201&amp;amp;pass_ticket=ia4cVivHQScpxBfw10RPkT%2BWZVT1yfyMiTZHrOO15OBtpNZhx0V6DxxEFUySX3io)。 十年生死两茫茫，白天忙，晚上忙，写程序，到天亮。千行代码，Bug何处藏。纵使上线又怎样，朝令改，夕断肠…… * * * **白 ...</description></item><item><title>Go coding in go way</title><link>https://tonybai.com/2017/04/20/go-coding-in-go-way/</link><pubDate>Thu, 20 Apr 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/04/20/go-coding-in-go-way/</guid><description>本篇文章是我在2017年第三届GopherChina大会上所作talk：”Go coding in go way)“的改编和展开版，全文如下。 一、序 --- 今天我要分享的题目是**“Go coding in go way”**，中文含义就是用**“Go语言编程思维去写Go代码”**。看到这个题目大家不禁要问：究竟什么是Go语言编程思维呢？关于什么是Go语言变成思维其实并没有官方说法。这里要和大...</description></item><item><title>GopherChina2017以讲师身份参会感悟</title><link>https://tonybai.com/2017/04/18/my-experience-of-gopherchina-2017-as-a-speaker/</link><pubDate>Tue, 18 Apr 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/04/18/my-experience-of-gopherchina-2017-as-a-speaker/</guid><description>时光荏苒。2016年北京GopherChina大会的情形还历历在目，2017年上海GopherChina大会又如约而至。 一、印象 这是我连续第二年参加AstaXie组织举办的GopherChina大会。而且不同于去年的是，这次我是以讲师身份参与的。虽然大会地点不同，我的角色不同，但不变的是和广大Gophers一样的对Go语言的极大热情。 这也是第三届GopherChina大会。随着Go语言自身的...</description></item><item><title>GopherChina讲师专访</title><link>https://tonybai.com/2017/04/06/an-interview-with-me-as-a-lecturer-of-gopherchina-2017/</link><pubDate>Thu, 06 Apr 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/04/06/an-interview-with-me-as-a-lecturer-of-gopherchina-2017/</guid><description>今年有幸收到GopherChina大会的组织者、beego开源项目的owner、《Go Web编程》的作者谢孟军童鞋的邀请，以讲师身份参加今年的GopherChina大会。下面是GopherChina对我这个讲师的专访稿^0^。该专访稿将同时被发布在公众号“Go中国(微信号：golangchina)”上面，可点击这里&amp;amp;version=11020201&amp;amp;pass_ticket=ubemadJo5Ju...</description></item><item><title>Go 1.8中值得关注的几个变化</title><link>https://tonybai.com/2017/02/03/some-changes-in-go-1-8/</link><pubDate>Fri, 03 Feb 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/02/03/some-changes-in-go-1-8/</guid><description>在已经过去的2016年，Go语言继在2009年之后再次成为编程语言界的明星- 问鼎TIOBE 2016年度语言。这与Go team、Go community和全世界的Gophers的努力是分不开的。按计划在这个2月份，Go team将正式发布Go 1.8版本(截至目前，Go的最新版本是Go 1.8rc3)。在这里我们一起来看一下在Go 1.8版本中都有哪些值得Gopher们关注的变化。 一、语言（...</description></item><item><title>理解Kubernetes网络之Flannel网络</title><link>https://tonybai.com/2017/01/17/understanding-flannel-network-for-kubernetes/</link><pubDate>Tue, 17 Jan 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/01/17/understanding-flannel-network-for-kubernetes/</guid><description>第一次采用kube-up.sh脚本方式安装的Kubernetes cluster目前运行良好，master node上的组件状态也始终是“没毛病”： kubectl get cs NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {&amp;#34;health&amp;#34;: &amp;#34;true&amp;#34;}...</description></item><item><title>理解Docker容器网络之Linux Network Namespace</title><link>https://tonybai.com/2017/01/11/understanding-linux-network-namespace-for-docker-network/</link><pubDate>Wed, 11 Jan 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/01/11/understanding-linux-network-namespace-for-docker-network/</guid><description>由于2016年年中调换工作的原因，对容器网络的研究中断过一段时间。随着当前项目对Kubernetes应用的深入，我感觉之前对于容器网络的粗浅理解已经不够了，容器网络成了摆在前面的“一道坎”。继续深入理解K8s网络、容器网络已经势在必行。而这篇文章就算是一个重新开始，也是对之前浅表理解的一个补充。 我还是先从Docker容器网络入手，虽然Docker与Kubernetes采用了不同的网络模型：K8s...</description></item><item><title>2016小结</title><link>https://tonybai.com/2017/01/03/2016-summary/</link><pubDate>Tue, 03 Jan 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/01/03/2016-summary/</guid><description>每到年终岁尾，历史上受到过中国文化影响的国家和地区都有评选当年年度汉字的传统，比如：2016年马来西亚年度汉字为“贪”，鬼子国日本年度汉字为“金”，中国台湾地区年度汉字为“苦”，而大陆地区的年度汉字据说是“规”。其实每个人心中都有一个自己的年度汉字，2016年，我个人的年度汉字为“变”。 一、离职 其实，这两年我求变的步伐一直没有停歇，只是今年迈出了实质性的一步。2016年4月末，就是在参加完Go...</description></item><item><title>使用Visual Studio Code辅助Go源码编写</title><link>https://tonybai.com/2016/12/23/write-go-code-in-vscode/</link><pubDate>Fri, 23 Dec 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/12/23/write-go-code-in-vscode/</guid><description>作为VIMer，日常编码中，Vim编辑器依然是我的首选。以前以C语言为主要语言的时候是这样，现在以Go为主要语言时亦是这样。不过近期发现Mac上使用Vim在编写Go代码时，Vim时不时的“抽风”：出现一些“屏幕字符被篡改”的问题，比如下面这幅图中”func”变成了”fknc”: 虽然一段时间后，显示会自动更正过来，但这种“篡改”是会让你产生“幻觉”的。你会想：是不是我真的将”func”写成”fkn...</description></item><item><title>论golang Timer Reset方法使用的正确姿势</title><link>https://tonybai.com/2016/12/21/how-to-use-timer-reset-in-golang-correctly/</link><pubDate>Wed, 21 Dec 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/12/21/how-to-use-timer-reset-in-golang-correctly/</guid><description>2016年，Go语言在Tiobe编程语言排行榜上位次的大幅蹿升(2016年12月份Tiobe榜单：go位列第16位，Rating值：1.939%)。与此同时，我们也能切身感受到Go语言在世界范围蓬勃发展，其在中国地界儿上的发展更是尤为猛烈^0^：For gopher们的job变多了、网上关于Go的资料也大有“汗牛充栋”之势。作为职业Gopher^0^，要为这个生态添砖加瓦，就要多思考、多总结，关键...</description></item><item><title>给女儿搭建一个博客站点</title><link>https://tonybai.com/2016/12/18/build-a-blog-website-for-my-daughter/</link><pubDate>Sun, 18 Dec 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/12/18/build-a-blog-website-for-my-daughter/</guid><description>时光荏苒。转眼间女儿已经成为一名小学生了，依稀还记得当年果果呱呱坠地的情景，独自回味，感慨万千。 果果3岁前，都是我来记录她的生活点滴和成长历程，那个时候她是我们生活舞台的主角。3岁后，果果学会了说话，上了幼儿园，开始学习各种知识、技能以及各种才艺。尤其是在幼儿园中班之后，她学会了写字、组词、造句和写日记，果果完全可以自己用文字来表达自己了! 我觉得是时候让她自己来记录她的成长历程了，我和她妈妈只...</description></item><item><title>使用wukong全文搜索引擎</title><link>https://tonybai.com/2016/12/06/an-intro-to-wukong-fulltext-search-engine/</link><pubDate>Tue, 06 Dec 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/12/06/an-intro-to-wukong-fulltext-search-engine/</guid><description>近期项目中有一个全文索引和全文搜索的业务需求，组内同事在这方面都没啥经验，找一个满足我们需求的开源的全文搜索引擎势在必行。我们这一期对全文搜索引擎的需求并不复杂，最主要的是引擎可以很好的支持中文分词、索引和搜索，并能快速实现功能。在全文搜索领域，基于Apache lucene的ElasticSearch舍我其谁，其强大的分布式系统能力、对超大规模数据的支持、友好的Restful API以及近实时的...</description></item><item><title>Kubernetes集群的安全配置</title><link>https://tonybai.com/2016/11/25/the-security-settings-for-kubernetes-cluster/</link><pubDate>Fri, 25 Nov 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/11/25/the-security-settings-for-kubernetes-cluster/</guid><description>使用kubernetes/cluster/kube-up.sh脚本在装有Ubuntu操作系统的bare metal上搭建的Kubernetes集群并不安全，甚至可以说是“完全不设防的”，这是因为Kubernetes集群的核心组件：kube-apiserver启用了insecure-port。insecure-port背后的api server默认完全信任访问该端口的流量，内部无任何安全机制。并且监...</description></item><item><title>Kuberize Ceph RBD API服务</title><link>https://tonybai.com/2016/11/21/kuberize-ceph-rbd-api-service/</link><pubDate>Mon, 21 Nov 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/11/21/kuberize-ceph-rbd-api-service/</guid><description>在《使用Ceph RBD为Kubernetes集群提供存储卷》一文中，我们提到：借助Kubernetes和Ceph的集成，Kubernetes可以使用Ceph RBD为集群内的Pod提供Persistent Volume。但这一过程中，RBD所使用的image的创建、删除还需要手动管理，于是我们又基于go-ceph实现了对RBD image的程序化管理，我们的最终目标是要这种对RBD image的...</description></item><item><title>Kubernetes从Private Registry中拉取容器镜像的方法</title><link>https://tonybai.com/2016/11/16/how-to-pull-images-from-private-registry-on-kubernetes-cluster/</link><pubDate>Wed, 16 Nov 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/11/16/how-to-pull-images-from-private-registry-on-kubernetes-cluster/</guid><description>话接上文，在《使用go-ceph管理Ceph RBD映像》一文中我们提到了，我们需要自建一个ceph rbd api service用于给我的产品控制台提供RESTful API服务接口。这个服务我也是打算放在kubernetes集群中作为一个Service运行的。这两天完成了这个服务开发，并编写完Service的Dockerfile，将镜像build, tag并push到了我们在阿里云的私有镜像...</description></item><item><title>使用go-ceph管理Ceph RBD映像</title><link>https://tonybai.com/2016/11/09/operate-ceph-rbd-images-with-go-ceph/</link><pubDate>Wed, 09 Nov 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/11/09/operate-ceph-rbd-images-with-go-ceph/</guid><description>在《使用Ceph RBD为Kubernetes集群提供存储卷》一文中，我们了解到，在Kubernetes和ceph的集成过程中，有一个步骤是需要手动操作的，那就是创建ceph osd pool下面的rbd image。我们需要想办法去除这一手动步骤。关于方案，我们首先想到的就是是否可以调用Ceph提供的REST API来管理rbd的pool和image？ Ceph提供了两套REST API方案：c...</description></item><item><title>一篇文章带你了解Kubernetes安装</title><link>https://tonybai.com/2016/10/18/learn-how-to-install-kubernetes-on-ubuntu/</link><pubDate>Tue, 18 Oct 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/10/18/learn-how-to-install-kubernetes-on-ubuntu/</guid><description>由于之前在阿里云上部署的Docker 1.12.2的Swarm集群没能正常展示出其所宣称的Routing mesh和VIP等功能，为了满足项目需要，我们只能转向另外一种容器集群管理和服务编排工具Kubernetes。 &amp;gt; _注：之前Docker1.12集群的Routing mesh和VIP功能失效的问题，经过在github上与Docker开发人员的沟通，目前已经将问题原因缩小在阿里云的网络上面，目...</description></item><item><title>Go包导入与Java的差别</title><link>https://tonybai.com/2016/09/13/package-import-in-golang-vs-in-java/</link><pubDate>Tue, 13 Sep 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/09/13/package-import-in-golang-vs-in-java/</guid><description>闲暇时翻阅了近期下载到的电子书《Go in Practice》 ，看到1.2.4 Package Management一节中的代码Demo，感觉作者对Go package导入的说法似乎不够精确：“Packages are imported by their name”(后续的说明将解释不精确的原因)。联想到前几天遇到的一个Java包导入的问题，让我隐约地感觉Java程序员很容易将两种语言的Pack...</description></item><item><title>vim-go更新小记</title><link>https://tonybai.com/2016/09/08/upgrade-vim-go/</link><pubDate>Thu, 08 Sep 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/09/08/upgrade-vim-go/</guid><description>自从上一次配置好Mac上的Golang Vim开发环境，基本上就没怎么动过。近两年过去了，Go已经升级到了1.7版本，Vim-go截至目前也已经演化到了1.8版本了。社区的积极关注和使用，让Vim-go的作者Fatih Arslan备受鼓舞，于是近一年来，积极为vim-go添加新功能，发布新版本，并编写了vim-go的详细tutorial。这让我动了更新Vim-go版本的念头，于是就有了本篇内容。...</description></item><item><title>Go 1.7中值得关注的几个变化</title><link>https://tonybai.com/2016/06/21/some-changes-in-go-1-7/</link><pubDate>Tue, 21 Jun 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/06/21/some-changes-in-go-1-7/</guid><description>零、从Release Cycle说起 从Go 1.3版本开始，Golang核心开发Team的版本开发周期逐渐稳定下来。经过Go 1.4、Go1.5和Go 1.6的实践，大神Russ Cox在Go wiki上大致定义了Go Release Cycle的一般流程： 1. 半年一个major release版本。 2. 发布流程启动时间：每年8月1日和次年2月1日（真正发布日期有可能是这个日子，也可能延...</description></item><item><title>理解Unikernels</title><link>https://tonybai.com/2016/05/16/understanding-unikernels/</link><pubDate>Mon, 16 May 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/05/16/understanding-unikernels/</guid><description>当Docker, Inc在今年年初宣布收购Unikernel Systems公司时，Unikernel对大多数技术人员来说还是很陌生的。直到今天，知名问答类网站知乎上也没有以Unikernel为名字的子话题。国内搜索引擎中关于Unikernel的内容很少，实践相关的内容就更少了。Docker收购Unikernel Systems，显然不是为了将这个其未来潜在的竞争对手干掉，而是嗅到了Unikern...</description></item><item><title>GopherChina2016后记</title><link>https://tonybai.com/2016/04/18/my-experience-of-gopherchina2016/</link><pubDate>Mon, 18 Apr 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/04/18/my-experience-of-gopherchina2016/</guid><description>4月17日晚22:51，伴随着D7次动车缓缓驶入沈阳北站，拖着疲惫的身体和些许兴奋的我，结束了两天的GopherChina 2016之旅。 一、GopherChina大会 GopherChina大会是中国大陆地区Golang语言推广第一品牌。2015年在上海成功了举办了第一届大会；2016年，大会发起人astaxie为充分照顾帝都（及周边）Gophers们的情绪^\_^，将GopherChina ...</description></item><item><title>部署私有Docker Registry</title><link>https://tonybai.com/2016/02/26/deploy-a-private-docker-registry/</link><pubDate>Fri, 26 Feb 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/02/26/deploy-a-private-docker-registry/</guid><description>安装部署一个私有的Docker Registry是引入、学习和使用Docker这门技术的必经之路之一。尤其是当Docker被所在组织接受，更多人、项目和产品开始接触和使用Docker时，存储和分发自制的Docker image便成了刚需。Docker Registry一如既往的继承了“Docker坑多”的特点，为此这里将自己搭建”各类”Registry过程中执行的步骤、遇到的问题记录下来，为己备忘...</description></item><item><title>Go 1.6中值得关注的几个变化</title><link>https://tonybai.com/2016/02/21/some-changes-in-go-1-6/</link><pubDate>Sun, 21 Feb 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/02/21/some-changes-in-go-1-6/</guid><description>北京时间2016年2月18日凌晨，在Go 1.5发布 半年后，Go 1.6正式Release 了。与Go 1.5的“惊天巨变”（主要指Go自举）相比，Go 1.6的Change 算是很小的了，当然这也与Go 1.6的dev cycle过于短暂有关。但Go社区对此次发布却甚是重视，其热烈程度甚至超出了Go 1.5。在Dave Cheney的倡导 下，Gophers们在全球各地举行了Go 1.6 Re...</description></item><item><title>理解Docker跨多主机容器网络</title><link>https://tonybai.com/2016/02/15/understanding-docker-multi-host-networking/</link><pubDate>Mon, 15 Feb 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/02/15/understanding-docker-multi-host-networking/</guid><description>在Docker 1.9 出世前，跨多主机的容器通信方案大致有如下三种： 1、端口映射 将宿主机A的端口P映射到容器C的网络空间监听的端口P’上，仅提供四层及以上应用和服务使用。这样其他主机上的容器通过访问宿主机A的端口P实 现与容器C的通信。显然这个方案的应用场景很有局限。 2、将物理网卡桥接到虚拟网桥，使得容器与宿主机配置在同一网段下 在各个宿主机上都建立一个新虚拟网桥设备br0，将各自物理网卡...</description></item><item><title>理解Docker容器端口映射</title><link>https://tonybai.com/2016/01/18/understanding-binding-docker-container-ports-to-host/</link><pubDate>Mon, 18 Jan 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/01/18/understanding-binding-docker-container-ports-to-host/</guid><description>在”理解Docker单机容器网络“一文中，还有一个Docker容器网络的功能尚未提及，那就是Docker容器的端口映射。即将容器的服务端口P’ 绑定到宿主机的端口P上，最终达到一种效果：外部程序通过宿主机的P端口访问，就像直接访问Docker容器网络内部容器提供的服务一样。 Docker针对端口映射前后有两种方案，一种是1.7版本之前docker-proxy+iptables DNAT的方式；另一...</description></item><item><title>理解Docker单机容器网络</title><link>https://tonybai.com/2016/01/15/understanding-container-networking-on-single-host/</link><pubDate>Fri, 15 Jan 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/01/15/understanding-container-networking-on-single-host/</guid><description>Docker容器是近两年最 火的IT技术之一，用“火山爆发式“来形容Docker的成 长也不为过。Docker在产品服务的devops 运维、云 计算(CaaS)、大数据以及企业内部应用等领域正在被越来越多的接受和广泛应用。Docker技术的本质在于提升计算密度和提升部署效率，高屋 建瓴的讲，它的出现符合人类社会对绿色发展的追求，降低资源消耗，提升资源的单位利用率。不过经历了两年多的发展，Dock...</description></item><item><title>Go语言随机测试工具go-fuzz</title><link>https://tonybai.com/2015/12/08/go-fuzz-intro/</link><pubDate>Tue, 08 Dec 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/12/08/go-fuzz-intro/</guid><description>在Go 1.5发布时，前Intel Black Belt级工程师，现Google工程师Dmitry Vyukov同时发布了Go语言随机测试工具go-fuzz。在 GopherCon2015大会上，Dmitry Vyukov在其名为“\[Go Dynamic Tools\]”的presentation中着重介绍了go-fuzz。 go-fuzz是一款随机测试(Random testing)工具。对于...</description></item><item><title>Go语言TCP Socket编程</title><link>https://tonybai.com/2015/11/17/tcp-programming-in-golang/</link><pubDate>Tue, 17 Nov 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/11/17/tcp-programming-in-golang/</guid><description>Golang的主要 设计目标之一就是面向大规模后端服务程序，网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中，我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”，而TCP socket则是网络编程的主流，即便您没有直接使用到net中有关TCP Socket方面的接口，但net/http总是用到了吧，http底层依旧是用tcp socket实现...</description></item><item><title>Go语言错误处理</title><link>https://tonybai.com/2015/10/30/error-handling-in-go/</link><pubDate>Fri, 30 Oct 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/10/30/error-handling-in-go/</guid><description>近期闲暇用Go写一个lib，其中涉及到error处理的地方让我琢磨了许久。关于Go错误处理的资料和视频已有许多，Go authors们也在官方Articles和Blog上多次提到过一些Go error handling方面的一些tips和best practice，这里仅仅算是做个收集和小结，尽视野所及，如有不足，欢迎评论中补充。（10月因各种原因，没有耕博，月末来一发，希望未为晚矣 ^\_^） ...</description></item><item><title>使用Hugo搭建静态站点</title><link>https://tonybai.com/2015/09/23/intro-of-gohugo/</link><pubDate>Wed, 23 Sep 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/09/23/intro-of-gohugo/</guid><description>虽然前一篇Blog宣称自己要用Markdown开始写Post，但实际操作起来还是发现了诸多不兼容问题(插件与主题间、插件与插件间的)，让编写和修改文章变得十分繁琐，于是我研究了一下静态Web站点生成工具Hugo。Hugo是由前Docker的重量级员工(2015年8月末从Docker离职)：Steve Francia实现的一个开源静态站点生成工具框架，类似于Jekyll、Octopress或Hexo...</description></item><item><title>开始使用Markdown写Blog</title><link>https://tonybai.com/2015/09/19/write-blog-in-markdown/</link><pubDate>Sat, 19 Sep 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/09/19/write-blog-in-markdown/</guid><description>近期发了一些带有大量代码的Go技术文章，结果文章中的代码样式被大家鄙视了，比如评论中的“不忍直视”、“这代码看得让人难受”等。于是我决定花些时间尝试做些改变。 博客系统 目前使用的这个博客系统是放在DigitalOcean VPS的Wordpress 3.2.1。在迁移到VPS之前，我的博客是一直托管在同事的一个托管主机上的，当初从blogbus迁移到他的托管WordPress主机时使用的就是Wo...</description></item><item><title>关于Go，你可能不注意的7件事</title><link>https://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/</link><pubDate>Thu, 17 Sep 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/</guid><description>Go以简洁著称，但简洁中不乏值得玩味的小细节。这些小细节不如goroutine、interface和channel那样&amp;#34;高大上&amp;#34;，&amp;#34;屌 丝&amp;#34;得可能不经常被人注意到，但它们却对理解Go语言有着重要的作用。这里想挑出一些和大家一起通过详实的例子来逐一展开和理解。本文内容较为基础，适合初学者，高手可飘过:) **一、源文件字符集****和字符集编码** Go源码文件默认采用Unicode字符集，Unic...</description></item><item><title>理解Golang语句中的求值顺序</title><link>https://tonybai.com/2015/08/27/understanding-go-statements-evaluating-order/</link><pubDate>Thu, 27 Aug 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/08/27/understanding-go-statements-evaluating-order/</guid><description>Golang在变量声明、初始化以及赋值语句上照比C语言有了许多改进： **a) 支持在同一行声明多个变量** var a, b, c int **b) 支持在同一行初始化多个变量（不同类型也可以）** var a, b, c = 5, &amp;#34;hello&amp;#34;, 3.45 a, b, c := 5, &amp;#34;hello&amp;#34;, 3.45 (short variable declaration) **c) 支持在同一行...</description></item><item><title>Go程序调试、分析与优化</title><link>https://tonybai.com/2015/08/25/go-debugging-profiling-optimization/</link><pubDate>Tue, 25 Aug 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/08/25/go-debugging-profiling-optimization/</guid><description>Brad Fitzpatrick在YAPC Asia 2015（Yet Another Perl Conference）上做了一次技术分享，题为：&amp;#34;Go Debugging, Profiling, and Optimization&amp;#34;。个人感觉这篇分享中价值最大的是BradFitz现场演示的一个有关如何对Go程序进行调试、分析和优化的 Demo，Brad将demo上传到了他个人在github.com...</description></item><item><title>Golang技术幻灯片的查看方法</title><link>https://tonybai.com/2015/08/22/how-to-view-golang-tech-slide/</link><pubDate>Sat, 22 Aug 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/08/22/how-to-view-golang-tech-slide/</guid><description>随着go 1.5的发布，golang在世界各地日益受到欢迎，golang技术鼓吹者在世界各地举办各种级别的技术会议(从GopherCon大会到小小的meetup)，并在会议上分享自己的技术心得和技术想法。 Golang相关的技术幻灯片有多种格式，以.ppt, .pdf和.slide为主。ppt、pdf自然不必多说，需要直接下载查看。 .slide是随着golang诞生而出现的一种present格式...</description></item><item><title>weed-fs使用简介</title><link>https://tonybai.com/2015/08/22/intro-of-using-weedfs/</link><pubDate>Sat, 22 Aug 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/08/22/intro-of-using-weedfs/</guid><description>weed-fs，全名Seaweed-fs，是一种用golang实现的简单且高可用的分布式文件系统。该系统的目标有二： \- 存储billions of files \- serve the files fast weed-fs起初是为了搞一个基于Fackbook的Haystack论文的实现，Haystack旨在优化Fackbook内部图片存储和获取。后在这个基 础上，weed-fs作者又增加了若干...</description></item><item><title>godep支持Go 1.5 vendor</title><link>https://tonybai.com/2015/08/05/godep-support-go15-vendor/</link><pubDate>Wed, 05 Aug 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/08/05/godep-support-go15-vendor/</guid><description>Go 1.5 vendor/实验特性出炉后，市面上的go第三方包依赖和管理工具显然都无法与之兼容，除了修改代码，别无它法。市场占有率最大的godep做出了表 率，目前其最新版本(go get github.com/tools/godep)已经初步支持了这一实验特性，即在GO15VENDOREXPERIMENT=1时，将使用vendor 目录（而不是Godeps目录）存放copy的第三方包，并在go...</description></item><item><title>理解Go 1.5 vendor</title><link>https://tonybai.com/2015/07/31/understand-go15-vendor/</link><pubDate>Fri, 31 Jul 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/07/31/understand-go15-vendor/</guid><description>Go 1.5中(目前最新版本go1.5beta3)加入了一个experimental feature: **vendor/**。这个feature不是Go 1.5的正式功能，但却是Go Authors们在解决Go被外界诟病的包依赖管理的道路上的一次重要尝试。目前关于Go vendor机制的资料有限，主要的包括如下几个： 1、Russ Cox在Golang-dev group上的一个名 为&amp;#34;prop...</description></item><item><title>制作go-talks.appspot.com应用镜像</title><link>https://tonybai.com/2015/07/27/make-a-mirror-of-gotalks-appsport-app/</link><pubDate>Mon, 27 Jul 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/07/27/make-a-mirror-of-gotalks-appsport-app/</guid><description>Go语言号称面向工程：对工程目录组织、代码风格（gofmt）、文档（生成）都制定的相应的“**标准**”，并提供了相应的工具帮助开发者满足这些工程specs。 gofmt用于格式化代码，形成统一代码风格。 godoc.org用于查看标准库或repo的doc。 go-talks.appspot.com则是用来查看go slide。 像godoc和go-talks这种以服务形式提供文档查看的形式不得不...</description></item><item><title>使用core-vagrant方式安装CoreOS</title><link>https://tonybai.com/2015/07/20/install-coreos-by-coreos-vagrant/</link><pubDate>Mon, 20 Jul 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/07/20/install-coreos-by-coreos-vagrant/</guid><description>CoreOS是一种专门为运行类docker容器而生的linux发行版。与其他通用linux发行版（ubuntu、debian、redhat)相 比，它具有体型最小，消耗最小，支持滚动更新等特点。除此之外CoreOS内置的分布式系统服务组件也给开发者和运维者组建分布式集群、部署分布式服务应 用带来了极大便利。 CoreOS与知名容器Docker脚前脚后诞生，到目前为止已经较为成熟，国外主流云平台提供...</description></item><item><title>Go 1.5中值得关注的几个变化</title><link>https://tonybai.com/2015/07/10/some-changes-in-go-1-5/</link><pubDate>Fri, 10 Jul 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/07/10/some-changes-in-go-1-5/</guid><description>在GopherCon2015开幕之 际，Google Go Team终于放出了Go 1.5Beta1版本的安装包。在go 1.5Beta1的发布说明中，Go Team也诚恳地承认Go 1.5将打破之前6个月一个版本的发布周期，这是因为Go 1.5变动太大，需要更多时间来准备这次发布（fix bug, Write doc）。关于Go 1.5的变化，之前Go Team staff在各种golang技术...</description></item><item><title>使用consul实现分布式服务注册和发现</title><link>https://tonybai.com/2015/07/06/implement-distributed-services-registery-and-discovery-by-consul/</link><pubDate>Mon, 06 Jul 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/07/06/implement-distributed-services-registery-and-discovery-by-consul/</guid><description>Consul是HashiCorp公司推出的开源工具，用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案，比如 Airbnb的SmartStack等相比，Consul的方案更“一站式”，内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案，不再需要依赖其他工具（比如ZooKeeper等）。使用起来也较 为简单。Consul用Golang实...</description></item><item><title>Golang程序配置方案小结</title><link>https://tonybai.com/2015/07/01/config-solutions-for-golang-app/</link><pubDate>Wed, 01 Jul 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/07/01/config-solutions-for-golang-app/</guid><description>在Twitter上看到一篇关于Golang程序配置方案总结的系列文章（一个mini series，共6篇），原文链接：在这里。我觉得不错，这里粗略整理（非全文翻译）一下，供大家参考。 **一、背景** 无论使用任何编程语言开发应用，都离不开配置数据。配置数据提供的形式有多样，不外乎命令行选项(options)、参数（parameters)，环境 变量（env vars)以及配置文件等。Golang...</description></item><item><title>也谈并发与并行</title><link>https://tonybai.com/2015/06/23/concurrency-and-parallelism/</link><pubDate>Tue, 23 Jun 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/06/23/concurrency-and-parallelism/</guid><description>在一般人的眼中，“并行”就是并行，即你干你的，我干我的，两个“并行”的执行过程可能是两条毫无瓜葛的平行线，也可能是有交叉，但瞬即分开的两条线。不 过在程序员的世界里，有关“并行”的概念却有两个单词：Concurrency和Parallelism，对应的比较主流的中文翻译为并发 (Concurrency)和并行(Parallelism)。 之前一直使用C、Python进行Coding，对Concrr...</description></item><item><title>Caddy，一个用Go实现的Web Server</title><link>https://tonybai.com/2015/06/04/caddy-a-web-server-in-go/</link><pubDate>Thu, 04 Jun 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/06/04/caddy-a-web-server-in-go/</guid><description>这是一个Web Server的时代，apache2与nginx共舞，在追求极致性能的路上，没有最高，只有更高。但这又是一个追求个性化的时代，有些Web Server并没有去挤“Performance提升”这一独木桥，而是有着自己的定位，Caddy就是这样一个开源Web Server。 Caddy的作者Matt Holt在caddy官网以及FAQ中对caddy的目标阐释如下： 其他Web Serve...</description></item><item><title>ngrok原理浅析</title><link>https://tonybai.com/2015/05/14/ngrok-source-intro/</link><pubDate>Thu, 14 May 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/05/14/ngrok-source-intro/</guid><description>之前在进行微信Demo开发时曾用到过ngrok这个强大的tunnel(隧道)工具，ngrok在其github官方页面上的自我诠释是 “introspected tunnels to localhost&amp;#34;，这个诠释有两层含义： 1、可以用来建立public到localhost的tunnel，让居于内网主机上的服务可以暴露给public，俗称内网穿透。 2、支持对隧道中数据的introspection...</description></item><item><title>Go和HTTPS</title><link>https://tonybai.com/2015/04/30/go-and-https/</link><pubDate>Thu, 30 Apr 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/04/30/go-and-https/</guid><description>近期在构思一个产品，考虑到安全性的原因，可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP（使用Golang开 发微信系列）。对HTTPS的了解则始于那次自行搭建ngrok服务，在那个过程中照猫画虎地为服务端生成了一些私钥和证书，虽然结果是好 的：ngrok服务成功搭建起来了，但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会，对HTTPS做一些深度挖掘。...</description></item><item><title>搭建自己的ngrok服务</title><link>https://tonybai.com/2015/03/14/selfhost-ngrok-service/</link><pubDate>Sat, 14 Mar 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/03/14/selfhost-ngrok-service/</guid><description>在国内开发微信公众号、企业号以及做前端开发的朋友想必对ngrok都不陌生吧，就目前来看，ngrok可是最佳的在内网调试微信服务的tunnel工 具。记得今年春节前，ngrok.com提供的服务还一切正常呢，但春节后似乎就一切不正常了。ngrok.com无法访问，ngrok虽然能连上 ngrok.com提供的服务，但微信端因为无法访问ngrok.com，导致消息一直无法发送到我们的服务地址上，比如x...</description></item><item><title>理解Golang包导入</title><link>https://tonybai.com/2015/03/09/understanding-import-packages/</link><pubDate>Mon, 09 Mar 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/03/09/understanding-import-packages/</guid><description>Golang使用包（package）这种语法元素来组织源码，所有语法可见性均定义在package这个级别，与Java 、python等语言相比，这算不上什么创新，但与C传统的include相比，则是显得“先进”了许多。 Golang中包的定义和使用看起来十分简单： 通过package关键字定义包： package xxx 使用import关键字，导入要使用的标准库包或第三方依赖包。 import ...</description></item><item><title>近期遇到的3个Golang代码问题</title><link>https://tonybai.com/2015/01/23/three-issues-about-go-code/</link><pubDate>Fri, 23 Jan 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/01/23/three-issues-about-go-code/</guid><description>这两周来业余时间都在用Golang写代码，现在处于这样一个状态：除了脚本，就是Golang了。反正能用golang实现的，都用golang写。 Golang语言相对成熟了，但真正写起来，还是要注意一些“坑”的，下面是这周遇到的三个问题，这里分享出来，希望能对遇到同样问题的童鞋有所帮助。 **一、误用定时器，狂占CPU** golang中有一个通过channel实现timeout或tick time...</description></item><item><title>一个有关Golang变量作用域的坑</title><link>https://tonybai.com/2015/01/13/a-hole-about-variable-scope-in-golang/</link><pubDate>Tue, 13 Jan 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/01/13/a-hole-about-variable-scope-in-golang/</guid><description>临近下班前编写和调试一段Golang代码，但运行结果始终与期望不符，怪异的很，下班前依旧无果。代码Demo如下： //testpointer.go package main import (         &amp;#34;fmt&amp;#34; ) var p \*int func foo() (\*int, error) {         var i int = 5         return &amp;amp;i, nil } f...</description></item><item><title>使用Golang开发微信公众平台-发送客服消息</title><link>https://tonybai.com/2014/12/30/send-custom-service-text-msg-for-wechat-public-platform-dev-in-golang/</link><pubDate>Tue, 30 Dec 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/12/30/send-custom-service-text-msg-for-wechat-public-platform-dev-in-golang/</guid><description>关注并使用过微信“飞常准”公众号的朋友们都有过如下体验：查询一个航班情况后，这个航班的checkin、登机、起降等信息都会在后续陆续异步发给你，这个服务就是通过微信公众平台的客服消息实现的。 微信公众平台开发文档中关于客服消息的解释如下：“当用户主动发消息给公众号的时候（包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功 事件、用户维权），微信将会把消息数据推送给开发者，开发者在一段...</description></item><item><title>使用Golang开发微信公众平台-接收加密消息</title><link>https://tonybai.com/2014/12/24/recv-encrypted-text-msg-for-wechat-public-platform-dev-in-golang/</link><pubDate>Wed, 24 Dec 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/12/24/recv-encrypted-text-msg-for-wechat-public-platform-dev-in-golang/</guid><description>在上一篇“接收文本消息”一文中，我们了解到：公众服务与微信服务器间的消息是“裸奔”的（即明文传输，通过抓包可以看到）。显然这对于一些对安 全性要求较高的大企业服务号来说，比如银行、证券、电信运营商或航空客服等是不能完全满足要求的。于是乎就有了微信服务器与公众服务间的数据加密 通信流程。 公众号管理员可以在公众号“开发者中心”选择是否采用&amp;#34;安全模式&amp;#34;(区别于明文模式)： 一旦选择了“安全模式”，微信...</description></item><item><title>使用Golang开发微信公众平台-接收文本消息</title><link>https://tonybai.com/2014/12/20/receive-text-for-wechat-public-platform-dev-in-golang/</link><pubDate>Sat, 20 Dec 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/12/20/receive-text-for-wechat-public-platform-dev-in-golang/</guid><description>一旦接入验证成功，成为正式开发者，你可能会迫不及待地想通过手机微信发送一条&amp;#34;Hello, Wechat”到你的公众号服务器。不过上一篇的那个程序还无法处理手机提交的文本消息，本篇将介绍如何用Golang编写公众号程序来接收手机端发送的 文本消息以及回复响应消息。 根据微信公众平台开发文档中描述：“当普通微信用户向公众账号发消息时，微信服务器将POST消息的XML数据包到开发者填写的URL上”。我们...</description></item><item><title>使用Golang开发微信公众平台-接入验证</title><link>https://tonybai.com/2014/12/18/access-validation-for-wechat-public-platform-dev-in-golang/</link><pubDate>Thu, 18 Dec 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/12/18/access-validation-for-wechat-public-platform-dev-in-golang/</guid><description>今年我涉猎的领域有些“广泛”，并且有那么一点“跳跃”：从上半年的终端（游戏）开发到下半年golang、docker以及目前将要提及的微信公众平台 接口开发，似乎有些远离了老本行C以及技术管理的内容。但在这个转型以及创新驱动的时代，这显然是顺势而为。寻求与新兴领域的主动接轨，在实打实的实践 中，扩大了自己的视野，并可以进一步甄别发现适合自己的领域。 移动互联网时代，微信平台一枝独秀，是社交领域的巨人...</description></item><item><title>Goroutine是如何工作的</title><link>https://tonybai.com/2014/11/15/how-goroutines-work/</link><pubDate>Sat, 15 Nov 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/11/15/how-goroutines-work/</guid><description>在golangweekly的第36期Go Newsletter中我发现一篇短文&amp;#34;How Goroutines Work&amp;#34; ，其作者在参考了诸多资料后，简短概要地总结了一下 Goroutine的工作原理，感觉十分适合刚入门的Gophers（深入理解Goroutine调度的话，可以参考Daniel Morsing的&amp;#34; The Go scheduler&amp;#34; )。这里粗译如下。 **一、Go语言简介** 如...</description></item><item><title>Go语言的有效错误处理</title><link>https://tonybai.com/2014/11/14/effective-error-handling-in-go/</link><pubDate>Fri, 14 Nov 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/11/14/effective-error-handling-in-go/</guid><description>中午闲暇翻看Daniel Morsing的“The Go scheduler”时，发现其另外一篇短文“Effective error handling in Go”，文章不长，但感觉对Go中错误处理方法总结的还是比较到位的，这里译之供大家参考。 **一、简介** Go语言受到诟病最多的一项就是其错误处理机制。如果显式地检查和处理每个error，这恐怕的确会让人望而却步。你可以试试这里列出的几个方法...</description></item><item><title>Go，5周年</title><link>https://tonybai.com/2014/11/12/go-5-years/</link><pubDate>Wed, 12 Nov 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/11/12/go-5-years/</guid><description>2014年11月10日（美国当地时间），Golang的官方博客 放出了Andrew Gerrand的一篇博文《Half a decade with Go》来纪念Go语言发布五周年。文章按时间顺序简要描述了Golang这五年来发展的 点点滴滴，并让全世界Gopher看到了Go可期的光明未来。考虑到这篇文章在墙外，不便于国内Gopher阅读，这里给出中文翻译版，希望能给中国大陆 的Gophers带来些...</description></item><item><title>Golang开发环境搭建-Vim篇</title><link>https://tonybai.com/2014/11/07/golang-development-environment-for-vim/</link><pubDate>Fri, 07 Nov 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/11/07/golang-development-environment-for-vim/</guid><description>虽说sublimetext3+gosublime+gocode是目前较为 流行的Golang开发环境组合，但作为一名VIMer，没有一套得心应手的Vim for Golang dev心里总是过不去的。Golang虽然年轻，但即便是从Go 1版本发布(2012年3月28日)算起，掐指算来也有小三年了。全世界的开发者已经为Golang贡献了较为成熟的Vim插件了。有了这些插件，搭建出 一套高效的Gol...</description></item><item><title>Go语言是如何处理栈的</title><link>https://tonybai.com/2014/11/05/how-stacks-are-handled-in-go/</link><pubDate>Wed, 05 Nov 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/11/05/how-stacks-are-handled-in-go/</guid><description>Go 1.4Beta1刚刚发布，在Go 1.4Beta1中，Go语言的stack处理方式由之前的&amp;#34;segmented stacks&amp;#34;改为了&amp;#34;continuous stacks&amp;#34;。关于Go语言对stack的处理机制、发展历史、存在问题等，CloudFlare的一篇官方blog进行了系统的阐述，这里的内容就是 翻译自CloudFlare的那篇blog：《How Stacks are Handled i...</description></item><item><title>Go 1.4中值得关注的几个变化</title><link>https://tonybai.com/2014/11/04/some-changes-in-go-1-4/</link><pubDate>Tue, 04 Nov 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/11/04/some-changes-in-go-1-4/</guid><description>在Go 1.3发布半年过去后，Go核心项目组于本月初发布了Go 1.4 Beta1版本。这个版本的几个变化点虽然不是革命性的，但对后续Go语言的发展来说，打下了基础，定下了基调。这里就几个值得关注的变化点结合Go 1.4代码进行一些简单描述，希望大家能对Go 1.4有个感性的认知和了解。 Go 1.4依旧保持了Go 1兼容性的承诺，你的已有代码几乎无需任何改动就可以通过Go 1.4的编译并运行。(...</description></item><item><title>godep的一个“坑”</title><link>https://tonybai.com/2014/10/30/a-hole-of-godep/</link><pubDate>Thu, 30 Oct 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/10/30/a-hole-of-godep/</guid><description>很多人学习和使用Golang一段时间后，都会被golang的第三方包依赖版本搞得有些烦躁，golang设计者最初过于乐观的设计使得今天大 家不得不各自想办法解决这个问题。godep就是综合了多年第三方包依赖问题的解决方案后的一个趋向统一的方案，至少是在go get的设计没有进化前的一个比较不错的方案。 今天试用了一把godep，不过“体验”并不理想，这缘于我遇到了godep的一个“坑”，不过是那种...</description></item><item><title>Golang的演化历程</title><link>https://tonybai.com/2014/10/25/golang-history/</link><pubDate>Sat, 25 Oct 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/10/25/golang-history/</guid><description>本文来自Google的Golang语言设计者之一Rob Pike大神在GopherCon2014大会上的开幕主题演讲资料“Hello, Gophers!”。Rob大神在这次分 享中用了两个生动的例子讲述了Golang的演化历程，总结了Golang到目前为止的成功因素，值得广大Golang Programmer &amp;amp; Beginner学习和了解。这里也用了&amp;#34;Golang的演化历程&amp;#34;作为标题。 **1、...</description></item><item><title>Golang测试技术</title><link>https://tonybai.com/2014/10/22/golang-testing-techniques/</link><pubDate>Wed, 22 Oct 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/10/22/golang-testing-techniques/</guid><description>本篇文章内容来源于Golang核心开发组成员Andrew Gerrand在Google I/O 2014的一次主题分享“Testing Techniques”，即介绍使用Golang开发 时会使用到的测试技术（主要针对**单元测试**），包括基本技术、高级技术（并发测试、mock/fake、竞争条件测试、并发测试、内/外部测 试、vet工具等）等，感觉总结的很全面，这里整理记录下来，希望能给大家带...</description></item><item><title>组织Golang代码</title><link>https://tonybai.com/2014/10/21/organize-golang-code/</link><pubDate>Tue, 21 Oct 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/10/21/organize-golang-code/</guid><description>本月初golang官方blog(需要自己搭梯子)上发布了一篇文章，简要介绍了近几个月Go在一 些技术会议上（比如Google I/O、Gopher SummerFest等）的主题分享并伴有slide链接。其中David Crawshaw的“Organizing Go Code”对Golang的代码风格以及工程组 织的最佳实践进行的总结很是全面和到位，这里按Slide中的思路和内容翻译和摘录如下（部...</description></item><item><title>Golang跨平台交叉编译</title><link>https://tonybai.com/2014/10/20/cross-compilation-with-golang/</link><pubDate>Mon, 20 Oct 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/10/20/cross-compilation-with-golang/</guid><description>近期在某本书上看到Go跨平台交叉编译的强大功能，于是想自己测试一下。以下记录了测试过程以及一些结论，希望能给大家带来帮助。 我的Linux环境如下： uname -a Linux ubuntu-Server-14 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86\_64 x86\_64 x86\_64 GNU/Lin...</description></item><item><title>探讨docker容器对共享内存的支持情况</title><link>https://tonybai.com/2014/10/12/discussion-on-shared-mem-support-in-docker/</link><pubDate>Sun, 12 Oct 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/10/12/discussion-on-shared-mem-support-in-docker/</guid><description>我们的遗留系统广泛使用了性能最佳的IPC方式 – 共享内存，而且用到了两种共享内存的实现方式：System V共享内存(shmget、shmat、shmdt)以及Mmap映射Regular File。System V共享内存支持一定程度上的内存数据持久化，即当程序创建共享内存对象后，如果不显式删除或物理主机重启，该IPC对象会一直保留，其中的数据也不会丢 失；mmap映射Regular File的...</description></item><item><title>docker容器内服务程序的优雅退出</title><link>https://tonybai.com/2014/10/09/gracefully-shutdown-app-running-in-docker/</link><pubDate>Thu, 09 Oct 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/10/09/gracefully-shutdown-app-running-in-docker/</guid><description>近期在试验如何将我们的产品部署到docker容器中去，这其中涉及到一个技术环节，那就是如何让docker容器退出时其内部运行的服务程序也 可以优雅的退出。所谓优雅退出，指的就是程序在退出前有清理资源（比如关闭文件描述符、关闭socket），保存必要中间状态，持久化内存数据 （比如将内存中的数据flush到文件中）的机会。docker作为目前最火的轻量级虚拟化技术，其在后台服务领域的应用是极其广泛的...</description></item><item><title>Golang Channel用法简编</title><link>https://tonybai.com/2014/09/29/a-channel-compendium-for-golang/</link><pubDate>Mon, 29 Sep 2014 00:00:00 +0800</pubDate><guid>https://tonybai.com/2014/09/29/a-channel-compendium-for-golang/</guid><description>在进入正式内容前，我这里先顺便转发一则消息，那就是Golang 1.3.2已经正式发布了。国内的golangtc已经镜像了golang.org的安装包下载页面，国内go程序员与爱好者们可以到&amp;#34;Golang中 国&amp;#34;，即golangtc.com去下载go 1.3.2版本。 Go这门语言也许你还不甚了解，甚至是完全不知道，这也有情可原，毕竟Go在TIOBE编程语言排行榜上位列30开外。但近期使用Gola...</description></item><item><title>关于编程语言学习的一些体会</title><link>https://tonybai.com/2013/10/22/some-experience-about-learning-programming-language/</link><pubDate>Tue, 22 Oct 2013 00:00:00 +0800</pubDate><guid>https://tonybai.com/2013/10/22/some-experience-about-learning-programming-language/</guid><description>_Learn at least one _new language every year_.                                               — Andy Hunt and Dave Thomas_ 自己一直是“每年学习一门新语言”的忠实拥趸，曾先后认真地学习了Haskell、Common Lisp、Python、Go等语言，对Prolog、Scala、...</description></item><item><title>Go defer的C实现</title><link>https://tonybai.com/2013/02/03/implement-go-defer-in-c/</link><pubDate>Sun, 03 Feb 2013 00:00:00 +0800</pubDate><guid>https://tonybai.com/2013/02/03/implement-go-defer-in-c/</guid><description>Go语言中引入了一个新的关键字defer，个人认为这个语法关键字让异常处理也变得得心应手许多，对改善代码的可读性和可维护性大有裨益，是典型的语法棒棒糖^\_^。 像下面这种代码（伪代码）： void foo() {     apply resource1; retv = action1;     if not success         release resource1 apply reso...</description></item><item><title>升级到Ubuntu 12.04LTS</title><link>https://tonybai.com/2012/12/04/upgrade-ubuntu-to-1204-lts/</link><pubDate>Tue, 04 Dec 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/12/04/upgrade-ubuntu-to-1204-lts/</guid><description>Ubuntu 10.04 LTS已经伴随我两年了，经过我这么长时间的折腾，Ubuntu早已不堪重负^\_^。在未升级前，Ubuntu 10.04已经表现出诸多问题： \- 在家中连接无线路由器时间漫长，且经常掉线； \- 在公司用有线网络经常掉线； \- 由于反复安装软件，系统中残留较多垃圾数据； \- Ubuntu 10.04官方源中的软件版本都有些低，很多软件手工安装高版本比较费力； 另外原先...</description></item><item><title>辩证地看待“重新发明轮子”</title><link>https://tonybai.com/2012/11/02/treat-reinventing-the-wheel-dialectically/</link><pubDate>Fri, 02 Nov 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/11/02/treat-reinventing-the-wheel-dialectically/</guid><description>C程序员骨子里都有一种“重新发明轮子(Reinventing the Wheel)”的特质。在面向对象、组件化流行以及崇尚复用的今天，这种特质似乎总是被认为是反面教材。但伟大的毛主席教导我们：要辩证地看待一切事物， 凡事无绝对。事物都是有两面性的，有好就有坏，有坏就有好。拿“重新发明轮子”这事而言，我们除了看到其弊端外，还要充分领会到其好的一面，不能一棒子打 死，这样才能在特定的场景下作出正确合理...</description></item><item><title>也谈Go语言代码包分发</title><link>https://tonybai.com/2012/10/25/go-package-distributing/</link><pubDate>Thu, 25 Oct 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/10/25/go-package-distributing/</guid><description>Go语言目前(截至1.0.2版本)尚不支持直接链接.a文件(这里的.a文件指的不是传统静态共享库，而是对golang的非main包build后的产物)。这样一来Go的第三方库包或组织内部的公共代码库包只能以源码的形式分发了。 Go提供了get命令用于获取他人分发的代码包。我们通过get命令既可以获取一些知名代码托管站点上的代码，也可以获取组织内部版本控制服务器上的公共代码。 Go get支持的托管...</description></item><item><title>也谈Go语言声明语法</title><link>https://tonybai.com/2012/10/11/understanding-go-declaration-syntax/</link><pubDate>Thu, 11 Oct 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/10/11/understanding-go-declaration-syntax/</guid><description>一直在从事C语言服务端应用开发，对C的变量声明语法早已烂熟于胸，同时也深知复杂的C变量声明十分晦涩难解。记得若干年前还特意花了一些时间研究理解复 杂C变量声明的方法，记忆中这些方法包括：《C专家编程》中提到的“优先级”规则、right-left规则以及顺时针/螺旋形规则等，幸运地是我们日常 开发中少有使用极为复杂的变量声明(如void (\*signal (int signo, void (\*f...</description></item><item><title>Go与C语言的互操作</title><link>https://tonybai.com/2012/09/26/interoperability-between-go-and-c/</link><pubDate>Wed, 26 Sep 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/09/26/interoperability-between-go-and-c/</guid><description>Go有强烈的C背景，除了语法具有继承性外，其设计者以及其设计目标都与C语言有着千丝万缕的联系。在Go与C语言互操作(Interoperability)方面，Go更是提供了强大的支持。尤其是在Go中使用C，你甚至可以直接在Go源文件中编写C代码，这是其他语言所无法望其项背的。 在如下一些场景中，可能会涉及到Go与C的互操作： 1、提升局部代码性能时，用C替换一些Go代码。C之于Go，好比汇编之于C。...</description></item><item><title>Go中的系统Signal处理</title><link>https://tonybai.com/2012/09/21/signal-handling-in-go/</link><pubDate>Fri, 21 Sep 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/09/21/signal-handling-in-go/</guid><description>我们在生产环境下运行的系统要求优雅退出，即程序接收退出通知后，会有机会先执行一段清理代码，将收尾工作做完后再真正退出。我们采用系统Signal来 通知系统退出，即kill pragram-pid。我们在程序中针对一些系统信号设置了处理函数，当收到信号后，会执行相关清理程序或通知各个子进程做自清理。kill -9强制杀掉程序是不能被接受的，那样会导致某些处理过程被强制中断，留下无法恢复的现场，导致消...</description></item><item><title>Go语言标准库概览</title><link>https://tonybai.com/2012/09/08/a-brief-tour-of-go-standard-library/</link><pubDate>Sat, 08 Sep 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/09/08/a-brief-tour-of-go-standard-library/</guid><description>本文翻译自Dr.Dobb&amp;#39;s的&amp;#34;A Brief Tour of the Go Standard Library&amp;#34;一文。 **在Go语言五周系列教程的最后一部分中，我们将带领大家一起来浏览一下Go语言丰富的标准库。** Go标准库包含了大量包，提供了丰富广泛的功能特性。这里提供了概览仅仅是有选择性的且非常简单。本文发表后，标准库的内容还可能继续增加，因此 建议大家最好是通过在线查阅库API或使用go...</description></item><item><title>Go程序设计语言(三)</title><link>https://tonybai.com/2012/08/28/the-go-programming-language-tutorial-part3/</link><pubDate>Tue, 28 Aug 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/08/28/the-go-programming-language-tutorial-part3/</guid><description>本文译自Rob Pike的Go语言PPT教程 – &amp;#34;The Go Programming Language Part3(updated June 2011)&amp;#34;。由于该教程的最新更新时间早于Go 1版本发布，因此该PPT中的一些内容与Go 1语言规范略有差异，到时我会在相应的地方做上注解。 第三部分大纲 ------ * 并发与通信 * Goroutines * 通道(Channel) * 并发相关...</description></item><item><title>Go程序设计语言(二)</title><link>https://tonybai.com/2012/08/27/the-go-programming-language-tutorial-part2/</link><pubDate>Mon, 27 Aug 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/08/27/the-go-programming-language-tutorial-part2/</guid><description>重写工作方式正如字段一样。 type NamedPoint struct {     Point     name string } func (n \*NamedPoint) Abs() float64 {    return n.Point.Abs() \* 100. } n := &amp;amp;NamedPoint{Point{3, 4}, &amp;#34;Pythagoras&amp;#34;} fmt.Println(n.Abs...</description></item><item><title>Go程序设计语言(一)</title><link>https://tonybai.com/2012/08/23/the-go-programming-language-tutorial-part1/</link><pubDate>Thu, 23 Aug 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/08/23/the-go-programming-language-tutorial-part1/</guid><description>int          uint int8      uint8 = byte int16       uint16 int32       uint32         float32      complex64 int64       uint64         float64      complex128 还有uintptr，一个大小足够存储一个指针的数值。 这些都是互不相同的类型；...</description></item><item><title>也谈Go语言编程 – Hello，Go!</title><link>https://tonybai.com/2012/08/17/hello-go/</link><pubDate>Fri, 17 Aug 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/08/17/hello-go/</guid><description>_**Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system ena...</description></item></channel></rss>