Go问答技术文章
-
Go 1.25 的 trace.FlightRecorder 适合捕获长时间运行服务中的短暂性能异常。本文从缓冲窗口、触发快照、go tool trace 分析和并发边界入手,说明什么时候该用它,以及如何控制内存和文件大小。240 收藏 -
Go slog.HandlerOptions.AddSource 会让 TextHandler 或 JSONHandler 把日志调用点写入 source 字段,但它需要计算调用栈位置。本文用一个可运行示例说明 source 的来源、包装函数对定位的影响、性能成本与脱敏边界。235 收藏 -
Go 的 os.Root.OpenInRoot 把文件打开范围限定在指定根目录内。本文用真实代码拆开相对路径、符号链接和错误分支,说明它适合解决什么路径逃逸问题,以及如何验证回退策略。235 收藏 -
Golang · Go问答 | 23小时前 | go · 密码学 · 安全编程 · 密钥管理 · crypto/ecdh · Go crypto/ecdh PrivateKey.Bytes NewPrivateKey 密钥导出
crypto/ecdh.PrivateKey.Bytes 返回私钥的原始编码,适合在明确的密钥序列化边界重新调用 Curve.NewPrivateKey;本文拆开复制语义、曲线长度校验和敏感字节生命周期,避免把原始私钥 bytes 当成通用密钥文件格式。235 收藏 -
解释 Go net/http 中 ResponseController.EnableFullDuplex 的适用边界,给出 HTTP/1 请求体与响应交错处理的最小示例、协议判断和中间件兼容检查。232 收藏 -
slog.Handler 的 WithAttrs 不只是把字段拼到日志里:实现自定义 Handler 时,属性如何分组、何时复制、如何保证并发安全,都会影响分配次数和输出一致性。本文用一个可运行的 Handler 说明这几个边界。231 收藏 -
os.DirFS 适合把目录暴露成 fs.FS,但它不是完整的安全沙箱。本文用相对路径和符号链接案例拆开根目录边界,比较 os.DirFS 与 os.OpenRoot 的使用场景,并给出检查清单。230 收藏 -
当文件名来自用户输入时,filepath.Join 只能处理字符串拼接,挡不住指向根目录外的符号链接。Go 1.24 提供的 os.OpenRoot 与 Root.Open 会在根目录范围内解析路径,本文用一个下载文件读取场景说明它能挡住什么、不能替代哪些权限控制。229 收藏 -
regexp.Regexp.LiteralPrefix 能返回正则表达式匹配必然拥有的字面前缀,但它不是完整的匹配判断。本文用请求路径筛选示例拆开 prefix、complete 与 MatchString 的边界,并给出可验证的安全用法。229 收藏 -
strings.Builder.String 返回后继续写,旧字符串通常不会被业务代码直接改写,但 Builder 可能复用底层缓冲区并触发扩容。本文用源码和小实验拆开共享存储、扩容与 Reset 的边界。228 收藏 -
围绕 Go net/http Cookie.Partitioned 说明 CHIPS 的设置方式、Secure 与 SameSite=None 的组合要求,以及浏览器兼容和降级核验边界。227 收藏 -
os.ReadFile 读配置失败时,问题通常不在读取动作本身,而在工作目录、路径拼接和错误分类。本文用一段可运行的 Go 示例拆开定位顺序,并给出能保留原始原因的错误返回方式。225 收藏 -
Go 的 net/http.MaxBytesReader 不只是一个 io.LimitReader:它返回可关闭的请求体,超限读取会得到 MaxBytesError,并可提示服务器关闭连接。本文用上传接口拆开限制位置、错误判断和连接处理边界。224 收藏 -
Golang · Go问答 | 1天前 | 标准库 · golang · 排序 · Slices · Go 比较函数 slices.SortFunc slices.SortStableFunc 排序不稳定
slices.SortFunc 排序结果看似不稳定,通常不是算法随机,而是比较函数没有满足严格弱序,或调用方把等价元素的原顺序当成了保证。本文用订单优先级示例拆开 cmp 的返回值、重复元素处理和需要稳定排序的边界。223 收藏 -
Go 的 os.ReadFile 会一次性把文件内容放进 []byte,适合小配置和短文本,不适合把大文件直接装进内存。本文用文件大小、读取方式和错误处理三个维度拆解内存暴涨原因,并给出 bufio.Reader、io.Copy 和分块处理的选择边界。220 收藏