go
已收录文章:159篇
-
接口定义已经改了,生成的 Go 文件却忘了提交,是多人协作里很隐蔽的一类问题。本文从生成入口、差异检查、提交前核对和 CI 门禁四个环节,搭建一套让 Protobuf 代码漂移无处藏身的 Go 项目工作流。473 收藏
-
模型换版本后,先别只看几条手工对话。本文用 Go 从零做一个轻量 AI 评测样本 CLI,校验 JSONL 字段、按固定种子抽样,并把命中规则与通过率写成可复查的报告。472 收藏
-
Go 服务的正则匹配突然占满 CPU,常见原因不是规则本身,而是每次请求都重新编译 regexp。本文用基线、pprof 和缓存编译结果的对比,说明如何定位并控制这类热路径开销。467 收藏
-
Golang · Go问答 | 2个月前 | go · 性能 · kubernetes · 运行时 · Kubernetes GOMAXPROCS Go问答 Go 1.25 SetDefaultGOMAXPROCS 容器CPU配额同一份 Go 服务部署到 Kubernetes 后,节点有 16 个核,Pod 却只限 2 个核,手动设置的 GOMAXPROCS 还可能在扩缩容后失真。Go 1.25 已让运行时默认读取容器 CPU 配额,本文用一个可复现的小程序说明如何检查旧配置、恢复运行时默认值,并给出上线前的边界清单。467 收藏
-
Golang · Go教程 | 1个月前 | 内存 · 标准库 · go · 性能 · bytes.Buffer · go bytes.Buffer Buffer.Available Buffer.Grow ErrTooLargeGo bytes.Buffer 的 Available 能告诉你当前还能直接写入多少字节,但它不是总容量,也不能替代 Grow 的容量规划。本文用批量拼接 HTTP 响应的场景,说明 Available、AvailableBuffer、Append、Grow 与 ErrTooLarge 的边界,并给出可回归的检查方法。465 收藏
-
Go 服务启动时监听端口失败,先区分地址已占用、地址族不匹配和权限问题,再用 ss、lsof 及最小化 Go 复现确认根因。462 收藏
-
Go 的 io.Pipe 没有内部缓冲,写端和读端必须在同一条消费链上配合推进。本文用一个压缩写入场景说明为什么 Write 会等待、CloseWithError 如何把失败传给另一端,以及怎样安排 goroutine 的退出和错误回收。461 收藏
-
Go 1.27 新增 uuid 标准库后,团队不必立刻替换所有 UUID 依赖。本文从生成、解析、格式化、存储和回退五个边界,给出从自定义实现迁移前的核对方法。459 收藏
-
当一个 HTTP 请求体里连续放着多个 JSON 值时,json.Unmarshal 只能处理单个完整值。本文用 json.Decoder 循环读取连续 JSON,区分正常 EOF、语法错误和尾部脏数据,并给出请求体大小限制、空白字符和资源关闭的检查方法。458 收藏
-
Golang · Go教程 | 2个月前 | golang · HTTP · go · 服务端 · http.server MaxBytesReader ReadHeaderTimeout Go HTTP 服务 请求体限制 响应头限制Go 的 http.Server 默认足够启动一个接口,却不会替业务限定大请求体、慢请求头和响应写入时间。本文用上传接口的真实边界,拆解 MaxBytesReader、ReadHeaderTimeout、WriteTimeout 与 MaxHeaderBytes 的职责,并给出可复查的生产配置。455 收藏
-
Golang · Go教程 | 2个月前 | golang · 配置 · 设计模式 · go · client · api设计 · Go 构造函数 Functional Options 函数选项 Client 配置 API 兼容Functional Options 适合“少量必填参数稳定、可选项会逐步增加”的 Go Client 构造场景。它能避免频繁改函数签名,并让调用点保留 WithTimeout、WithRetry 这类具名配置;但配置总是成组出现、需要从文件反序列化,或只有一个可选值时,Config 结构体或新增构造函数往往更直接。关键不在模式名称,而在默认值、重复选项与兼容边界是否明确。454 收藏
-
Go 1.24 引入 runtime.AddCleanup 后,资源清理不必再把所有希望寄托在 SetFinalizer 上。本文从一个文件句柄包装器切入,解释 Cleanup.Stop、runtime.KeepAlive、回收时机和显式 Close 的边界,并给出可回归的迁移检查。454 收藏