Go教程技术文章
-
Golang · Go教程 | 1星期前 | Context · 超时控制 · Go教程 · http.Client · Transport · Go context 请求超时 Transport http.Client Client.Timeout ResponseHeaderTimeout
Go HTTP 客户端超时不要只靠一个 context 或一个 Client.Timeout。更稳的做法是把总预算、连接、TLS 握手、响应头和读取阶段分开设置,再用错误判断和日志字段确认到底卡在哪一段。218 收藏 -
Go 项目日志从 fmt.Println 迁到 slog,不只是换一个打印函数。本文用接口调用链场景讲清 slog 字段设计、上下文传递、Handler 选择、敏感字段处理和灰度接入路径。217 收藏 -
Golang · Go教程 | 6天前 | 并发 · WaitGroup · go · worker pool · 服务停机 · Go channel WaitGroup 优雅停机 worker pool 任务排空
从一次发布后异步任务少处理的故障出发,拆解 Go worker pool 的关闭顺序:先停止接收、再关闭任务输入、让 worker 排空并由 WaitGroup 收尾,同时说明超时退出与任务持久化的边界。207 收藏 -
Golang · Go教程 | 20小时前 | JSON · 基准测试 · go · 性能优化 · 内存分配 encoding/json json.RawMessage json.Decoder Go JSON
Go 服务处理大批量 JSON 时,直接把请求体解码成完整结构体并不总是划算。本文用订单事件示例比较 json.Unmarshal、json.Decoder 和 json.RawMessage 的分配与吞吐边界,并给出可复现的基准测试写法。206 收藏 -
Golang · Go教程 | 1星期前 | 并发 · HTTP · 性能优化 · 故障排查 · Go教程 · Go Goroutine 连接复用 pprof http.Client close Response.Body
Go 服务里调用 http.Client 后,Response.Body 没有在所有路径关闭,连接会被持续占用,pprof 里常能看到 net/http 相关 goroutine 增长。用 defer resp.Body.Close()、完整处理响应体、复用 Client,并通过压测与连接指标复查,可以把这类问题收住。201 收藏 -
本文用一个 Go HTTP 接口示例,把 log/slog 的 JSONHandler、Logger.With、请求字段和本地检查串起来,说明如何把普通日志变成可检索、可过滤、可定位的结构化日志。194 收藏 -
Go 拼接文本时,strings.Builder、bytes.Buffer、[]byte 和 strings.Join 的选择取决于输出类型、是否需要读取字节以及片段是否已准备好。文章用最小示例、边界表和基准测试说明各自适用场景。188 收藏 -
Go 服务渲染首屏时,直接把 json.Marshal 结果转成 template.JS 很容易越过 html/template 的安全边界。更稳的做法是把结构体直接放在 script 的 JavaScript 值位置,让 html/template 按上下文生成安全 JSON;少量字段则用 data-* 属性。177 收藏 -
用运行手册方式讲解 Go HTTP 服务优雅停机:识别 SIGTERM、停止接流量、等待正在处理的请求、设置超时退出,并给出回滚路径、告警确认和复盘清单。176 收藏 -
Golang · Go教程 | 1天前 | golang · HTTP · 安全 · Go教程 · net/http · 接口防护 · net/http 请求超时 MaxBytesReader Go HTTP 请求体限制 内存防护
Go HTTP 服务接收上传、Webhook 或 JSON 请求时,单靠 ReadAll 很容易被异常大请求拖高内存。本文从请求体上限、读取超时、状态码和日志字段四个边界入手,给出一套可复查的 net/http 防护实现。173 收藏 -
Golang · Go教程 | 2星期前 | WaitGroup · 并发编程 · Go教程 · Go 1.25 · Go并发 WaitGroup errgroup Go 1.25 sync.WaitGroup.Go
Go 1.25 为 sync.WaitGroup 增加 Go 方法,适合只等待一组 goroutine 完成的场景。本文用旧写法对比新写法,说明迁移边界、错误处理选择和最小验证方式。172 收藏 -
Golang · Go教程 | 4天前 | https · cors · chrome · Go教程 · Local Network Access · 内网接口 · 浏览器权限 Go CORS Go 内网接口 Chrome 142 Local Network Access targetAddressSpace
Chrome 142 开始把从公网页面到本地 IP 或回环地址的请求放到 Local Network Access 权限提示之后。Go 服务端只补 CORS 头并不能替用户授予权限。本文用一个内网设备状态接口说明如何区分浏览器权限、HTTPS、Go CORS 和 iframe Permissions-Policy,避免继续套用已搁置的 PNA 预检方案。152 收藏 -
Go 项目从 fmt.Println 走向结构化日志后,标准库 slog、zap 和 zerolog 都能完成 JSON 输出,但默认行为、扩展方式、性能与迁移成本并不一样。本文按项目约束比较三种方案,并给出可落地的选择规则。151 收藏 -
Webhook 只校验 HMAC 还不够:攻击者可以把合法请求原样重发。本文用时间戳、Nonce、HMAC-SHA256 和一次性记录,完成一套可复查的 Go 签名校验流程。144 收藏 -
Golang · Go教程 | 2星期前 | HTTP服务 · Go教程 · 后端开发 · 超时配置 · 服务稳定性 · net/http WriteTimeout HTTP超时 Go教程 ReadHeaderTimeout IdleTimeout
Go HTTP 服务不要只靠默认超时。请求头、请求体、响应写入和空闲长连接各有边界,ReadHeaderTimeout、ReadTimeout、WriteTimeout、IdleTimeout 要分开设计。140 收藏