<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>杂项专题：计算机科学边缘知识与跨界工具拾遗 on PlumePHP</title><link>https://plumephp.com/posts/others/</link><description>Recent content in 杂项专题：计算机科学边缘知识与跨界工具拾遗 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 30 Sep 2026 14:00:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/posts/others/index.xml" rel="self" type="application/rss+xml"/><item><title>Markdown 与文档工程：写作规范、静态生成与 LaTeX 排版</title><link>https://plumephp.com/others-markdown-documentation/</link><pubDate>Wed, 30 Sep 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/others-markdown-documentation/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;文档是软件系统中寿命最长的代码——功能会重构，接口会迭代，但文档是第一份和最后一份与你同行的资产。Markdown 成了事实标准：它足够轻让你专注写作，又足够丰富经工具链渲染为出版级产出。本文从 Markdown 核心语法与方言出发，延伸到写作规范、协作流、静态生成工具（Docusaurus/VitePress/MkDocs/Hugo）、LaTeX 公式排版与多格式输出，给把「写文档」从「负担」变成「杠杆」的起点。&lt;/p&gt;</description></item><item><title>终端与 Shell 生态进阶：zsh、tmux 与高效命令行工作流</title><link>https://plumephp.com/others-terminal-shell-ecosystem/</link><pubDate>Wed, 30 Sep 2026 13:00:00 +0800</pubDate><guid>https://plumephp.com/others-terminal-shell-ecosystem/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;终端是开发者每天用得最多却最少系统学习的工具。本文把「终端」从「一个黑色窗口」拆解成可掌握的层次：&lt;strong&gt;Shell&lt;/strong&gt;（bash/zsh 的命令解释器）、&lt;strong&gt;终端模拟器&lt;/strong&gt;（iTerm2/Alacritty 的渲染器）、&lt;strong&gt;tmux&lt;/strong&gt;（多路复用与持久会话）与 &lt;strong&gt;命令行工具&lt;/strong&gt;（现代 GNU 替代品）。掌握词法展开与管线思维后，你能把「一个半小时的手动操作」压缩成一条命令——Shell 是最好的自动化胶水。&lt;/p&gt;</description></item><item><title>概率统计基础实战：贝叶斯、随机变量、分布与推断</title><link>https://plumephp.com/others-probability-statistics/</link><pubDate>Wed, 30 Sep 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/others-probability-statistics/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;概率与统计是「用不确定性思考」的数学：&lt;strong&gt;概率&lt;/strong&gt;从模型推结果（骰子有几面→点数分布），&lt;strong&gt;统计&lt;/strong&gt;从结果推模型（掷了 1000 次→猜骰子是否公平）。工程里它无处不在——AB 测试、异常检测、推荐不确定性、模型评估的置信区间。本文把核心概念压缩成一张可用的地图：条件概率与贝叶斯、随机变量与分布、两大定律、估计与假设检验，末尾给工程速查。&lt;/p&gt;</description></item><item><title>图算法实战：遍历、最短路、最小生成树与拓扑排序</title><link>https://plumephp.com/others-graph-algorithms/</link><pubDate>Wed, 30 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/others-graph-algorithms/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;图是描述「关系」的语言——社交网络、地图导航、任务依赖、网络路由，全是一张图。本文把图算法的核心盘成一张技能树：&lt;strong&gt;先遍历&lt;/strong&gt;（BFS/DFS），再&lt;strong&gt;最短路&lt;/strong&gt;（Dijkstra/Bellman-Ford），再&lt;strong&gt;最小生成树&lt;/strong&gt;（Prim/Kruskal），最后&lt;strong&gt;拓扑排序&lt;/strong&gt;（有向无环图的关卡）。每类给出「解决什么问题、为什么这个算法、代码骨架、最坏复杂度」四件套，末尾给选型表。&lt;/p&gt;</description></item><item><title>哈希函数与哈希表：散列设计、碰撞处理与一致性哈希</title><link>https://plumephp.com/others-hashing-guide/</link><pubDate>Wed, 30 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/others-hashing-guide/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;哈希是「用空间换时间」的巅峰思想：一个 O(1) 的查找结构（哈希表）、一个能检验完整性的指纹（密码学哈希）、一个能扛节点增减的数据分布方案（一致性哈希）。但哈希也有两副面孔——&lt;strong&gt;快&lt;/strong&gt;与&lt;strong&gt;安全&lt;/strong&gt;用的完全不是同一类函数。本文把哈希表结构、碰撞处理、密码学哈希与一致性哈希串成一张图，讲清各自的设计目标与工程陷阱。&lt;/p&gt;</description></item><item><title>排序算法全景：十大排序、稳定性、复杂度与工程实现</title><link>https://plumephp.com/others-sorting-algorithms/</link><pubDate>Wed, 30 Sep 2026 09:00:00 +0800</pubDate><guid>https://plumephp.com/others-sorting-algorithms/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;排序是算法里出场率最高的主题——因为它把「比较/交换/递归/分治/堆」这些底层思维全串起来了，也是面试与工程的双料基础。本文不做「背代码」，而是讲透十大排序的&lt;strong&gt;设计思路&lt;/strong&gt;（谁在哪个环节赢）、&lt;strong&gt;稳定性与原地性&lt;/strong&gt;（工程选型的隐藏约束）、复杂度对比，以及生产里真正的主角 TimSort 与 Introsort 为什么长那样。&lt;/p&gt;</description></item><item><title>CLI 交互与生态：参数解析、配置层级、TUI 与发布</title><link>https://plumephp.com/others-cli-ecosystem/</link><pubDate>Mon, 28 Sep 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/others-cli-ecosystem/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;命令行工具是工程师的「自来水」——打开即用、可组合、可脚本化。但一个「好用」的 CLI 不是把参数打完就完事：参数怎么解析才符合直觉（POSIX/GNU 约定）、帮助与错误怎么输出才不骂娘、配置怎么分级（flag &amp;gt; 环境变量 &amp;gt; 配置文件）、要不要交互与 TUI、退出码和 stdout/stderr 怎么约定、以及怎么测试与发布。本文把这些讲透：先讲 CLI 的设计原则，再深入参数解析的规范与坑，接着讲帮助/错误输出、配置层级、交互与 TUI、退出码与流约定、测试与发布流程，最后对比主流语言的 CLI 框架（Go cobra、Rust clap、Python typer 等）。&lt;/p&gt;</description></item><item><title>正则引擎内部：从 Thompson 构造到回溯与 RE2 线性引擎</title><link>https://plumephp.com/others-regex-engine-internals/</link><pubDate>Mon, 28 Sep 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/others-regex-engine-internals/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;正则表达式人人会用，但「正则引擎是怎么把一段模式跑起来的」却是少数人才懂的底层知识。本文把正则引擎从「黑盒」拆成「电路图」：先讲正则 → 非确定有限自动机（NFA）的 &lt;strong&gt;Thompson 构造法&lt;/strong&gt;，再讲 NFA 的模拟运行（多状态并行的秘密），接着讲 NFA → DFA 的子集构造与状态爆炸，然后对比两条主要实现路线——&lt;strong&gt;回溯引擎&lt;/strong&gt;（Perl/PCRE/JS，快于小模式但可能灾难性回溯）与&lt;strong&gt;线性引擎&lt;/strong&gt;（RE2/ripgrep，永不回溯、线性时间但放弃向后引用），再讲向后引用为何让正则「不再是正则」，捕获组/锚点/环视的实现机制，最后给引擎选型与性能剖析的工程建议。读完你会明白：为什么 &lt;code&gt;(a+)+$&lt;/code&gt; 能卡死一个服务，以及为什么 RE2 声称「最坏也是线性」。&lt;/p&gt;</description></item><item><title>代码格式化器：AST 感知的格式化架构与工具对比</title><link>https://plumephp.com/others-code-formatter/</link><pubDate>Mon, 28 Sep 2026 13:00:00 +0800</pubDate><guid>https://plumephp.com/others-code-formatter/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;「你的代码风格和我不同」——这是每个团队都吵过的架。代码格式化器的价值不是「把代码变好看」，而是&lt;strong&gt;用确定性消灭争论&lt;/strong&gt;：格式化器是唯一正确输出，谁都不用再就「缩进几个空格」辩论。本文把格式化器从「配置一下」讲到「懂原理」：先讲格式化的两类架构（文本级 vs AST 级）的差异，再深入 AST 感知格式化的完整流水线（parse → format → print），接着讲打印算法——Prettier 的文档模型（Doc）如何解决「换行决策」，再讲配置与自定义（格式化范围/自定义插件）、格式化与 Lint 的分工、CI 与提交钩子落地，最后对比主流工具（Prettier/Black/gofmt/Rustfmt）的设计哲学与适用场景。&lt;/p&gt;</description></item><item><title>diff/patch 算法与工具：Myers 差异算法、补丁格式与版本控制</title><link>https://plumephp.com/others-diff-patch/</link><pubDate>Mon, 28 Sep 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/others-diff-patch/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;「这段代码改了什么」——git diff 只是扔出两行颜色，但背后是计算机科学一个优雅的问题：&lt;strong&gt;给定两个文本序列，找到差异最小的编辑方式&lt;/strong&gt;。本文把 diff/patch 从「会用 git」讲到「懂算法」：先定义 diff 问题与最长公共子序列（LCS）的联系，再深入 Myers 差异算法（git 的默认引擎）的贪心搜索与编辑脚本，接着讲补丁格式（unified/normal）与 patch 的解析应用，再讲二进制与重命名场景、git 内部 diff 的机制（diff driver/外部 diff 工具），最后给代码审查与数据同步里的 diff 实战，以及工具链速查。&lt;/p&gt;</description></item><item><title>日志解析与格式设计：结构化日志、解析器构建与管道落地</title><link>https://plumephp.com/others-log-parsing/</link><pubDate>Mon, 28 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/others-log-parsing/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;日志是最「便宜」的观测手段，也是最容易被糊弄的数据：一行文本里埋着时间、级别、请求 ID、错误码……没有结构化字段之前，每次排障都要靠人工肉眼正则。本文把日志从「写出来」到「用起来」讲透：先讲日志格式设计（该不该结构化、字段怎么约定、级别语义），再讲解析器的构建（正则、流式、多行拼接、字段提取），接着讲日志管道的完整落地（采集 → 清洗 → 聚合 → 路由 → 存储），然后处理采样与脱敏（PII 与合规）、日志轮转与保留策略，最后给常见陷阱与性能优化，让你把日志变成真正可检索、可告警、可审计的工程资产。&lt;/p&gt;</description></item><item><title>DSL 设计实战：内部 DSL、外部 DSL 与解析器构建</title><link>https://plumephp.com/dsl-design/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/dsl-design/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;DSL（领域特定语言）是「为某个领域定制的迷你语言」——SQL 为数据库、正则为你写的文本模式、Gradle 为构建。好 DSL 让&lt;strong&gt;领域专家直接表达意图&lt;/strong&gt;，而不是让所有人学会通用语言再翻译。本文先讲内部/外部 DSL 的分野与取舍，再给表达式求值、AST、类型安全的完整落地路径，最后用案例拆解「何时值得做 DSL」。&lt;/p&gt;</description></item><item><title>JSON 与 YAML 处理深入：解析器原理、Schema 校验与工程陷阱</title><link>https://plumephp.com/others-json-yaml-processing/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/others-json-yaml-processing/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;JSON 与 YAML 是当今配置与数据的「通用语」，但绝大多数工程问题都出在&lt;strong&gt;对格式的想当然&lt;/strong&gt;：JSON 里浮点与时间被悄悄改写、YAML 的隐式类型把 &lt;code&gt;on&lt;/code&gt; 变成布尔、流式解析与内存爆炸、Schema 校验缺失导致的配置漂移。本文把这两种格式从「会用」讲到「懂原理」：先讲解析器内部（词法 → 语法 → 值树）与递归下降的实现，再讲流式解析与内存边界，接着逐个拆解序列化陷阱（浮点/时间/键序/重复键），然后讲 JSON Schema 校验与类型契约、YAML 锚点/别名/合并键、格式互转与选型，最后给安全清单（原型污染/炸弹输入）与性能优化，让你在生产里把配置和数据「玩得明白」。&lt;/p&gt;</description></item><item><title>Unicode 与字符编码全解：UTF-8、码点、规范化与乱码排查</title><link>https://plumephp.com/unicode-encoding-guide/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/unicode-encoding-guide/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;「乱码」是世界级玄学，根因只有一条：&lt;strong&gt;编码不匹配&lt;/strong&gt;。理解字符编码需要分清两个概念——&lt;strong&gt;字符集&lt;/strong&gt;（Unicode 规定「有哪些字符」）与&lt;strong&gt;编码&lt;/strong&gt;（UTF-8 规定「字符如何变字节」）。本文从 ASCII 一路讲到 Unicode 的码点、代理对、规范化与 emoji，最后给出一套乱码排查 SOP，让你从此不再被 &lt;code&gt;锟斤拷&lt;/code&gt; 支配。&lt;/p&gt;</description></item><item><title>二进制与编码工具：Base64、Hex、xxd、od 与字节调试</title><link>https://plumephp.com/others-binary-encoding-tools/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/others-binary-encoding-tools/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;日志里突然冒出一串 &lt;code&gt;aGVsbG8=&lt;/code&gt;，二进制协议抓包回来全是 &lt;code&gt;\x00\xff&lt;/code&gt;，&lt;code&gt;xxd&lt;/code&gt; 的转储看不懂——&lt;strong&gt;字节级调试&lt;/strong&gt;是每个工程师迟早要跨的门槛。本文把这块&amp;quot;工具箱&amp;quot;一次补齐：先建立数制直觉（为什么 &lt;code&gt;0xFF&lt;/code&gt; 是 255、位运算长什么样），再拆透两种最常见的编码——&lt;strong&gt;Hex（十六进制）与 Base64&lt;/strong&gt;（各自解决什么问题、表格怎么来的、URL-safe 变体），接着讲文本与字节的关系（ASCII/UTF-8 在字节层面到底什么关系），最后给 &lt;code&gt;xxd&lt;/code&gt;/&lt;code&gt;od&lt;/code&gt;/&lt;code&gt;hexdump&lt;/code&gt; 的实用姿势、magic bytes 识文件、以及调试二进制协议/文件时的实战套路与踩坑。&lt;/p&gt;</description></item><item><title>命令行文本处理工具链：sed、awk、jq 与管道组合</title><link>https://plumephp.com/text-processing-toolkit/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/text-processing-toolkit/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;一个不显眼的技能组合能省掉大量「写脚本」时间：&lt;strong&gt;sed 处理行、awk 处理字段、jq 处理 JSON、grep 找目标&lt;/strong&gt;——再用管道串起来。这些工具的共同哲学是「&lt;strong&gt;数据流&lt;/strong&gt;」：每个工具读一行处理一行，输出给下一个。本文按工具逐个讲透，再给 10 个真实场景的管道写法。&lt;/p&gt;</description></item><item><title>数据压缩原理：Huffman、LZ 家族与通用压缩算法</title><link>https://plumephp.com/others-data-compression-guide/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/others-data-compression-guide/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;文件、网络、数据库里到处是压缩——&lt;code&gt;.zip&lt;/code&gt;、&lt;code&gt;.tar.gz&lt;/code&gt;、HTTP 的 gzip/brotli、日志的 zstd。但大多数人都把压缩当&amp;quot;黑盒命令&amp;quot;，不知道&lt;strong&gt;它到底在压什么&lt;/strong&gt;。本文拆开这个黑盒：先讲熵——压缩的下限来自信息量本身（为什么压缩不了随机数据）；再讲两大基石——&lt;strong&gt;Huffman（频率驱动）与 LZ 家族（重复驱动）&lt;/strong&gt;，以及把两者结合的 Deflate（gzip 的内核）；接着对比现代算法 zstd/brotli/LZMA，最后给工程决策：级别怎么选、分块与字典怎么用、什么时候压缩不值得。&lt;/p&gt;</description></item><item><title>数据序列化格式全景：JSON、Protobuf、MessagePack 与 Parquet</title><link>https://plumephp.com/serialization-formats-compare/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/serialization-formats-compare/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;数据传输与存储的第一性问题是：&lt;strong&gt;用什么格式把对象变成字节，再变回来？&lt;/strong&gt; 格式选择决定了三件事——体积、速度、演进能力。文本族（JSON/XML/YAML）人可读但费字节；二进制族（Protobuf/MessagePack）省空间但难调试；列式族（Parquet/ORC）为分析而生的压缩率惊人。本文给出全景对比 + 一套可落地的选型决策树。&lt;/p&gt;</description></item><item><title>文本相似度与模糊匹配：Levenshtein、Jaro-Winkler 与 SimHash</title><link>https://plumephp.com/others-fuzzy-text-matching/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/others-fuzzy-text-matching/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;用户把 &lt;code&gt;brother&lt;/code&gt; 打成 &lt;code&gt;borther&lt;/code&gt;，客服把客户名抄错一位，爬虫抓到了 99% 相同的两篇文章&amp;rdquo;——&lt;strong&gt;模糊匹配&lt;/strong&gt;要回答的就是&amp;quot;这两段文本像不像、差几个字符、是不是同一个东西&amp;quot;。本文从零搭一套匹配工具箱：先讲最经典的&lt;strong&gt;编辑距离&lt;/strong&gt;（Levenshtein 及其优化、Damerau 的调换），再讲 token 级的 &lt;strong&gt;Jaccard/Dice&lt;/strong&gt; 与擅长人名匹配的 &lt;strong&gt;Jaro-Winkler&lt;/strong&gt;，接着讲模糊搜索怎么落地（fzf 原理、编辑距离阈值、候选集），再讲&lt;strong&gt;大规模去重&lt;/strong&gt;的利器 SimHash/MinHash（为什么不是两两比较），最后给一个可落地的&amp;quot;匹配引擎&amp;quot;设计。&lt;/p&gt;</description></item><item><title>时间与时区处理全解：UTC、ISO 8601、Instant 与夏令时</title><link>https://plumephp.com/time-timezone-handling/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/time-timezone-handling/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;时间bug是软件里最「阴」的一类：本地测试全对，上线就乱；跨时区用户各报各的；夏令时让日志神秘地「倒退一小时」。根因永远是同一个：&lt;strong&gt;没分清「时刻」与「墙上时间」&lt;/strong&gt;。本文把时间处理拆成三个层次——时刻（物理时间）、表示（ISO 8601）、日历（时区/夏令时），每层给正确做法与经典陷阱。&lt;/p&gt;</description></item><item><title>标识符设计：UUID v4/v7、ULID、雪花算法与工程权衡</title><link>https://plumephp.com/others-uuid-identifier-design/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/others-uuid-identifier-design/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;auto_increment&lt;/code&gt; 还是 &lt;code&gt;UUID&lt;/code&gt;？&lt;code&gt;UUID v4&lt;/code&gt; 还是 &lt;code&gt;v7&lt;/code&gt;？&lt;code&gt;ULID&lt;/code&gt;、&lt;code&gt;雪花&lt;/code&gt;、&lt;code&gt;KSUID&lt;/code&gt; 又是什么？——&lt;strong&gt;主键设计是每个表的第一行代码&lt;/strong&gt;，选错会影响索引、分库分表、多机房甚至泄密。本文把标识符选型讲透：先讲&lt;strong&gt;自增与 UUID 的根本权衡&lt;/strong&gt;（单调性 vs 不可预测性 vs 索引友好），再逐一拆 UUID 的版本（为什么 v4 在主键里是&amp;quot;反面教材&amp;quot;、v7 为什么被推荐），接着讲追求&lt;strong&gt;排序 + 紧凑 + 分布式&lt;/strong&gt;的 ULID/雪花/KSUID，最后给一张完整的选型表与分布式 ID 生成器的设计要点。&lt;/p&gt;</description></item><item><title>正则表达式深层解析：引擎、回溯与灾难性回溯</title><link>https://plumephp.com/regex-deep-dive/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/regex-deep-dive/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;正则表达式人人会用，但「为什么有些正则秒回、有些卡死 CPU」很少人讲透。答案在&lt;strong&gt;引擎&lt;/strong&gt;：主流语言用的是带回溯的 NFA 引擎（慢但强大），而 &lt;code&gt;RE2&lt;/code&gt; 用的是 DFA 引擎（快但受限）。本文从引擎讲起，把贪婪/懒惰/零宽断言/灾难性回溯一次讲清，并给出可直接照抄的实用模式库。&lt;/p&gt;</description></item><item><title>算法复杂度速查：Big-O、空间复杂度与工程直觉</title><link>https://plumephp.com/others-big-o-complexity-guide/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/others-big-o-complexity-guide/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;O(n)&lt;/code&gt;、&lt;code&gt;O(log n)&lt;/code&gt;、&lt;code&gt;O(n log n)&lt;/code&gt;——这些记号人人会读，但真正能在工程里用起来的却不多。本文不讲竞赛题，而是把复杂度变成&lt;strong&gt;工程直觉&lt;/strong&gt;：先厘清 Big-O 记号的语言（上界、下界、Theta），再给一张&amp;quot;数据结构 × 操作&amp;quot;的速查表（这是面试与设计的地基），接着讲递归复杂度怎么算（主定理）、摊还分析是什么（ArrayList 扩容、双端队列）、以及最容易被忽略的一点——&lt;strong&gt;复杂度是渐进的，常数才决定现实性能&lt;/strong&gt;。最后给&amp;quot;复杂度预算&amp;quot;的方法：上线前估算、跑分验证，而不是靠感觉。&lt;/p&gt;</description></item><item><title>通配符与 Glob 匹配：与正则的分野与落地</title><link>https://plumephp.com/others-glob-file-matching/</link><pubDate>Mon, 28 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/others-glob-file-matching/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;*.md&lt;/code&gt;、&lt;code&gt;src/**/*.ts&lt;/code&gt;、&lt;code&gt;.gitignore&lt;/code&gt; 里的 &lt;code&gt;node_modules/&lt;/code&gt;——&lt;strong&gt;glob 匹配&lt;/strong&gt;无处不在，但它和正则有个最常被忽略的差异：&lt;strong&gt;glob 匹配&amp;quot;文件名路径&amp;quot;，正则匹配&amp;quot;任意文本&amp;quot;&lt;/strong&gt;。本文把 glob 讲透：先讲基础通配符（&lt;code&gt;*&lt;/code&gt; &lt;code&gt;?&lt;/code&gt; &lt;code&gt;[]&lt;/code&gt;）与 Shell 展开的机制，再讲与正则的本质分野（锚定语义、&lt;code&gt;**&lt;/code&gt; 递归、大小写），接着讲跨语言差异（gitignore 的特殊规则、Python &lt;code&gt;glob&lt;/code&gt;/&lt;code&gt;fnmatch&lt;/code&gt;、Node &lt;code&gt;fast-glob&lt;/code&gt;），再讲 extglob/brace 展开这些进阶语法，最后给性能陷阱（隐藏文件、重叠匹配、大目录）与配置文件 glob 的最佳实践。&lt;/p&gt;</description></item><item><title>K8s Memos对比</title><link>https://plumephp.com/k8s-memos-compare/</link><pubDate>Thu, 19 Dec 2024 16:26:00 +0800</pubDate><guid>https://plumephp.com/k8s-memos-compare/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://plumephp.com/posts/kubernetes/"&gt;Kubernetes&lt;/a&gt;&lt;/strong&gt; 和 &lt;strong&gt;Apache Mesos&lt;/strong&gt; 是两种流行的容器编排与资源管理工具，尽管它们在功能上存在一定重叠，但设计理念、应用场景和技术实现存在显著差异。下面将从 &lt;strong&gt;架构设计、功能、使用场景、优势与劣势&lt;/strong&gt; 等方面进行详细对比分析。&lt;/p&gt;</description></item><item><title>巴科斯范式</title><link>https://plumephp.com/bnf-backus-naur-form/</link><pubDate>Fri, 20 Sep 2024 14:54:40 +0800</pubDate><guid>https://plumephp.com/bnf-backus-naur-form/</guid><description>&lt;p&gt;巴科斯范式（Backus–Naur Form，简称BNF）是一种用于描述语言的语法的表示方法，它是由 John Backus 提出，并由 Peter Naur 进一步发展的。BNF 广泛用于计算机语言的语法描述，包括编程语言、数据交换格式和通信协议等。&lt;/p&gt;</description></item></channel></rss>