golang
已收录文章:262篇
-
ssh.ClientConn不能直接执行命令,必须通过ssh.Client:ssh.Dial→ssh.Client→client.NewSession()→session.Run();认证失败多因密钥格式(不支持OpenSSH格式)或签名算法(如rsa-sha1被禁用)不匹配;密码认证需用ssh.Password类型;session.Run()必须检查返回err,非零退出码需用*ssh.ExitError断言获取;交互命令需RequestPty并显式设置Stderr和Signal。462 收藏
-
结论:用errors.Is判断错误语义相等,errors.As提取底层错误类型;因Go错误包装机制,直接==或typeswitch会失效。321 收藏
-
必须手动构造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 收藏