golang
已收录文章:197篇
-
必须手动构造multipart.Writer,禁用http.PostFile:后者将整个文件加载进内存易致OOM,不支持自定义Content-Type、额外字段及超时;正确做法是用multipart.NewWriter生成合法boundary,先WriteField再CreateFormFile,按序写入并用io.Copy流式传输,结尾调Close,且Content-Type必须设为w.FormDataContentType()返回的完整字符串。331 收藏
-
Go循环变量复用同一内存地址,闭包捕获的是变量引用而非值;所有迭代共享该地址,导致最终均读取终值。139 收藏
-
SELECTCOUNT()不能直接套在带LIMIT的查询里,因为LIMIT只限制返回行数,COUNT()统计的是结果集行数而非总匹配数;分页需先用独立COUNT(*)查询获取符合条件的总条数,再执行带LIMIT/OFFSET的数据查询,且两者WHERE条件与参数顺序必须严格一致。177 收藏
-
Vault的database/creds/路径属databasesecretsengine,不可用KVv2读取,必须调client.Logical().Read();该路径动态生成临时凭据,含lease_id、username、password及lease_duration,需手动续租防过期失效。497 收藏
-
Go无法真正零停机,必须通过net.Listener.File()导出fd、子进程用net.FileListener恢复、父进程Shutdown等待旧连接结束三者协同;直接ListenAndServe必因端口占用或SO_REUSEPORT调度不均导致connectionrefused或RST。403 收藏
-
中间件必须返回http.Handler,而非直接调用next.ServeHTTP();正确做法是用闭包捕获next并转为http.HandlerFunc,以支持链式挂载、复用及兼容主流路由器。242 收藏