Web Analytics

系统设计的“元素周期表”:40个横跨所有领域的通用设计原则

本文永久链接 – https://tonybai.com/2025/07/31/periodic-table-of-system-design 大家好,我是Tony Bai。 近日,一篇名为《系统设计的元素》(Elements of System Design)的论文引发社区热议。它的目标宏大且吸睛:通过梳理上百篇横跨操作系统、数据库、分布式系统等领域的经典论文,提炼出一套通用的系统设计原则“元素周期表”。 ...

July 31, 2025 · 16 min · Tony Bai

Go开发者必知:五大缓存策略详解与选型指南

本文永久链接 – https://tonybai.com/2025/04/28/five-cache-strategies 大家好,我是Tony Bai。 在构建高性能、高可用的后端服务时,缓存几乎是绕不开的话题。无论是为了加速数据访问,还是为了减轻数据库等主数据源的压力,缓存都扮演着至关重要的角色。对于我们 Go 开发者来说,选择并正确地实施缓存策略,是提升应用性能的关键技能之一。 ...

April 28, 2025 · 8 min · Tony Bai

Go应用的K8s“最佳拍档”:何时以及如何用好多容器Pod模式

Go应用的K8s“最佳拍档”:何时以及如何用好多容器Pod模式 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

April 24, 2025 · 8 min · Tony Bai

通过实例理解SQL查询语句的执行顺序

通过实例理解SQL查询语句的执行顺序 | Tony Bai Tony Bai一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ 关于我 文章列表 通过实例理解SQL查询语句的执行顺序 七月 20, 2024 0 条评论 ...

July 20, 2024 · 7 min · Tony Bai

关系代数、SQL语句和Go语言示例

本文永久链接 – https://tonybai.com/2023/11/15/relational-algebra-and-sql-with-go-examples 近些年,数据库领域发展日新月异,除传统的关系型数据库外,还出现了许多新型的数据库,比如:以HBase、Cassandra、MongoDB为代表的NoSQL数据库,以InfluxDB、TDEngine为代表的时序数据库,以Neo4J、Dgraph为代表的图数据库,以Redis、Memcached等为代表的内存数据库,以Milvus为代表的向量数据库,以CockroachDB、TiDB为代表的HTAP融合数据库以及云原生数据库等。各类型数据库都有自己的优势,开发者可以根据应用场景选择最合适的数据库。 ...

November 15, 2023 · 25 min · Tony Bai

通过实例理解Web应用的机密管理

本文永久链接 – https://tonybai.com/2023/11/08/understand-go-web-secret-management-by-example 如果你是一个Web应用系统的开发人员,你的日常大概率是“乐此不疲”地做着CRUD的活儿,很少接触到安全方面的内容。如果这时有人和你提到“机密(信息)管理(secret management)”,你大概率会说:那是啥?和我有关系吗? ...

November 8, 2023 · 33 min · Tony Bai

理解时序数据库的时间线

本文永久链接 – https://tonybai.com/2023/05/28/understand-time-series-of-tsdb 在当今数据爆炸的时代,时序数据已经成为企业和组织中不可或缺的一部分。它们包括了从传感器、监控设备、日志记录系统和金融交易等多种来源的大量数据,这些数据按照时间顺序排列,记录了各种事件和活动的发生和变化。时序数据的分析和处理对于企业的业务决策和运营效率至关重要。为了更好地管理和利用这些数据,人们发明了时序数据库管理系统(Time Series Database System,TSDB)。 ...

May 28, 2023 · 10 min · Tony Bai

以单件方式创建和获取数据库实例

在屡次的Go用户调查中,使用Go语言进行Web服务/API开发都占据了Go语言用途调查结果的头部位置。下面是知名Go IDE goland的母公司JetBrains最新发布的Go当前状态报告(2021.2.3)中的截图: 开发Web或API服务,难免会与数据库打交道。如今创建数据库实例并访库的技术已经是很成熟了,于是就有了下面这样的程序结构: ...

February 9, 2021 · 8 min · Tony Bai

遭遇Heap溢出

今天凌晨配合云南移动进行局数据全量升级,本来以为是件很轻松的活计,甚至不需要我动手的事情,结果却又是一次惨痛的教训啊。 这个活计其实真的很简单,就是将数据库中的旧数据全部删除,然后导入新的数据,由于数据量较大需要重启一次我们的系统。问题就在重启系统上。摆在我面前的就是"重启失败",系统dump一个core文件。通过pstack和gdb查看如下: core ‘core’ of 7971: xxxxx -s fe647b38 t_splay (3a71b0, 229, 228, 3a7000, 3ca548, 8000000) + 14 fe6475ec realfree (3ca320, 741f4, 320974, fe6bc000, 0, 3209a5) + c8 fe647e5c cleanfree (0, 7, fe6c29bc, 1a8, 3a7008, 0) + 54 fe646f88 _malloc_unlocked (ea60, 0, ff13de50, fe6bc000, ff184ae6, 0) + f4 fe646e78 malloc (ea60, 3e8, 0, 2, f8e9dacb, 1) + 20 000fa330 我们一业务函数,暂叫A_func吧 (18, 186a0, ffbfe4b0, 30330000, 37, ff00) + 1fc ...

November 10, 2007 · 3 min · Tony Bai