-
Databaseperservice落地需确保每个服务独占逻辑数据库(独立实例优先,共用实例时须严格按schema隔离并限制权限),Go中通过单DB实例注入、DSN校验、静态检查防越界,跨服务查询用API调用、冗余字段或读服务替代JOIN,迁移时清理共享表、禁用外键、双写过渡并明确数据所有权。
-
Go文件AES加密应使用crypto/cipher封装而非直接调用crypto/aes,需随机IV(前置存储)、PKCS#7填充(手动实现)、分块流式加解密(如CTR),禁用ECB,注意文件权限(0600)、io.Copy陷阱及路径校验。
-
Go的http包默认支持长连接,通过自定义Transport设置MaxIdleConns、MaxConnsPerHost、IdleConnTimeout等参数可优化客户端连接复用;服务端需配置ReadTimeout、WriteTimeout和IdleTimeout以合理管理空闲连接;对于SSE等流式场景,应使用http.Flusher定期推送数据并监听context.Done()处理断连;结合CloseIdleConnections和优雅关闭避免资源泄漏。
-
runtime.Gosched用于协作式让渡调度权,避免纯计算循环导致goroutine饥饿;应在长循环中合理调用,但Go1.14+抢占增强后已非必需;CPU利用率低时应排查I/O阻塞、锁竞争或GOMAXPROCS设置等根本原因。
-
Go标准库无内置LRU,需用container/list+map+sync.RWMutex实现;sync.Map不适用因无法维护访问序、不能原子执行查map/移节点/返回值,且并发MoveToFront会panic;正确做法是map存*list.Element,Element.Value为含key/value的结构体,读写加锁粒度要细,容量控制须先插后删,四者并发对齐才稳定。
-
默认KubernetesScheduler在高并发下变慢,因其单体同步设计、粗粒度锁、重复计算及未裁剪的15+插件;自定义调度器应复用client-go与schedulerframework,增量更新快照、预过滤节点、禁用非必要插件;Go层面需调优GOMAXPROCS、关闭自动GC、复用对象并禁用pprof;验证需结合原生指标、批量压测与informer配置检查。
-
Go不执行NetworkPolicy,而是通过client-go操作API声明策略;策略由CNI插件(如Calico)执行,需指定命名空间、标签、端口等,遵循“默认拒绝”原则。
-
结构体传参推荐用指针,尤其当结构体较大或需修改内容时;小结构体且无需修改可用值传递。1.大结构体用指针避免复制开销,提高性能,如Person含多个字段;2.小结构体如Point可值传递,逻辑清晰安全;3.实际建议多数情况用指针,可加const防止修改,兼顾性能与可维护性。
-
mgo的Collection.Find()方法仅接受单个查询参数,不能传入多个bson.M对象;需将所有条件合并为一个bson.M结构,并在$elemMatch中使用正确的字段路径(应为"process_name"而非"process.process_name")。mgo的`Collection.Find()`方法仅接受单个查询参数,不能传入多个bson.M对象;需将所有条件合并为一个bson.M结构,并在`$ele
-
Ent不支持图数据库Schema构建,因其专为PostgreSQL/MySQL/SQLite等关系型数据库设计,缺乏顶点/边抽象、不生成CREATEVERTEX/EDGE语句,且Edge仅表示外键关联而非图语义。
-
最可靠方法是用net.Dial("udp","8.8.8.8:8")获取默认路由网卡的IPv4地址,因其由系统自动选择出口网卡,避免回环、链路本地及容器虚拟地址干扰,再通过To4()强制转IPv4并加超时控制。
-
SQL注入必然发生而非可能,因用户输入未过滤即拼接会导致恶意代码执行;Go通过占位符与预编译隔离数据与逻辑,但须正确使用参数化接口,禁用字符串拼接,表名列名等动态部分需白名单校验。
-
Go标准库math/rand不支持直接加权随机,因其rand.Float64()仅生成[0,1)均匀浮点数,需手动将权重映射为区间并用随机数落点判断;线性遍历累加在大数据量时为O(n)瓶颈,推荐前缀和+sort.Search实现O(logn)高效查找。
-
defer无法在运行时取消,但可通过闭包+布尔标记控制其内部逻辑是否执行;或推迟defer语句的执行位置实现“条件注册”;panic不会跳过defer,反而会按栈逆序触发。
-
Stripe官方GoSDK是唯一推荐方式,PayPal仅支持v1或v2SDK且不兼容;双网关Webhook须物理隔离路由,验签、响应格式及时钟容忍度均不同;金额单位、币种大小写、无小数货币校验等需严格遵循规范。