golang
已收录文章:1054篇
-
Go语言虽然自带垃圾回收机制,但并不意味着完全免疫内存泄漏。在高并发、长时间运行的服务中,不当的编码习惯或资源管理疏忽仍可能导致内存持续增长,最终影响服务稳定性与性能。排查内存泄漏并进行性能调优,是保障Go服务长期稳定的关键环节。常见内存泄漏场景与识别内存泄漏通常表现为程序运行时间越长,占用内存越高,且GC无法有效回收。以下是几种典型的泄漏情况:全局变量或缓存未限制大小:例如使用map存储数据但没有过期机制,随着时间推移不断累积键值对。goroutine泄漏:启动了gorout307 收藏
-
使用replace指令可替换Go模块依赖路径,如指向本地版本或fork仓库。语法为replace[模块名][版本]=>[目标路径][目标版本],常用于本地调试、使用修复分支、绕过网络问题等场景。执行gomodtidy后生效,但仅影响当前模块且建议发布前清理。307 收藏
-
GolangCI/CD流程包括代码提交、构建、测试、镜像构建与推送、部署及监控。使用GitLabCI/CD等工具通过YAML配置自动化流水线,结合Docker多阶段构建优化镜像大小,并利用缓存、并行任务提升构建速度。集成golangci-lint、gotest等工具保障代码质量,通过Kubernetes实现滚动更新或蓝绿部署,最后用Prometheus和Grafana实现应用监控,确保稳定运行。307 收藏
-
结构体方法使数据与行为结合,接口实现多态;Circle通过Area方法实现Shape接口,支持统一调用;值接收器用于读取,指针接收器用于修改;接口可组合,如ReadWriter;Go采用隐式接口(DuckTyping);空接口interface{}可存储任意类型,但需类型断言确保安全。307 收藏
-
使用net/http可发送GET和POST请求。首先调用http.Get或http.Post发起请求,需关闭resp.Body防止资源泄漏;处理响应时检查状态码并读取body;对于自定义头、超时等控制,应使用http.NewRequest配合http.Client;生产环境建议复用Client实例。306 收藏
-
Go语言中base64包提供Base64编解码功能,用于二进制转文本,如传输图片、JWT等;使用StdEncoding进行标准编码,URLEncoding处理URL安全场景,注意数据合法性与填充符处理。306 收藏