Go语言技术文章
-
Go 流式响应设置写截止时间后仍像是阻塞,通常是卡在上游取数、通道或锁等待,或者截止时间没有穿透 ResponseWriter 包装层。本文拆开生成、写入、刷新和代理缓冲四个边界,并给出可退出的处理器写法。349 收藏 -
Go 代理要把上游响应逐块交给客户端时,可用 ResponseController 统一调用 Flush,并处理包装器、客户端断开、HTTP/2 与反向代理缓冲等边界。491 收藏 -
ResponseController.Hijack 在 HTTP/2 下返回 ErrNotSupported,根因是 HTTP/2 ResponseWriter 不提供 Hijacker 能力。本文说明 Unwrap 查找链、协议差异、错误判断与降级方案。182 收藏 -
Golang · Go教程 | 5天前 | go · Go教程 · net/http · WriteTimeout SSE 流式响应 SetWriteDeadline Go ResponseController
Go 流式响应不适合直接套用服务器级 WriteTimeout。本文说明如何用 ResponseController 为单个 Handler 覆盖写期限,在每次 Write 与 Flush 前设置短窗口、成功后清除,并处理 ErrNotSupported、中间件 Unwrap、客户端断开与代理缓冲。446 收藏 -
Golang · Go问答 | 5天前 | go · 文件上传 · Go教程 · net/http · Multipart表单 ParseMultipartForm mime/multipart Go文件上传 Go MultipartReader
MultipartReader 与 ParseMultipartForm 不是两种可叠加的读取方式,而是同一请求体的两种互斥所有权模型。本文结合标准库源码解释冲突标记、隐式触发入口、流式与整体解析示例,以及请求体上限、临时文件清理和中间件边界。409 收藏 -
Go 使用 mime/multipart 流式接收文件时,失败路径要同时处理临时文件、文件句柄和提交边界。本文用临时文件加原子重命名的方案,说明怎样让复制、关闭和提交失败都及时清理。251 收藏 -
上传中断后残留临时文件,通常是清理责任混淆或 defer 注册过晚。本文区分 ParseMultipartForm 与 MultipartReader 的文件所有权,并给出断流清理、所有权转移和崩溃回收写法。168 收藏 -
Golang · Go教程 | 6天前 | 文件上传 · Go教程 · net/http · 接口安全 · MaxBytesReader io.LimitReader 流式上传 Go MultipartReader multipart字段限制
用 MultipartReader 流式遍历表单字段,通过整包上限、字段白名单和 limit+1 哨兵读取分别限制文本与文件,并补齐资源清理、413 响应和审计测试。305 收藏 -
Go 的 multipart: message too large 不只是文件太大。本文区分请求体总量、非文件字段内存预算和文件临时落盘,给出 ParseMultipartForm 与 MultipartReader 的处理方案。293 收藏 -
使用 multipart.Reader、io.Pipe 和 multipart.Writer,Go 可以把上传文件按段转发到上游,不调用 ReadForm、不创建临时文件,并正确处理边界、背压、取消和错误传播。373 收藏 -
Go 1.27 允许结构体复合字面量直接使用提升字段名。本文用可迁移的 Go 示例说明新旧写法、字段选择规则,以及指针嵌入和字段重叠等编译边界。186 收藏 -
OpenTelemetry Go 的 Span 到达顺序不等于调用顺序。本文从 HTTP 埋点、Context 传播和暂存配对三个层面说明,怎样让乱序遥测仍能还原服务调用关系。148 收藏 -
下游接口少量请求只是变慢而没有失败时,可以用 Go 的 net/http 与 context 为幂等读取请求增加受控副本:设置对冲延迟、共享总截止时间,首个成功后取消其余副本,同时限制额外流量。103 收藏 -
容器里的 Go 程序需要断点调试时,关键是把调试器参数和应用参数分开,并用关闭优化的二进制启动 headless Delve。本文给出一套可迁移的构建、启动、连接和排障步骤。435 收藏 -
slog.LevelVar 在单进程内并发安全且会被 Handler 每条记录读取。动态修改只影响部分请求,通常是 Logger/Handler 未共享同一 LevelVar、存在双重过滤,或多实例只更新了一个进程。223 收藏