Go语言技术文章
-
解释 Go runtime.SetFinalizer 为什么不是可靠的资源释放器,结合对象可达性、GC 时机、终结器链和 Close 设计给出可验证的使用边界。362 收藏 -
Go 1.23 的 unique.Handle 可以为可比较值建立全局唯一句柄,适合把重复的不可变配置或标识压缩成便宜的句柄比较。本文从最小示例出发,核对类型约束、Value 的浅拷贝语义、句柄生命周期和缓存命中边界。475 收藏 -
Go 1.25 新增的 sync.WaitGroup.Go 把 goroutine 启动与计数绑定起来。本文用批量任务示例讲清启动时序、Wait 边界、panic 约束和异常收口方式。434 收藏 -
Go 标准库的一次性初始化函数适合把昂贵且只需执行一次的结果封装成并发安全调用。本文从配置加载和失败传播两个场景入手,演示最小写法、panic 语义、Go 版本边界和测试方法。337 收藏 -
Go 的 sync.Cond 适合让 goroutine 等待一个由共享状态表达的条件。本文用一个有界任务队列拆开 Wait、Signal 与 Broadcast 的正确顺序,并补上退出、空队列和误唤醒后的核对方法。105 收藏 -
Go slog.LevelVar 适合把日志级别做成可并发更新的运行时开关。本文用一个 HTTP 管理入口演示 LevelVar、Handler 与回滚配置的配合,重点核对动态生效、并发读取和错误配置不污染当前级别。255 收藏 -
Go 的 http.Transport.Clone 适合从一份稳定的连接配置派生客户端,但它不会替你合并请求级 Header,也不该被当成共享运行状态的复制器。本文从连接池、Header 隔离和并发改造三个边界拆开 Clone 的正确用法。491 收藏 -
Go 的 slog.LevelVar 适合把日志级别做成可热更新的开关。本文从 Handler 如何读取级别讲起,给出并发修改、配置回滚和测试验证的最小写法。364 收藏 -
Go 服务把租户路径和用户输入拼成下载链接时,url.JoinPath 会清理 ./ 与 ../,却不会替你确认用户是否越过了业务根目录。本文用最小示例拆开 PathEscape、JoinPath 和边界校验的职责。127 收藏 -
Go 的 Cmd.WaitDelay 用来限制子进程退出后 I/O 管道迟迟不关闭造成的 Wait 阻塞。本文用一个可运行的小实验拆开超时、管道关闭和退出状态的关系,并给出安全的错误判断方式。346 收藏 -
Go HTTP/1 服务处理流式上传时,如果边读请求体边写响应,默认行为可能让两边互相等待。本文用 ResponseController.EnableFullDuplex 拆开触发条件、最小写法、HTTP/2 差异和超时边界。100 收藏 -
Go 1.23 引入的 os.CopyFS 可以把 embed.FS 等 fs.FS 内容复制到磁盘,但不会覆盖已有文件。本文用一个配置目录示例讲清创建权限、覆盖错误、符号链接和可重复部署的核对方法。374 收藏 -
Golang · Go问答 | 3星期前 | 标准库 · go · 正则表达式 · 性能 · Go MustCompile regexp.MatchString regexp.Compile 并发复用
Go 的 regexp.MatchString 适合快速判断,但把 regexp.Compile 放进热循环会反复解析模式。本文对比一次编译、MustCompile、动态模式和并发复用的边界,给出可运行的性能与输入验收方法。382 收藏 -
io.MultiWriter 会按传入顺序逐个写入,某个 Writer 返回错误或短写入后立即停止,不会继续后面的目标。本文用日志分流场景拆解部分写入、ErrShortWrite、重试与一致性边界。279 收藏 -
Go HTTP 客户端偶发变慢时,只看总耗时很难判断问题在 DNS、建连、TLS 还是服务端首字节。本文用 net/http/httptrace 的 ClientTrace 串起关键回调,区分连接复用与新建连接,并给出可落地的耗时记录和排查边界。467 收藏