golang
已收录文章:202篇
-
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 收藏
-
设计有上限、有退避、有幂等保护的重试策略。456 收藏
-
多模块微服务架构通过合理划分业务边界和依赖管理提升可维护性。1.项目按业务域拆分为多个module,如user-service、order-service和shared组件;2.各module通过go.mod定义依赖,开发时可用replace指向本地共享模块;3.使用go.work实现工作区模式,简化多模块协同开发;4.共享模块应轻量且版本化,服务间通过API通信而非直接引用,确保解耦与独立交付。452 收藏
-
atomic提供高效无锁同步,适用于计数器、状态标志等场景;通过Load、Store、Add和CAS等操作实现并发安全,如原子增减和单例模式初始化,避免数据竞争且性能优于互斥锁。452 收藏
-
数组转切片可直接用[:]语法,共享底层数组;切片转数组需确保长度足够,推荐用copy安全转换,避免强制类型转换导致崩溃。451 收藏
-
使用接口抽象或输出重定向可有效测试Go日志。1.定义Logger接口并注入,测试时用MockLogger捕获输出;2.重定向标准log到buffer进行断言,需注意并发安全;3.第三方库如zap提供zaptest等工具支持精细控制与自动验证,提升可观测性。450 收藏