Go语言技术文章
-
Golang · Go问答 | 1个月前 | 并发 · go · pprof · 性能排查 · 可达性 goroutineleak goroutine 泄漏 runtime/pprof Go 1.27
Go 1.27 将 runtime/pprof 的 goroutineleak profile 作为正式能力,但它依赖垃圾回收可达性判断,并不能覆盖所有永久阻塞。本文用全局 channel 场景拆解它能发现什么、为什么会漏报,以及工程上如何补查。351 收藏 -
Go 默认会按操作系统的解析规则查找域名。需要固定 DNS 服务器时,可以给 net.Resolver 配置 Dial 回调,再把它接入 net.Dialer.Resolver,让 LookupHost 或 HTTP 客户端使用同一套解析策略。351 收藏 -
Go 的 os.CreateTemp 返回时文件仍处于打开状态。Windows 上把路径交给另一个程序前,必须先关闭 Go 文件句柄,再等待外部程序完成后清理临时文件。351 收藏 -
Go net/http 重定向会复制普通请求头,但 Authorization、Cookie 等敏感头有安全边界。本文用 CheckRedirect、主机白名单和 Cookie Jar 说明如何保留必要 Header。351 收藏 -
设置 GOOS 和 GOARCH 只改变 Go 的目标平台,不会自动提供目标平台的 C 编译器、头文件和库。本文按 cgo 开关、CC 工具链、编译与链接错误四层排查交叉构建失败。351 收藏 -
Golang · Go问答 | 3星期前 | 错误处理 · net/http · HTTP客户端 · Go问答 · Go clienttimeout http.Client Timeout Go 请求超时 Go url.Error 超时 Go HTTP 客户端时限
Go 的 clienttimeout 通常对应 http.Client.Timeout。本文说明它覆盖的请求范围、如何从 client.Do 返回值中判断超时,以及它与 context 和 Transport 分段时限的区别。351 收藏 -
解释 Go crypto/rand.Read 的完整填充保证,并用 io.ReadFull 处理自定义 Reader 或通用 io.Reader 的短读,避免把不足字节的数据误当成完整令牌。351 收藏 -
Go strings.Trim 的第二个参数是字符集合,不是完整子串。本文用边界示例说明 Trim、TrimPrefix、TrimSuffix 与 TrimSpace 的区别,避免裁剪协议前缀和业务标记时误删内容。350 收藏 -
go mod verify 检查本地模块缓存是否仍与 go.sum 记录一致,而 go.sum mismatch 是下载或校验阶段发现模块哈希不匹配。本文按校验对象、缓存边界和排查命令拆开说明。350 收藏 -
Go http.Transport 设置 DisableKeepAlives 后吞吐下降,通常是连接复用被关闭,重复承担建连、TLS 握手和连接调度成本。本文解释它与 TCP keepalive 的区别,并给出复用、限额和清理空闲连接的配置取舍。350 收藏 -
Go 的 initialization cycle 不是运行时偶发错误,而是包级变量的依赖无法排出合法初始化顺序。本文用直接引用、函数体传递引用和三种拆环方案说明如何定位与修复。350 收藏 -
Go 文件扫描中,os.Stat 会跟随符号链接返回目标对象;需要识别链接本身时应改用 os.Lstat,并结合 ModeSymlink、错误处理和业务决策选择正确的 API。350 收藏 -
Go ServeMux 在模式互相重叠且谁都不更具体时会在注册阶段 panic。本文用请求集合规则解释路径变量冲突、定位方法、重构策略与测试边界。350 收藏 -
讲清 Go heap profile 中 inuse_space 与 alloc_space 的统计口径、适用症状、增量采集方式和误判边界,帮助区分内存留存与分配抖动。350 收藏 -
浏览器会在请求中带上 Sec-Fetch-Site 等 Fetch Metadata。用一层 Go 中间件先区分 same-origin、cross-site 和缺失请求头,再与 CSRF、Origin 校验配合,可以为敏感接口补上一道跨站访问边界。349 收藏