Go语言技术文章
-
文章 · php教程 | 2个月前 | nginx · php-fpm · php教程 · 502错误 · 故障复盘 · 慢日志 · Nginx php-fpm 性能排查 PHP教程 502 Bad Gateway pm.max_children 慢日志
PHP-FPM 子进程打满时,502 往往不是单纯把 pm.max_children 调大就能解决。更稳的排查顺序是先看 Nginx upstream 错误和 FPM 状态页,再用慢日志找到长时间占用子进程的请求,最后把容量、慢查询、限流和告警一起补齐。407 收藏 -
Golang · Go教程 | 2个月前 | 文件下载 · Go教程 · 审计日志 · 接口安全 · 路径穿越 · Go 文件下载 审计日志 HTTP接口 filepath.Clean 安全下载 路径穿越
Go 文件下载接口不能只把用户传入的 path 直接 Join 后打开。安全做法是固定下载根路径,先做 Clean,再确认最终路径没有越界,同时配合扩展名白名单、大小限制、只读打开和审计记录。362 收藏 -
Golang · Go问答 | 2个月前 | goroutine · Context · 超时控制 · Go问答 · 协程泄漏 · Go Goroutine 超时控制 context.WithTimeout 取消信号 协程泄漏 ctx.Done
context.WithTimeout 只会在到期后关闭 Done 通道并返回取消原因,不会直接停掉 goroutine。Go 代码要把 ctx 传进阻塞调用,并在 select、循环和清理逻辑里主动响应取消信号。147 收藏 -
Golang · Go教程 | 2个月前 | Go教程 · HMAC · API安全 · 接口签名 · 防重放 · timestamp Go 中间件 API安全 HMAC 接口签名 nonce 防重放
Go 接口签名不只是把参数算个 HMAC,还要把 timestamp、nonce、密钥保管、权限收窄和审计日志连起来。文章用一个可落地的中间件示例讲清防重放校验链路和常见坑。273 收藏 -
Golang · Go教程 | 2个月前 | CI/CD · gitHub actions · Go教程 · 自托管 Runner · 持续集成 · Go 持续集成 CI Go test GitHub Actions self-hosted runner 自托管 runner
GitHub Actions 自托管 runner 开始恢复最低版本要求,Go 项目不要只盯着能不能跑 go test,而要盘点 runner 版本、镜像来源、负载分层和升级节奏,避免测试、构建、发布流水线在强制执行窗口里排队或失败。340 收藏 -
Golang · Go问答 | 2个月前 | 闭包 · go · Go问答 · 循环变量 · Go1.22 · 代码迁移 · 闭包 循环变量 go vet Go问答 Go 1.22 for range loopclosure
Go 1.22 后,for 循环里用 := 声明的循环变量按每轮独立处理,很多闭包捕获问题不再需要手写 v := v。但迁移时仍要看 go.mod 版本、go vet 结果和兼容边界。356 收藏 -
文章 · linux | 2个月前 | Linux · Path · sudo · 运维排查 · 权限配置 · Linux sudo path 绝对路径 command not found secure_path visudo
普通用户能找到命令,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教程 · Range请求 · ServeContent · 断点续传 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教程 | 2个月前 | 日志 · HTTP · 超时控制 · php教程 · 接口监控 · 请求超时 stream_context_create PHP教程 PHP HTTP请求 接口探测器
用 PHP 写一个小型 HTTP 探测器,重点不是只把远程接口请求通,而是给连接设置超时、拿到状态码、记录耗时和错误信息,并让接口返回可验收的 JSON。文章用原生 stream_context_create 串起入口接口、请求函数、日志文件和验收清单,适合放进定时任务或后台健康检查。289 收藏