ThinkPHP5 中配置 XHProf 性能分析工具

这篇文章演示了如何在 ThinkPHP5 中借助钩子和行为接入 XHProf,把性能分析自动挂到每次请求的开始与结束阶段。核心做法是修改 `application/tags.php`,分别启用与保存分析数据,并通过生成的 `run_id` 直接跳转查看结果。

ThinkPHP5 中配置 XHProf 性能分析工具

Go 并发编程中的非阻塞锁:TryLock()

Go 1.18 为 `sync.Mutex` 和 `sync.RWMutex` 补上了 `TryLock()`,让加锁失败时可以立即返回,而不是像 `Lock()` 一样持续阻塞。它适合“抢到就做、抢不到就放弃”的轻量并发控制,但也不该被当成通用解法,关键还是先判断场景是否真的需要非阻塞锁。

Go 并发编程中的非阻塞锁:TryLock()

Go 的 container/ring 怎么用:循环链表的核心用法与适用场景

Go 标准库的 container/ring 适合处理轮询、循环缓冲和资源轮转这类天然带“闭环”的问题。本文从结构特点、常用 API、典型场景到性能边界展开,帮助你判断它何时比切片或 list 更合适。 在需要反复轮转同一批数据的业务里,普通切片和线性链表往往要额外维护下标、边界或头尾状态,代码容易越写越绕。

Go 的 container/ring 怎么用:循环链表的核心用法与适用场景

如何利用日志进行 Debian Node.js 调试

在 Debian 上排查 Node.js 问题,单靠 `console.log` 很快会失控。把日志做成结构化输出,再配合 `tail`、`grep`、`journalctl`、PM2 和交互式调试器,才能更快区分应用错误、服务异常和系统层故障。 在 Debian 环境里调试 Node.js,很多问题不是没有日志,而是日志太散、字段太乱,最后只能靠肉眼一行行翻。本文从结构化日志配置讲起,再到 `tail`、`journalctl`、PM2、`--inspect-brk` 等工具的分层用法,帮你建立一套更容。

如何利用日志进行 Debian Node.js 调试