Go语言技术文章
-
Go 1.22 后,for 循环里用 := 声明的循环变量按每轮独立处理,很多闭包捕获问题不再需要手写 v := v。但迁移时仍要看 go.mod 版本、go vet 结果和兼容边界。356 收藏 -
普通用户能找到命令,sudo 后却提示 command not found,多半是 sudo 使用了更受限的 PATH 或 secure_path。先用 command -v 找真实路径,再用 sudo -V、visudo 和绝对路径验证。440 收藏 -
文章 · linux | 2个月前 | 日志 · Linux · shell · crontab · 运维排查 · Linux 定时任务 path Shell脚本 crontab 绝对路径 cron日志
crontab 日志里能看到任务触发,但文件没有生成,通常要先查输出日志、运行路径、命令绝对路径和 PATH 环境。把任务改成可回查的写法,比反复改脚本更稳。136 收藏 -
报表系统不要直接拿高权限账号连生产库。更稳的做法是用视图收敛字段,通过专用只读账号授予 SELECT,再用 SHOW GRANTS 和审计日志复查权限边界。412 收藏 -
Go 服务里把配置藏在全局变量和 init 里,短期省事,长期会让测试、灰度和排查变难。更稳的做法是启动时解析并校验配置,再通过构造函数显式传入依赖。124 收藏 -
Redis List 用 BRPOP 做任务队列时,Worker 取走任务后宕机会让任务直接消失。更稳的做法是先用 LMOVE 转到处理中队列,业务成功后再 LREM 确认。449 收藏 -
Golang · Go教程 | 2个月前 | HTTP · 文件下载 · Go教程 · 断点续传 Content-Range Go教程 HTTP Range ServeContent 206 Partial Content 视频拖动
用 Go 的 http.ServeContent 实现支持 Range 的文件响应,覆盖 206 片段返回、416 越界、Accept-Ranges、浏览器拖动和普通 200 兜底。250 收藏 -
Go 的 internal 包不是用来显得项目高级,而是给仓库内部代码加编译期边界。判断重点看复用范围、依赖方向、测试替身和未来演进成本。127 收藏 -
Go 里值接收者和指针接收者的选择,不只影响是否能修改对象,还会影响类型能不能满足接口。值方法通常同时属于值和指针的方法集,指针方法只属于指针的方法集。要修改对象、避免大结构体拷贝或保持方法接收者一致时,优先用指针接收者;小型不可变值可以用值接收者。449 收藏 -
用 PHP 写一个小型 HTTP 探测器,重点不是只把远程接口请求通,而是给连接设置超时、拿到状态码、记录耗时和错误信息,并让接口返回可验收的 JSON。文章用原生 stream_context_create 串起入口接口、请求函数、日志文件和验收清单,适合放进定时任务或后台健康检查。289 收藏 -
Go 项目里用 sync.Pool 降低临时对象分配时,如果对象归还前没有清理字段,下一次 Get 可能拿到带旧状态的对象,表现为用户数据串到别的请求、切片内容残留或缓存字段异常。稳妥做法是使用后先 Reset,再 Put;Get 后只做必要初始化,并且不要把仍在使用的对象提前放回池里。342 收藏 -
MySQL 里用 ORDER BY RAND() 做随机推荐,小表还能凑合,大表高并发下容易触发全表排序、临时表放大和 CPU 飙升。更稳的做法是先缩小候选集合,再用候选 ID 池、随机键或业务侧抽样把查询控制在索引范围内。378 收藏 -
Go 做大文件 CSV 导出时,不建议一次性把全量数据查到内存再拼成文件。更稳的方式是按批读取数据库、边读边写 csv.Writer,并通过 Flush、限流、超时和指标观察控制下载链路。251 收藏 -
Java 服务频繁 Full GC 时,先看老年代占用、停顿时间和业务错误,再抓取堆信息与线程状态。不要一上来放大堆或重启,优先保留证据、控制流量、回滚可疑发布,并用告警恢复情况确认处理结果。136 收藏 -
Golang · Go教程 | 2个月前 | HTTP服务 · Go教程 · 后端开发 · net/http WriteTimeout HTTP超时 Go教程 ReadHeaderTimeout IdleTimeout
Go HTTP 服务不要只靠默认超时。请求头、请求体、响应写入和空闲长连接各有边界,ReadHeaderTimeout、ReadTimeout、WriteTimeout、IdleTimeout 要分开设计。140 收藏