Composer 基本使用:从依赖安装到常用命令一次讲清

Composer 是 PHP 项目里最常用的依赖管理工具之一,但很多初学者只会执行命令,对 `composer.json`、`composer.lock` 和 `vendor` 的分工并不清楚。本文用一个安装 `monolog/monolog` 的最小示例,梳理 Composer 的基础工作方式、自动加载和几条最常用命令。

Composer 基本使用:从依赖安装到常用命令一次讲清

PHP 里的 self 和 static,到底差在哪?

PHP 里的 `self` 和 `static` 看起来只差一个关键字,实际对应的是两套完全不同的绑定规则。搞清它们在实例化、静态调用、继承场景里的行为差异,才能判断什么时候要固定返回父类,什么时候要把结果留给子类扩展。

PHP 里的 self 和 static,到底差在哪?

Compton 与 PulseAudio:Linux 桌面音频同步问题怎么排查

Compton 和 PulseAudio 经常同时出现在 Linux 桌面环境里,但两者分工并不相同。遇到视频声音慢于画面时,问题通常出在 PulseAudio 缓冲、输出设备选择、驱动版本或系统负载。本文按“先判断归因,再逐项优化”的思路,整理出一套更适合日常排查的处理方法。

Compton 与 PulseAudio:Linux 桌面音频同步问题怎么排查

Conda 虚拟环境如何正确调用系统 CUDA:PyTorch 配置与排查指南

Conda 虚拟环境里 `torch.cuda.is_available()` 返回 `False`,很多时候不是 PyTorch 安装错了,而是环境没有正确找到系统 CUDA。本文梳理虚拟环境与动态链接器的关系,对比三种配置方式,并给出排查命令与推荐脚本模板。 在 Conda 虚拟环境里遇到 `torch.cuda.is_available()` 返回 `False`,很多人第一反应是重装 PyTorch 或怀疑驱动出了问题,但真正卡住的常常是环境变量和动态链接路径。

Conda 虚拟环境如何正确调用系统 CUDA:PyTorch 配置与排查指南

Ubuntu 升级 PHP-FPM 后,如何兼容旧代码

Ubuntu 上升级 PHP-FPM 后,旧项目最怕的不是安装失败,而是默认配置、废弃函数和运行环境变化一起触发兼容问题。本文按“先兜底、再审计、后并行迁移”的顺序,整理出备份、配置回调、多版本共存与验证要点。

Ubuntu 升级 PHP-FPM 后,如何兼容旧代码