Go语言技术文章
-
validator的min/max标签对数值类型有效,但零值字段默认被跳过,需加required才校验;指针nil也被跳过,浮点数需防精度误差,建议金额用整数或decimal类型。106 收藏 -
Go命令提示“commandnotfound”是因PATH未包含Go安装路径的bin目录,需确认安装路径存在go可执行文件,并将对应bin目录加入PATH后重载配置。299 收藏 -
本文介绍如何通过Go原生推荐的分布式缓存库groupcache,为高开销的MySQL多表JOIN查询构建低延迟、强一致性的本地/集群级缓存层,显著提升遗留数据库场景下的响应性能。333 收藏 -
Base64编码解码需严格匹配StdEncoding或URLEncoding,流式编码必须调用Close(),解码前须清洗空白字符;StdEncoding等常量可直接使用,无需复用优化。447 收藏 -
应复用github.com/golang-jwt/jwt/v5并严格校验exp/nbf、统一401响应;KongGo插件须通过PDK获取上下文、调用pdk.response.exit终止流程,禁用net/http、os.Exit和panic。346 收藏 -
mockery命令装不上,goinstall报错找不到模块根本原因通常是Go模块代理或Go版本不匹配。mockery自v2.0起只支持Go1.18+,且必须用GoModules模式安装。先确认goversion≥1.18,否则升级Go(别用系统包管理器装的旧版)确保当前不在GO111MODULE=off状态:运行goenvGO111MODULE,输出应为on;如果不是,执行goenv-wGO111MODULE=on别用goget(已458 收藏 -
GOMAXPROCS无效或变慢的根本原因是它仅限制同时运行的OS线程数,而非协程数;盲目增大在I/O密集型场景会加剧线程切换开销,且需在main开头设置才生效,误设位置或动态调整反致调度异常。397 收藏 -
缓存双删不是简单删两次,第二次删除必须延迟执行以确保DB写入完成,且需幂等、解耦、监控返回值,并适配本地缓存与主从延迟。266 收藏 -
带缓冲channel能解耦生产者与消费者、避免协程阻塞、提升CPU利用率;其非阻塞特性适用于批量任务、I/O预取、限流和数据聚合;缓冲区大小需权衡吞吐、内存与调度,典型模式为生产者-消费者+WorkerPool,并配合close和select实现健壮控制。216 收藏 -
Go语言通过首字母大小写决定标识符的可见性,大写为导出,小写为包内私有,以此简化访问控制并促进清晰的API设计。该规则强化了封装性,支持通过接口与工厂函数实现松耦合和高内聚,避免暴露内部实现细节。在重构时需警惕误导出或隐藏API,应结合边界意识、代码审查和测试确保可见性正确,从而构建稳定、可维护的系统。383 收藏 -
必须显式限制递归深度,因Go无内置检查且栈溢出无法recover;应传入depth参数并校验,禁用defer/recover、SetMaxStack,优先迭代替代,测试需覆盖超深嵌套。268 收藏 -
解析SVG需处理命名空间:用bytes.ReplaceAll移除xmlns声明再解析;生成时手动拼接XML声明和DOCTYPE;d属性用xml:",chardata"避免转义;保存用os.WriteFile确保UTF-8无BOM。219 收藏 -
本文详解Go语言中如何通过select语句安全地并发执行任务(如FFT计算),在支持上下文取消的同时确保所有已启动但未完成的结果被完整收集,避免goroutine泄漏和channel死锁。164 收藏 -
Go语言中channel是goroutine间安全通信的核心,通过make创建,支持无缓冲和有缓冲模式,实现数据传递与同步控制。195 收藏 -
httputil.NewSingleHostReverseProxy是最轻量稳妥的反向代理起点,需正确设置Director、自定义Transport并处理Header、负载均衡与健康检查等细节。126 收藏