Go语言技术文章
-
Golang · Go问答 | 4星期前 | 并发 · channel · goroutine · go · Context · context 并发限制 工作池 Go channel worker pool Goroutine生命周期
任务总量小且有界时,每任务一个 goroutine 更简单;持续或无界输入、昂贵资源和容量有限的下游,更适合创建前限流或固定工作池。本文给出选择表与可取消实现。458 收藏 -
用固定 worker、带容量的 jobs channel、可取消提交和 WaitGroup 收尾,把 Go 中每条输入都启动 goroutine 的无界并发改造成可解释的工作池。350 收藏 -
Golang · Go问答 | 4星期前 | 并发 · goroutine · go · pprof · 故障排查 · goroutine泄漏 并发排查 Goroutine生命周期 Go pprof runtime metrics
Goroutine 持续上涨不等于立刻报错。本文用运行时指标、双时点堆栈快照和退出协议,定位 channel、I/O、ticker 与重试链路中的泄漏入口。458 收藏 -
Go 后台任务不应只用一条裸 goroutine 启动。本文实现 Start、Cancel、Wait 三段式生命周期,统一任务所有权、取消原因、退出等待、超时关闭和错误返回,并说明适用边界与测试要点。189 收藏 -
Go 接口字段既可能缺失,也可能显式传 null。本文说明普通值和单层指针为何不足,并给出 Optional[T] 三态模型、PATCH 更新规则、响应编码方式、失败处理及测试清单。354 收藏 -
用 Go 标准库统一处理 JSON 未知字段、大整数与金额精度、RFC3339 时间,并给出可复用的解码入口和边界检查。297 收藏 -
Go 的 omitempty 在 encoding/json v1 中不会把值结构体当作空值。本文拆解零值判定规则,并对比指针、omitzero、IsZero 与自定义编码方案。189 收藏 -
Golang · Go教程 | 4星期前 | JSON · go · 泛型 · api设计 · encoding/json UnmarshalJSON 可选字段 零值 Go JSON处理 PATCH接口
Go 的 PATCH 接口如何区分字段缺失、null 与零值?本文用泛型 Optional[T] 保存 Set、Valid、Value 三态,完成解码、校验、更新与测试。306 收藏 -
json.Unmarshal 解码到 interface{} 或 map[string]any 时,JSON number 默认会落为 float64,可能让大整数标识失去精度。本文对比强类型字段、Decoder.UseNumber 和字符串 ID 三种方案,给出错误处理与安全复查清单。273 收藏 -
Golang · Go教程 | 4星期前 | JSON · 流式处理 · Go教程 · 内存优化 · 内存优化 encoding/json 流式解析 json.Decoder Go JSON处理 超大JSON数组
Go 解析超大 JSON 数组时,先 ReadAll 再 Unmarshal 会同时保留输入字节和全部对象。本文使用 json.Decoder、Token、More 与 Decode 逐项处理,并补齐输入上限、结束符检查和错误偏移记录。449 收藏 -
Golang · Go问答 | 4星期前 | go · 文件上传 · 流式处理 · 内存优化 · net/http · 流式读取 ParseMultipartForm Go HTTP服务 MaxBytesReader Go大文件上传 MultipartReader
Go 大文件上传内存暴涨,常见原因不是 multipart 本身,而是 io.ReadAll、bytes.Buffer 等整份复制。本文解释 maxMemory 的真实边界,并给出 MaxBytesReader 与 MultipartReader 的流式落盘方案。141 收藏 -
Go 服务收到停机信号后仍有请求进入,通常是监听器尚未关闭或摘流量与停机之间存在窗口。本文用 draining、显式 Listener 和 Server.Shutdown 完整处理。232 收藏 -
用 Go 标准库 ServeMux 表达方法与路径约束,把日志、超时等横切逻辑放进中间件,并让业务错误沿着只写一次的响应出口返回。242 收藏 -
Go 上传接口不能只调用 FormFile。本文用 MaxBytesReader 限制完整请求体,用 ParseMultipartForm 控制内存阈值,并通过 MultipartForm.RemoveAll、随机落盘名和失败回滚正确清理临时文件。331 收藏 -
Go HTTP Server 的 ReadTimeout、WriteTimeout 和 IdleTimeout 分别约束请求读取、响应写入与 Keep-Alive 等待。本文用可运行配置讲清三者边界,并补充 ReadHeaderTimeout、业务 Context 与流式响应的取舍。128 收藏