Go语言技术文章
-
使用 os/exec 启动子进程时,Cmd.Env 不是局部补丁而是环境集合。本文说明如何先设置 Cmd.Dir,再用 Cmd.Environ 获取当前配置下的完整环境,并安全追加变量,同时解释 Unix 下 PWD 的变化与跨平台边界。446 收藏 -
Go 的 URL.Path 是解码后的路径语义,EscapedPath() 面向转义表示;本文用 %2F 示例说明路由匹配、日志记录和请求拼接时该怎么选。275 收藏 -
用 Go httptest.NewRequest 构造 Handler 入站测试请求:绝对 URL 提供 Host,https scheme 提供非 nil 的 dummy TLS 状态,并说明请求体 ContentLength、Host 覆盖以及与真实 TLS 服务端的边界。479 收藏 -
用 Go httptest.ResponseRecorder 测试 Handler 时,区分 Code、Result 和 WriteHeader 的读取时机,准确断言最终状态码。415 收藏 -
Go CookieJar 在本地 HTTP 测试中不发送 Secure Cookie,通常是 http scheme 不满足 Secure 属性。本文拆开保存、筛选与客户端注入职责,说明 HTTPS 测试和普通 HTTP 单测的选择边界。249 收藏 -
Golang · Go教程 | 3星期前 | HTTP · 重定向 · Cookie · Go教程 · net/http · Cookie会话 Go CookieJar net/http/cookiejar Go重定向 http.Client.Jar
Go 的重定向请求想继续使用会话 Cookie,关键不是手工复制 Cookie,而是让同一个 http.Client 挂载 cookiejar.Jar。本文从两跳小项目出发,说明 Set-Cookie 如何进入 Jar、后续请求如何匹配,并梳理 Domain、Path、Secure、CheckRedirect 和客户端复用边界。424 收藏 -
Go mime.FormatMediaType 可以把媒体类型和参数 map 序列化为规范字符串,自动处理名称小写、参数排序、引号转义和非 ASCII 参数编码。本文给出最小写法,并说明非法输入返回空字符串的边界。184 收藏 -
Go 的 mime.ParseMediaType 能按 MIME 规则解析 Content-Type 参数。本文说明带引号、分号和转义值如何还原,参数名为何使用小写读取,以及语法错误和业务类型不匹配时怎样处理。186 收藏 -
Go 基准测试的计时控制实际位于 testing.B。本文用 B.Loop、StopTimer、StartTimer 和 ResetTimer 排除输入准备成本,并说明并行基准的限制。372 收藏 -
sync.OnceValue 会把初始化函数的返回值复用给后续调用,因此承载在返回值里的 error 也可能被持续复用。本文区分错误返回与 panic,给出显式重建 getter 和自定义可重试状态两种恢复策略,并说明并发交换与失败风暴边界。500 收藏 -
sync.RWMutex 不支持把 RLock 升级为 Lock,读锁未释放时申请写锁会等待自己释放读锁而形成阻塞。本文用原创代码对比拆分读写临界区与直接使用单写锁的改造方案,并说明重新检查、锁复制和对象生命周期边界。395 收藏 -
用 io.NewSectionReader 限定大文件分片范围,再通过 io.TeeReader 同时写入输出流并计算 SHA-256。本文给出边界检查、短读处理和多分片拆分的完整写法。369 收藏 -
用一个实现 io.Reader 的限速包装器接入 io.Copy,让文件或请求体的复制链路按字节速率发送,文章同时说明读取粒度、突发流量、错误处理和并发复用边界。200 收藏 -
结构体里放入 sync.Mutex 后,按值传参、赋值或返回都会复制锁的内部状态,可能造成异常解锁、数据竞争和锁失去保护对象。本文从根因、错误写法、指针改造和 go vet copylocks 检查四个方面说明安全设计方式。448 收藏 -
用 Go 的 io.LimitedReader 控制流式读取上限,说明 N、n、EOF 与底层输入的关系,并给出读取固定片段和继续处理剩余数据的实用写法。307 收藏