Go语言技术文章
-
Go modules 下载依赖超时时,先区分代理、版本库直连和校验服务,再按回退规则切换 GOPROXY,避免把关闭校验当成万能方案。437 收藏 -
Golang · Go问答 | 3星期前 | 标准库 · 错误处理 · Go问答 · Go encoding/hex DecodeString InvalidByteError ErrLength 十六进制解码
Go 的 hex.DecodeString 失败时,先用 ErrLength 区分奇数长度,再用 InvalidByteError 识别非法字符,最后扫描原始输入得到字节偏移,并用脱敏日志保留可操作的排障信息。282 收藏 -
Go 路径在 Windows 正常、Linux 失效,通常是把反斜杠写死在字符串里。本文解释 filepath.Join、FromSlash、ToSlash 与 path.Join 的边界,帮助你区分本地文件路径、可移植路径和 URL 路径。246 收藏 -
Go 里 os.Open 返回成功并不代表后续 File.Read 一定成功。本文按 Open、Read、Close 三个阶段拆开权限错误,使用 PathError、errors.Is 和 os.IsPermission 定位真正失败的操作,并给出不会覆盖主错误的写法。350 收藏 -
Go Unix socket 连接失败应先区分路径不存在、权限拒绝和连接拒绝。在 Linux 路径型 socket 中,按客户端身份检查父目录搜索权限、socket 写权限、监听状态与挂载视图,并将最小访问范围固化到服务创建与重启流程。289 收藏 -
Go 处理 IPv6 地址和端口时,冒号会让普通 host:port 拼接失去边界。本文从裸 IPv6、重复方括号、net.JoinHostPort、net.SplitHostPort 和 zone 标识几个角度,给出定位解析失败与统一拼接的实用方法。310 收藏 -
从 DNS 解析与 TCP/TLS 建连的分层排查开始,使用 net.Resolver 配置自定义 DNS 连接,并把它接入 http.Transport。219 收藏 -
Go TLS 握手失败时,先用显式握手固定错误阶段,再沿错误链识别证书校验问题,并核对 MinVersion、MaxVersion 与最终 ConnectionState.Version,从而区分身份校验失败和协议版本不兼容。284 收藏 -
Go HTTP 偶发 503 应通过可信请求标识关联代理最终状态、上游尝试和应用拒绝日志,区分响应生成层与依赖根因。给出 Nginx 日志配置和 Go 失败分支示例,并说明错误拦截、缓存、超时包装及重试的判断边界。303 收藏 -
Go 客户端偶发 EOF 时,先区分响应头已收到但响应体中途断开,还是请求阶段根本没有建立完整响应,再结合已读字节、Content-Length、请求标识和服务端日志判断是否为服务端提前关闭,最后只对可安全重建的幂等请求有限重试。200 收藏 -
Golang · Go问答 | 3星期前 | JSON · 基准测试 · go · pprof · 性能排查 · 内存分配 encoding/json pprof Go JSON JSON性能 go test benchmark
Go JSON 编解码慢时,不要只看 ns/op。本文用固定输入、benchmem、CPU profile 和内存 profile,区分 JSON 计算热点、短命对象分配与存活堆增长,再按证据选择优化动作。102 收藏 -
Golang · Go问答 | 3星期前 | go · 垃圾回收 · 性能排查 · 运行时 · 内存分配 GOGC Go GC runtime.MemStats HeapAlloc TotalAlloc NumGC
Go GC 频繁触发时,先用 TotalAlloc 增量判断分配速率,再对照 HeapAlloc、HeapObjects 和 NumGC,区分短命对象过多、存活堆增长与调参边界。本文用一个最小采集器给出判断路径。395 收藏 -
Go heap 默认存活视图可能看不到已回收的短命对象。切换 alloc_space、alloc_objects,并结合业务观察窗口、MemProfileRate 与实际堆分配,区分分配压力和存活容量,避免误判泄漏或盲目提高采样精度。483 收藏 -
Go pprof 的 CPU 表里,flat 表示函数自身占用的采样,cum 表示函数连同下游调用链的累计采样。本文用调用关系、命令和误区说明两列该怎样配合阅读。447 收藏 -
Golang · Go问答 | 3星期前 | 基准测试 · go · testing · 性能优化 · 性能测试 CPU count GOMAXPROCS testing.B Go benchmark benchtime
Go benchmark 结果波动大时,应先固定计时边界、-benchtime、-count、-cpu 和机器状态,再用多份样本判断优化是否稳定。本文给出 testing.B、GOMAXPROCS 和环境噪声的排查方法。356 收藏