golang
已收录文章:1649篇
-
在Golang中设计长连接心跳机制应结合deadline与keepalive。一、心跳机制用于检测连接存活,客户端或服务端定期发送心跳包,连续未响应则断开重连;二、Go的deadline控制读写超时,如SetReadDeadline设置读操作截止时间,超时返回timeout错误;三、TCPKeepalive是系统级探针机制,启用需调用SetKeepAlive(true)与SetKeepAlivePeriod设置探针间隔;四、推荐组合使用:应用层心跳快速响应,传输层keepalive作为兜底保障,建议参数关353 收藏
-
数组是固定长度的数据结构,而切片是对数组的封装,提供动态扩容能力。具体来说,数组声明时需指定长度,存储连续内存空间,而切片包含指向底层数组的指针、长度和容量,实现灵活操作;1.切片扩容策略为:容量小于1024翻倍,大于等于1024增加25%;2.扩容会引发内存分配和拷贝,影响性能,建议预分配容量;3.多个切片可能共享底层数组,修改一个会影响其他切片,需用copy避免副作用;4.使用建议包括优先使用切片、预分配容量、注意截取后的共享问题、减少频繁扩容,并理解数组与切片赋值行为差异。353 收藏
-
Golang的buildcache是从Go1.14引入的本地构建缓存机制,通过配置远程缓存服务器可实现团队级编译加速。使用远程buildcache可避免重复编译,多个节点共享编译结果,显著提升效率。搭建步骤包括:安装Go工具链、运行远程缓存服务、配置GOCACHE指向缓存地址。团队统一配置需做到:1.统一设置GOCACHE环境变量;2.使用固定Go版本;3.控制模块依赖一致性。实际使用中应注意网络延迟、缓存清理策略、权限控制及混合使用本地缓存以提高容错能力。353 收藏
-
指针接收者可修改原始数据且避免大结构体复制,适合多数场景;值接收者操作副本,适用于小型不可变类型。353 收藏
-
Golang的context包用于在goroutine间传递取消信号、截止时间和请求数据,核心是通过context.Context接口及WithCancel、WithDeadline、WithValue等函数实现上下文控制。353 收藏
-
使用http.MaxBytesReader限制请求体大小,防止内存溢出;通过中间件统一处理,结合ParseMultipartForm用于文件上传场景,并与客户端协同提升体验。353 收藏