<?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>XML on Tony Bai</title><link>https://tonybai.com/tags/xml/</link><description>Recent content in XML on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Sat, 09 Aug 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/xml/index.xml" rel="self" type="application/rss+xml"/><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的设计哲学：为什么说它是“恰到好处”的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>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编码坏味道</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>透视软件供应链安全：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-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 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>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 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>手把手教你使用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>使用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>使用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 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>关于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与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>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>使用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>说说用xml做配置文件的优劣</title><link>https://tonybai.com/2008/03/24/the-benefits-of-using-xml-as-configuration/</link><pubDate>Mon, 24 Mar 2008 00:00:00 +0800</pubDate><guid>https://tonybai.com/2008/03/24/the-benefits-of-using-xml-as-configuration/</guid><description>最近收到客户的一个需求，要求我们将产品的系统配置数据和业务配置数据定期导出备份，以防万一数据库宕掉后可以用来&amp;#34;救火&amp;#34;。产品从起初0.1版本就一直延续着一种&amp;#34;section-key-value&amp;#34;的配置文件方式，同时我们也有可复用的库来完成配置数据的读取，可是在长期的使用过程中我们发现的不少问题，特别是在存储多样化的业务数据的时候，这样的配置方式带来维护上的很大不便。 &amp;#34;section-key-val...</description></item><item><title>tony说设计-实践后的体会</title><link>https://tonybai.com/2005/11/16/experience-after-some-design-practice/</link><pubDate>Wed, 16 Nov 2005 00:00:00 +0800</pubDate><guid>https://tonybai.com/2005/11/16/experience-after-some-design-practice/</guid><description>入司后连续做过几个项目。最近在做一个新的项目的设计的时候，突然想到是不是该把以前项目中一些好的设计想法应用到新的项目中，并且尽量减少在新的项目中遗留以前的不好的设计呢？那么以前的项目中哪些是值得我去借鉴，哪些又是应该去避免的呢？真的很遗憾，自己并没有系统的反思和总结过，这就是我写下这篇Blog的直接起因。 一直在Unix平台下做设计和开发，所以下面谈的内容可能都有些局限性。作为设计原则本身，某些可...</description></item><item><title>一个Xml Parser的TDD开发过程-Tony与Alex的对话系列</title><link>https://tonybai.com/2005/04/30/tony-alex-dialog-on-implement-xmlparser-using-tdd/</link><pubDate>Sat, 30 Apr 2005 00:00:00 +0800</pubDate><guid>https://tonybai.com/2005/04/30/tony-alex-dialog-on-implement-xmlparser-using-tdd/</guid><description>Tony : Alex今天我们来做一个xml parser.我们使用的开发工具为Eclipse + JUnit Alex : 好啊，喜欢接受挑战。 Tony : 先看看我们要解析的xml file的样子:                     使用XmlSpy自动生成其DTD如下： &amp;amp;lt;!ATTLIST test   name CDATA #REQUIRED &amp;amp;gt; &amp;amp;lt;!ATTLIS...</description></item></channel></rss>