Go 入门:用 time.Ticker 做一个朴素限速器
限速听起来像网关和高并发系统才需要的能力,其实入门项目也经常遇到。比如你要批量同步 5000 个客户资料到第三方 CRM,对方文档写着每秒最多 5 次请求。如果你开 50 个 goroutine 一口气打过去,很快就会收到 429,严重时还会被封禁。
tag
限速听起来像网关和高并发系统才需要的能力,其实入门项目也经常遇到。比如你要批量同步 5000 个客户资料到第三方 CRM,对方文档写着每秒最多 5 次请求。如果你开 50 个 goroutine 一口气打过去,很快就会收到 429,严重时还会被封禁。
用图片转换命令示例讲 os/exec 的基本用法,包括 CommandContext、stdout/stderr、参数传递和安全边界。
大多数 Go 测试只需要普通 TestXxx,但有时一个包里的多组测试需要共享准备工作,比如创建临时目录、启动测试服务器、准备测试数据库连接。TestMain 可以在一个测试包运行前后执行统一逻辑。本文讲 TestMain 的基本结构和边界。它有用,但不要滥用。很多测试用 t.TempDir、helper 和子测试就够了。
很多 HTTP 客户端 bug 都来自手写 URL。Go 标准库的 net/url 可以安全处理路径和查询参数,本文讲解 url.Values、PathEscape、ResolveReference 和常见安全误区。
全面探索 Go 与 WebAssembly 的结合。从 WASM 基础、编译 Go 为 WASM、js 包浏览器交互、WASI 支持、TinyGo 优化、浏览器扩展开发,到服务端 WASM 和边缘计算,涵盖完整的技术栈和实战案例。
用消息消费 worker 示例讲 context 取消、select 循环、任务超时、资源关闭和测试后台 goroutine 退出。
正则表达式很容易让人又爱又怕。Go regexp 包使用 RE2 语法,适合做格式匹配、简单提取和文本替换。本文讲解预编译、分组提取、性能优化和常见误区。
用头像上传客户端示例讲 Go 如何构造 multipart/form-data 请求,包含文件字段、普通字段、Content-Type 和测试。
系统讲解如何将领域驱动设计(DDD)的思想应用到 Go 项目中,覆盖实体、值对象、聚合、领域事件、仓储、应用服务、限界上下文、防腐层、CQRS 和事件溯源,配合整洁架构的完整实战
HTTP 服务发布或重启时,如果直接杀进程,正在处理的请求可能被中断,用户看到连接错误,后台写入也可能只完成一半。Go 的 可以帮助服务优雅关闭:停止接收新连接,等待已有请求完成,直到超时。本文用一个标准 HTTP 服务讲关闭流程、信号处理和常见边界。
用批量插入任务示例讲 database/sql 中 PrepareContext、Stmt、参数绑定、关闭资源和与普通 ExecContext 的取舍。
CSV 是最不起眼、也最容易出事故的数据格式。运营同事从后台导出一份表,财务系统给你一份结算明细,供应商发来一批商品编码,很多时候都是 CSV。初学者常犯的错误是用 处理。只要字段里出现逗号、换行或双引号,这个办法马上失效。
深入探索如何用 Go 构建 AI 驱动的应用程序。从调用 OpenAI/Claude API、流式响应处理、Function Calling,到向量嵌入、RAG 实现、AI Agent 构建,全面覆盖 Go 与 AI 结合的最佳实践。
很多列表接口一开始会把所有数据查出来,放进切片,再 。数据少时没问题,数据一多,内存会飙升,用户也要等全部数据准备好才能收到响应。对于导出类接口,可以考虑流式 JSON 响应:边查、边编码、边写给客户端。
全面讲解如何在 Go 项目中集成 OpenTelemetry,实现 Tracing、Metrics、Logging 三大支柱的可观测性,覆盖自定义 Span、上下文传播、自动埋点、导出到 Jaeger/Tempo、Prometheus 集成和 Grafana 仪表盘
登录状态是 Web 开发绕不开的话题。很多初学者一听到 Session,就会把它想成某种神秘机制。其实从 HTTP 角度看,Cookie 是浏览器保存并自动带回服务端的一小段数据;Session 是服务端用这段数据找到用户状态的一种做法。Cookie 在客户端,Session 数据通常在服务端。
很多人第一次写 Go 程序,是从一个 HTTP 服务开始。但在真实团队里,命令行小工具同样常见:清理过期文件、导入一批 CSV、生成报表、检查接口是否可用。小工具看起来简单,最容易写成“先能跑再说”的样子:路径写死在代码里,超时时间散落在函数里,出了错只打印一行“failed”。等这个工具被同事拿去每天跑,问题就来了。
Go 1.25 即将到来,带来后量子密码学 crypto/mlkem、Profile-Guided Optimization 增强、net/http 中间件支持、工具链与 go work 改进,以及一系列性能优化。本文带你抢先预览这些激动人心的特性。
很多 Go 初学者会给 HTTP handler 写测试,却不知道怎么给 HTTP 客户端写测试。比如你的服务要调用一个用户中心接口,代码里有 、URL、请求头和 JSON 解码。测试时不可能真的去调用线上用户中心,也不应该为了单元测试启动一整套依赖。标准库里的 提供了一个很实用的工具: 。
用预约提醒场景讲 Go 中 UTC 存储、本地时区展示、time.LoadLocation、ParseInLocation 和跨时区测试。