Go语言技术文章
-
Golang · Go问答 | 1星期前 | 连接池 · 性能排查 · Go问答 · net/http Go HTTP/2 MaxConcurrentStreams StrictMaxConcurrentRequests 请求排队
Go HTTP/2 请求排队通常是单连接活动流达到对端配额,但也可能来自业务信号量或流控。本文说明如何定位等待位置,并联合调整服务端流上限、客户端连接策略和下游并发保护。188 收藏 -
Golang · Go问答 | 6天前 | 标准库 · 错误处理 · Go问答 · Go MIME Content-Type charset boundary mime.ParseMediaType 参数键
Go mime.ParseMediaType 会把媒体类型和参数键规范化为小写,但参数值保留原大小写。本文说明 charset、boundary 的读取方式、错误边界,以及 FormatMediaType 的往返注意点。188 收藏 -
Go slog 想让 API logger 和后台任务 logger 使用不同最低级别,应分别创建 handler 和 HandlerOptions;固定阈值传 slog.Level,运行时调整使用各自的 slog.LevelVar。187 收藏 -
Go maps.Keys 返回的是键迭代器,不保证每次调用顺序一致。无序诊断可以直接遍历;日志、快照、接口文本和测试若要求稳定结果,应使用 slices.Sorted 或业务比较器显式建立顺序。187 收藏 -
Go embed 遇到多个目录中的同名文件时,通常不是文件名本身冲突,而是嵌入路径和变量类型用错。本文用 embed.FS、完整路径和构建清单说明如何稳定处理。187 收藏 -
Go读取ZIP时,不能把压缩包内的Name直接拼接到输出目录。本文用archive/zip、path.Clean和filepath.IsLocal组合校验相对路径,说明ErrInsecurePath、反斜杠、盘符与目录条目的处理边界。187 收藏 -
用 Go 的 fs.Sub 把 embed.FS 中的 web 子目录变成独立根目录,示范模板和 HTTP 文件服务接入方式,并说明路径、错误处理、符号链接与测试边界。187 收藏 -
Go 的 fs.ValidPath 校验的是 io/fs 虚拟文件系统名称:必须是 UTF-8、非根式、以正斜杠分隔,不能含空段、点段或父目录段,只有“.”可表示根目录。本文说明它与 filepath、go:embed 模式的区别,并给出安全拼接和测试写法。187 收藏 -
binary.Varint 的第二个返回值小于零表示 64 位溢出,绝对值是已读取字节数。本文拆解三态返回、缓冲区推进、ReadVarint 选择与边界测试。187 收藏 -
通过一个可运行的 Go 内存索引示例,讲清 RWMutex 的读写边界、不可变条目约定、写前准备、读快照、整表替换,以及竞态检测和基准测试方法。187 收藏 -
Go 的 runtime/secret 是实验性能力,适合把短生命周期令牌处理限制在 secret.Do 内;本文说明构建开关、堆与栈擦除边界、返回值设计及平台限制。187 收藏 -
用 Go reflect 读取结构体字段标签时,先统一处理指针与结构体类型,再结合 StructField.Tag 的 Get 或 Lookup 读取标签,并正确拆分 json 等逗号选项。186 收藏 -
用 go.work 组织多个本地 Go 模块,说明工作区 replace 的覆盖关系,并给出 GOWORK、go list 与发布前收拢配置的检查方法。186 收藏 -
Go x509.Certificate.VerifyHostname 忽略旧版 Common Name,是因为主机名校验应使用证书的 SAN。本文区分 DNS SAN、IP SAN 与证书链校验,并给出迁移和排查清单。186 收藏 -
CrossOriginProtection 并不会仅因缺少 Origin 而拒绝请求。本文结合 Go net/http 当前规则,说明 Sec-Fetch-Site、Origin、Host、请求方法与 403 排查方法。186 收藏