Go教程技术文章
-
围绕 Go database/sql 连接池设置 MaxOpenConns、MaxIdleConns 与生命周期参数,并用 DBStats 的等待增量判断容量不足、连接占用和归还路径问题。428 收藏 -
Go WebSocket 握手前应使用 websocket.Upgrader.CheckOrigin 精确校验 Origin。本文说明 Origin 与 Host 的边界、白名单写法、常见放行反例,以及来源校验与身份鉴权的区别。401 收藏 -
Go plugin 通过运行时 Open 和 Lookup 装载独立插件,单可执行文件则在编译期收敛部署物。本文从平台、工具链、符号契约、安全和回滚边界比较两种方案,并给出上线决策清单。476 收藏 -
用 Go 的 net/http/httputil.ReverseProxy 记录入站请求、改写后的出站请求、后端响应和代理错误,说明 DumpRequestOut、Rewrite、ModifyResponse 与 ErrorHandler 的职责边界。455 收藏 -
Go build tags 与平台文件后缀在构建时选择源文件。本文通过互斥的 Linux、Windows 和通用实现,说明目标平台、包级排障命令、回退方式与跨平台交付边界。175 收藏 -
Go cgo 不会替 C 堆自动回收内存。本文从 C.CString、C.CBytes 和 C 侧返回指针入手,建立分配与释放成对出现的责任边界,并说明 Go 指针不能被 C 长期持有的规则。335 收藏 -
从 go.mod、go.work 和 GOTOOLCHAIN 三个入口理解 Go toolchain 自动选择,说明 go 与 toolchain 的区别,以及 local、auto、path 和固定版本模式的取舍。485 收藏 -
Go 多模块开发时,可以用 go.work 将多个独立 go.mod 纳入同一工作区,让业务模块直接使用本地依赖模块。本文对比 go.work、replace 和正式版本依赖的边界,并给出拆分与发布建议。179 收藏 -
Go modules 用主模块 replace 将依赖源码映射到本地模块根目录,保留原 import 与 require。通过原创联调示例说明版本范围、工作区影响、CI 路径风险和撤销替换的方法。292 收藏 -
Go PGO 的关键不是随便拿一份 CPU profile,而是让 profile 代表真实工作负载。本文从采集范围、统一采样窗口、多实例合并到 default.pgo 和 -pgo 构建,整理一套可以持续更新的准备方法。205 收藏 -
Go pprof 的 heap profile 既能看当前仍占用的对象,也能看累计分配。本文从 inuse_space 与 inuse_objects 入手,结合 top、list、调用图和基线对比,定位长期保留对象并避开采样误判。257 收藏 -
Go 基准测试中,如果目标函数的返回值完全没有用途,编译器可能把无副作用计算删掉。Go 1.24+ 优先使用精确的 b.Loop() 循环;兼容旧式 b.N 时用包级结果汇总变量保住被测结果,并把初始化和计时边界分开。324 收藏 -
围绕 testing.F、f.Add、f.Fuzz 和 testdata/fuzz,说明 Go fuzz 测试怎样限制参数边界、控制探索预算,并把失败输入沉淀为普通 go test 可复现的回归样例。316 收藏 -
Golang · Go教程 | 2星期前 | go · 文件读取 · Go archive/zip Reader.RegisterDecompressor 自定义压缩方法 ZIP 解压 Go 文件读取
用 archive/zip.Reader.RegisterDecompressor 为指定 ZIP 压缩方法接入项目解压器,说明方法编号、Reader 级注册、条目读取和 Close 生命周期的边界。279 收藏 -
用 Go testing.T.Run 把表格驱动测试组织成可读、可筛选的层级子测试,说明命名路径、嵌套分组、go test -run、t.Cleanup 与并行测试的边界。155 收藏