Go语言技术文章
-
Go 的 URL.RawPath 只是 Path 的可选编码提示。只有编码形式有效且反转义后与 Path 完全一致,EscapedPath 才会采用它;否则会忽略 RawPath,并从 Path 重新生成转义结果。370 收藏 -
Go 为 exec.Cmd 设置工作目录后,应先赋值 Cmd.Dir,再调用 Cmd.Environ 并写回 Cmd.Env。本文解释正确顺序、重复环境变量覆盖规则,以及 PWD、os.Getwd、getcwd 在符号链接路径下的差异。142 收藏 -
解释 Go url.JoinPath 为什么会在输出中保留或生成百分号编码,区分 URL.Path、RawPath、EscapedPath、PathEscape 与 QueryEscape,并处理斜杠和点段边界。140 收藏 -
用一个父子进程示例说明 Go os/exec 的 ExtraFiles 如何把文件传到固定的 3+i 描述符,覆盖子进程读取、关闭时机、EOF 排查与 Windows 不支持边界。287 收藏 -
Go 服务端关闭 HTTP/2 后,客户端仍可能复用已经建立的 HTTP/2 连接。本文区分协议策略与连接生命周期,给出 Server.Protocols、Transport 清理和 httptrace 验证方法。479 收藏 -
讲清 Go exec.CommandContext 如何在启动前替换 Cmd.Cancel,用协作式信号代替默认 Kill,并结合 WaitDelay、os.ErrProcessDone 与 ErrWaitDelay 处理退出边界。455 收藏 -
FileTransportFS 常与 file 协议绑定,是因为 http.Transport 按 URL scheme 分派已注册的 RoundTripper,而不是该函数内部强制拒绝其他协议。本文讲清 Go 1.22+ 的正确注册方式、直接替换 Transport 的区别、路径规则和迁移检查项。465 收藏 -
Go os/exec 的 WaitDelay 不只是命令超时参数,它还限制子进程退出后遗留 I/O 管道的收尾等待。本文用 CommandContext、ErrWaitDelay 和输出管道示例说明配置方式与边界。408 收藏 -
解释 Go MaxBytesReader 在请求体超限时如何返回 MaxBytesError、通知服务器关闭连接,以及 ResponseWriter 包装和中间件顺序为何会影响该信号。399 收藏 -
Go url.URL 的 Opaque 用于表示 scheme:opaque 形式的非层级 URI。本文对比 mailto、urn、data 与普通 HTTP 地址,说明字段读取、直接构造和误用边界。435 收藏 -
解释 Go net/http ResponseController.Flush 返回 ErrNotSupported 的原因,拆解 ResponseWriter 包装、Unwrap、FlushError 和代理缓冲边界。197 收藏 -
url.ParseQuery 会把重复键保存为字符串切片;未编码分号会让对应片段无效,但有效参数仍可能保留。本文讲清读取方式、错误处理与 HTTP 接口边界。455 收藏 -
FileHeader.Filename 是客户端提交的展示元数据,即使 Go 做了基础名处理,也不应直接决定服务器路径。本文用随机存储名、扩展名白名单和受控目录完成安全保存。412 收藏 -
讲清 Go net/url 中 Path、RawPath 与 EscapedPath 的关系,演示如何保留合法编码斜杠,以及改写路径后如何避免 RawPath 失配。153 收藏 -
ReadForm 的 maxMemory 主要约束文件内容,普通字段仍以字符串保存在内存。本文拆解其预算边界,并给出请求体、字段与临时文件的安全限制方法。202 收藏