Go语言技术文章
-
Go 的 tls.ClientSessionCache 命中率低,不一定是 LRU 容量太小。先确认真的建立了新 TLS 连接,再检查缓存键、会话票据、证书和协议兼容条件,最后用 ConnectionState.DidResume 验证。428 收藏 -
Golang · Go问答 | 3星期前 | String · unicode · utf-8 · Go问答 · Go []rune转字符串 Go字符串长度 Go rune长度 Go UTF-8长度 utf8.RuneCountInString
Go 中 []rune 转回 string 后长度变化,通常是因为 len(string) 统计 UTF-8 字节而不是 Unicode code point。本文用原创示例拆开三种长度口径,并给出有效性检查与场景选择方法。428 收藏 -
Go 基准测试中的 b.N 会随测量阶段变化,缓存一次结果会让后续迭代跳过被测代码,导致 ns/op 失真。本文用代码说明正确循环、计时边界和缓存命中测试的拆分方法。428 收藏 -
Go io.CopyBuffer 的第二个缓冲区参数传入非 nil 但长度为 0 的切片时,会在复制开始前直接 panic。本文区分 nil、零长度和可用容量三种状态,解释入口检查、WriterTo/ReaderFrom 快路径与安全修复方式。428 收藏 -
Golang · Go问答 | 2个月前 | 并发 · channel · range · Go问答 · 并发退出 Channel关闭 Go问答 close channel range退出 发送方关闭
Go channel 关闭后仍然可以把缓冲区里的值读完,再继续读取会得到元素类型的零值和 ok=false;但关闭后的 channel 不能再写入,也不能重复关闭。真正安全的关键是让发送方统一负责关闭,并让接收方用 range 或 ok 值退出。427 收藏 -
一个 Go REST API 如果让每个接口自由拼错误 JSON,客户端很快就会遇到无法判断、重复提示和误重试。本文用统一错误信封、稳定错误码和请求追踪字段,整理一套可兼容旧客户端的设计方式。427 收藏 -
列表接口从 page 改成 cursor 时,真正容易出问题的不是 SQL,而是参数语义、错误响应和旧客户端兼容。本文用 Go net/http 设计一个可灰度迁移的游标分页接口,给出返回结构、边界校验、错误码和回归检查。427 收藏 -
Golang · Go问答 | 1个月前 | 性能优化 · Context · go并发 · 故障排查 · Go goroutine泄漏 context.WithCancel 请求生命周期 defer cancel
调用 context.WithCancel 并不自动消除 goroutine 泄漏。关键在于 cancel 的调用位置、子协程是否监听 Done,以及请求提前返回时能否及时结束。本文从一个持续增长的接口现场拆出根因、修复和复查方法。427 收藏 -
Go 的 os.File.Chmod 在 Unix 上修改权限位,在 Windows 上主要控制只读属性。本文用可运行示例说明 0o200、0o400、0o600 的平台差异、符号链接行为和跨平台验证方式。427 收藏 -
讲清 Go io.ReadFull 读取固定二进制头部时的缓冲区安排:先读定长头,再校验长度并分配载荷,区分 EOF 与 ErrUnexpectedEOF。427 收藏 -
Go select 没有 default 并不是异常:当所有通信 case 都暂时不可执行时,当前 goroutine 会等待;本文区分缓冲、关闭和 nil channel,并给出 default、超时与取消的选择方法。427 收藏 -
Go 用 json.Decoder 解码到 interface{} 时,JSON 数字默认会变成 float64。本文演示 UseNumber 如何保留数字字面量,再按需调用 Int64 或 String,避免大整数被浮点转换。427 收藏 -
Go 的 html/template 和 text/template 接口相近,但安全边界完全不同。本文从普通字符串、HTML 上下文、纯文本输出和 template.HTML 安全类型四个角度说明选择方法,并给出迁移与测试检查清单。427 收藏 -
Go 读取证书时,pem.Decode 返回 nil 与 x509.ParseCertificate 返回错误不是一回事。本文用分层代码、错误阶段和边界表定位 PEM 外层格式与 DER/X.509 内容问题。427 收藏 -
Go fs.Glob 的设计就是忽略目录读取时的 I/O 错误,默认只把非法匹配模式作为返回错误。本文拆解 GlobFS 与 ReadDir 分支,并给出用 WalkDir 保留目录错误的处理方案。427 收藏