Go语言技术文章
-
Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序。Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源。这篇文章学习goroutine 的应用及468 收藏 -
Golang · Go教程 | 6天前 | 性能优化 · 垃圾回收 · Go教程 · go bytes.Buffer Go sync.Pool Go 对象池 sync.Pool 缓存 Go 临时对象复用
sync.Pool 适合复用短生命周期对象,却不保证对象一直存在或每次 Get 都命中。本文说明 Get、New、Put 和自动移除的边界,并给出稳定缓存的替代选择。467 收藏 -
Go 1.27 为 go test -json 的 output 事件增加可选 OutputType。通过 Action、Package、Test、OutputType 和 FailedBuild 的组合,解析器可以区分测试框架帧、失败首行、失败续报与构建失败,避免 CI 报告重复计数。467 收藏 -
Go 的 container/heap 允许在队列元素优先级变化后用 heap.Fix 恢复堆序。本文从 heap.Interface 的索引维护出发,拆解 Fix、Remove 与 Pop 的边界,给出可运行的可变优先队列示例。467 收藏 -
encoding/binary.Append 会把固定大小数据追加到已有字节切片,并返回可能扩容后的新切片。正确承接返回值,才能同时处理底层数组复用、容量变化和不支持类型的错误。467 收藏 -
Go 1.24 引入的 runtime.AddCleanup 适合为包装资源安排兜底清理,但回调不是确定时钟,也不能替代显式 Close。本文用文件句柄包装场景说明 AddCleanup、KeepAlive 和 Cleanup.Stop 的真实边界。467 收藏 -
Go HTTP 客户端偶发变慢时,只看总耗时很难判断问题在 DNS、建连、TLS 还是服务端首字节。本文用 net/http/httptrace 的 ClientTrace 串起关键回调,区分连接复用与新建连接,并给出可落地的耗时记录和排查边界。467 收藏 -
time.Ticker.Stop 只负责停止后续计时,不承诺把已经进入通道的值清空。本文从定时刷新任务的退出现场出发,拆解停止语义、旧值竞态、goroutine 泄漏与可验证的退出写法。467 收藏 -
Golang · Go问答 | 1个月前 | go · 性能 · kubernetes · 运行时 · Kubernetes GOMAXPROCS Go问答 Go 1.25 SetDefaultGOMAXPROCS 容器CPU配额
同一份 Go 服务部署到 Kubernetes 后,节点有 16 个核,Pod 却只限 2 个核,手动设置的 GOMAXPROCS 还可能在扩缩容后失真。Go 1.25 已让运行时默认读取容器 CPU 配额,本文用一个可复现的小程序说明如何检查旧配置、恢复运行时默认值,并给出上线前的边界清单。467 收藏 -
Go 服务的正则匹配突然占满 CPU,常见原因不是规则本身,而是每次请求都重新编译 regexp。本文用基线、pprof 和缓存编译结果的对比,说明如何定位并控制这类热路径开销。467 收藏 -
Golang · Go问答 | 2个月前 | golang · errgroup · Context · 并发控制 · Go问答 · 错误传播 Go errgroup.SetLimit errgroup.WithContext Go 并发限制 批量调用 context 取消
批量请求第三方接口时,errgroup.WithContext 配合 SetLimit 能把并发上限、首个错误返回和派生上下文取消放进同一段代码。这里给出可直接核对的最小写法、限额取值与几个容易卡住的边界。467 收藏 -
Go select 里的 nil channel 不会被选中,这个特性可以用来动态关闭某个分支。常见场景是多个输入源只消费一次、某个阶段完成后暂停监听,或者避免关闭 channel 后的重复读取。467 收藏 -
Go 服务内存持续上涨时,先区分 RSS、heap、goroutine 和缓存增长,再决定是限流、回滚还是抓 pprof。线上处理需要先判断稳定性风险,再保留证据、止血恢复,并把告警阈值和复盘项补齐。467 收藏 -
梳理 sync.Pool 的适用边界和误用风险,用对象复用降低高频临时分配。467 收藏 -
Go中通过指针操作数组可避免值拷贝,提升性能。数组是值类型,传递时会复制整个数组,而使用指向数组的指针(*[N]T)可直接修改原数据,适用于大数组或性能敏感场景。声明数组指针后,用&取地址赋值,可通过ptr[i]语法直接访问元素,无需显式解引用。函数传参时,数组指针仅传递8字节指针,效率远高于值传递的复制开销。相比切片,数组指针适用于固定长度、强调性能和内存布局可控的场景;而切片更灵活,适合动态长度操作。合理选择传递方式,能优化内存使用与程序效率。467 收藏