<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>工程实践 on Jeanphilo Blog</title><link>https://shio-chan-dev.github.io/jeanblog/zh/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/</link><description>Recent content in 工程实践 on Jeanphilo Blog</description><generator>Hugo -- 0.159.2</generator><language>zh-cn</language><lastBuildDate>Fri, 20 Mar 2026 14:44:10 +0800</lastBuildDate><atom:link href="https://shio-chan-dev.github.io/jeanblog/zh/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/index.xml" rel="self" type="application/rss+xml"/><item><title>先写骨架，再补细节：用契约拆解算法题与中型程序</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/skeleton-first-contract-driven-coding/</link><pubDate>Fri, 20 Mar 2026 14:44:10 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/skeleton-first-contract-driven-coding/</guid><description>把复杂程序拆成骨架、契约和原子状态变换：本文用 LRUCache、下单流程与反例解释为什么先写外部结构通常更稳，以及 helper 应该如何控制副作用。</description></item><item><title>先等价迁移，再行为改造：AI 协作时代最稳的工程工作流</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/equivalence-migration-then-behavior-refactor-workflow/</link><pubDate>Thu, 05 Mar 2026 16:54:59 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/equivalence-migration-then-behavior-refactor-workflow/</guid><description>一套面向 AI 协作开发的双阶段工作流：先做行为等价迁移，再做行为改造，配合任务记账与 worktree 隔离，减少返工与回归。</description></item><item><title>先定不变量与契约，再写实现：Evans/Fowler 实战法</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/invariants-contract-before-implementation/</link><pubDate>Wed, 11 Feb 2026 07:53:37 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/invariants-contract-before-implementation/</guid><description>解释“先定不变量/契约，再写实现”到底在工程上多了什么，并给出可执行的落地模板。</description></item><item><title>图算法专题学习路径：从 BFS 到图计算模型</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/graph/00-graph-algorithms-learning-path/</link><pubDate>Mon, 09 Feb 2026 10:14:45 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/graph/00-graph-algorithms-learning-path/</guid><description>图算法专题导航与推荐阅读顺序，覆盖 BFS/DFS、可达性、最短路、CC/SCC、中心性、PageRank、社区发现、子图匹配、动态图、图分区与图计算模型。</description></item><item><title>动态图与增量计算：增量最短路径、增量 PageRank、连通性维护 ACERS 解析</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/graph/90-dynamic-graph-incremental-computation/</link><pubDate>Mon, 09 Feb 2026 10:00:28 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/graph/90-dynamic-graph-incremental-computation/</guid><description>面向真实图系统，系统讲解动态图增量算法：增量最短路径、增量 PageRank、连通性维护。重点覆盖局部重算、延迟更新、近似结果三种工程必修技巧。</description></item><item><title>图中心性三件套：Degree、Betweenness、Closeness 工程 ACERS 解析</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/graph/50-graph-centrality-degree-betweenness-closeness/</link><pubDate>Mon, 09 Feb 2026 09:56:11 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/graph/50-graph-centrality-degree-betweenness-closeness/</guid><description>系统讲解图中心性三大指标：Degree、Betweenness、Closeness。重点给出工程可落地结论：大多数系统优先支持 Degree 和近似 Betweenness，并说明复杂度、近似策略与上线取舍。</description></item><item><title>最短路径三件套：BFS、Dijkstra、A* 工程实战 ACERS 解析</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/graph/20-shortest-path-bfs-dijkstra-astar-acers/</link><pubDate>Mon, 09 Feb 2026 09:48:00 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/algorithm/graph/20-shortest-path-bfs-dijkstra-astar-acers/</guid><description>系统讲透最短路径三件套：无权图 BFS、非负权 Dijkstra、启发式 A*。覆盖多源 BFS、双向搜索、路径裁剪等工程优化，并附可运行代码与多语言模板。</description></item><item><title>AI 辅助编程不黑盒：责任主线工作流实战</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/ai-assisted-coding-responsibility-workflow/</link><pubDate>Sat, 07 Feb 2026 13:16:00 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/ai-assisted-coding-responsibility-workflow/</guid><description>用一套可执行的 commit 与分支流程，把 AI 变成加速器而不是黑盒来源。</description></item><item><title>什么时候适用函数式语言：场景与边界</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/language/when-to-use-functional-languages/</link><pubDate>Sat, 24 Jan 2026 15:42:47 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/language/when-to-use-functional-languages/</guid><description>讨论函数式语言的适用场景、优势与限制。</description></item><item><title>Java 栈的内存泄漏：为什么 pop 之后仍然占用</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/java-stack-memory-leak/</link><pubDate>Sat, 24 Jan 2026 15:29:20 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/java-stack-memory-leak/</guid><description>通过经典栈实现示例解释 Java 的内存泄漏与修复方式。</description></item><item><title>如何重构嵌套错误码：从深层 if 到清晰流程</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/refactor-nested-error-codes/</link><pubDate>Sat, 24 Jan 2026 15:29:20 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/refactor-nested-error-codes/</guid><description>用早返回与小函数拆分重构深层嵌套错误处理。</description></item><item><title>设计 vs 架构：范围、抽象层级与责任</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/design/design-vs-architecture/</link><pubDate>Sat, 24 Jan 2026 15:29:20 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/design/design-vs-architecture/</guid><description>从范围与抽象层级解释设计与架构的区别。</description></item><item><title>我最喜欢的语言的三个缺陷：以 Python 为例</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/language/three-worst-flaws-python/</link><pubDate>Sat, 24 Jan 2026 15:29:20 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/language/three-worst-flaws-python/</guid><description>从工程角度分析 Python 的三大缺陷及其应对策略。</description></item><item><title>本周我学到了什么：工程师的复盘模板</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/what-did-you-learn-this-week/</link><pubDate>Sat, 24 Jan 2026 13:35:15 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/what-did-you-learn-this-week/</guid><description>给出每周学习复盘的结构化模板，帮助持续成长。</description></item><item><title>只有一周能改善同事生活？可落地的工程清单</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/management/week-to-improve-colleagues/</link><pubDate>Sat, 24 Jan 2026 13:35:15 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/management/week-to-improve-colleagues/</guid><description>给出一周内可交付的工程改进清单，提升团队日常体验。</description></item><item><title>最近读过的 5 本书：工程师视角的清单</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/five-books-recently/</link><pubDate>Sat, 24 Jan 2026 13:35:15 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/five-books-recently/</guid><description>给出工程师常读的 5 本书清单，并说明适用场景。</description></item><item><title>软件开发是艺术、技艺还是工程？</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/software-dev-art-craft-engineering/</link><pubDate>Sat, 24 Jan 2026 13:27:25 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/software-dev-art-craft-engineering/</guid><description>从工程管理视角讨论软件开发的本质与平衡。</description></item><item><title>什么样的代码可读性强：结构、命名与认知负担</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/readable-code-principles/</link><pubDate>Sat, 24 Jan 2026 13:27:25 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/readable-code-principles/</guid><description>从结构、命名与认知负担角度定义“可读性强的代码”。</description></item><item><title>重复造轮子、NIH 与狗粮文化：何时有价值</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/reinventing-wheel-nih-dogfooding/</link><pubDate>Sat, 24 Jan 2026 13:27:25 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/reinventing-wheel-nih-dogfooding/</guid><description>讨论重复造轮子、非我发明症与狗粮文化的取舍。</description></item><item><title>好的语言与差的语言：工程视角的判断标准</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/language/good-vs-bad-language/</link><pubDate>Sat, 24 Jan 2026 13:08:42 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/language/good-vs-bad-language/</guid><description>从可读性、工具链与安全性出发，讨论语言优劣的工程标准。</description></item><item><title>为什么要自动化：节省时间与降低错误</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/automate-your-workflow/</link><pubDate>Sat, 24 Jan 2026 12:53:37 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/automate-your-workflow/</guid><description>说明自动化对工程效率与质量的价值，并给出实践建议。</description></item><item><title>Greenfield vs Brownfield：新项目还是老系统？</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/greenfield-vs-brownfield/</link><pubDate>Sat, 24 Jan 2026 12:47:45 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/greenfield-vs-brownfield/</guid><description>对比新建项目与遗留系统的利弊，并给出选择与落地策略。</description></item><item><title>如何处理遗留代码：安全改动与渐进式重构</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/legacy-code-management/</link><pubDate>Sat, 24 Jan 2026 12:47:45 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/legacy-code-management/</guid><description>给出处理遗留代码的工程策略，包括测试保护网与渐进式改造。</description></item><item><title>为什么软件维护困难：复杂性、耦合与人</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/why-software-maintenance-hard/</link><pubDate>Sat, 24 Jan 2026 12:47:45 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/why-software-maintenance-hard/</guid><description>分析软件维护困难的原因，并给出缓解策略。</description></item><item><title>下一步该自动化什么：识别高收益自动化机会</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/what-to-automate-next/</link><pubDate>Sat, 24 Jan 2026 12:45:38 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/what-to-automate-next/</guid><description>给出识别自动化机会的工程方法，包括频率、成本与风险维度。</description></item><item><title>依赖地狱（Dependency Hell）怎么解：版本、隔离与治理</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/dependency-hell/</link><pubDate>Sat, 24 Jan 2026 12:45:38 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/dependency-hell/</guid><description>从版本冲突与传递依赖出发，给出依赖地狱的治理方法与工具策略。</description></item><item><title>测试如何影响软件设计：可测试性驱动的结构选择</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/testing-in-design/</link><pubDate>Sat, 24 Jan 2026 12:42:52 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/testing-in-design/</guid><description>从可测试性出发解释测试如何影响设计决策，并给出可落地的结构建议。</description></item><item><title>代码中的注释有用吗：什么时候写、写什么</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/comments-in-code/</link><pubDate>Sat, 24 Jan 2026 12:42:52 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/comments-in-code/</guid><description>解释注释的价值与风险，并给出可执行的注释策略。</description></item><item><title>为什么 TDD 先写测试：反馈、设计与信心</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/tdd-tests-first/</link><pubDate>Sat, 24 Jan 2026 12:42:52 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/tdd-tests-first/</guid><description>解释 TDD 先写测试的原因，以及它如何改善设计与反馈速度。</description></item><item><title>重构何时有用：时机、信号与风险控制</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/refactoring-when/</link><pubDate>Sat, 24 Jan 2026 12:42:52 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/refactoring-when/</guid><description>解释重构适用场景、触发信号与风险控制方法。</description></item><item><title>什么是好代码：可读、可测、可演进</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/what-is-good-code/</link><pubDate>Sat, 24 Jan 2026 12:33:47 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/what-is-good-code/</guid><description>从可读性、正确性与演进成本出发定义好代码，并给出可执行的判断清单。</description></item><item><title>什么是专业的开发者：责任、质量与协作</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/what-is-professional-developer/</link><pubDate>Sat, 24 Jan 2026 12:33:47 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/what-is-professional-developer/</guid><description>从责任心、质量意识与协作能力出发，定义专业开发者的标准与实践。</description></item><item><title>为什么大公司创新更慢：结构、风险与激励</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/why-large-companies-slow-innovation/</link><pubDate>Sat, 24 Jan 2026 12:33:47 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/why-large-companies-slow-innovation/</guid><description>分析大公司创新变慢的结构性原因，并给出工程层面的改进策略。</description></item><item><title>在已有 Web 应用中实现 2FA：落地步骤与风险控制</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/security/implement-2fa-in-existing-web/</link><pubDate>Sat, 24 Jan 2026 12:33:47 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/security/implement-2fa-in-existing-web/</guid><description>给出在已有 Web 应用引入 2FA 的工程步骤、数据模型与回滚策略。</description></item><item><title>如何避免供应商锁定（Vendor Lock-in）：策略与实践</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/architecture/vendor-lock-in/</link><pubDate>Sat, 24 Jan 2026 12:29:51 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/architecture/vendor-lock-in/</guid><description>给出防止供应商锁定的工程策略，包括抽象层、可迁移架构与数据可移植性。</description></item><item><title>从 MySQL 迁移到 PostgreSQL：步骤、风险与检查清单</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/database/mysql-to-postgresql-migration/</link><pubDate>Sat, 24 Jan 2026 12:23:30 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/database/mysql-to-postgresql-migration/</guid><description>给出 MySQL 迁移到 PostgreSQL 的工程化步骤、风险点与回滚策略。</description></item><item><title>数据库 Schema 迁移怎么做：安全、可回滚、可验证</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/database/schema-migration/</link><pubDate>Sat, 24 Jan 2026 12:23:30 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/database/schema-migration/</guid><description>从灰度、回滚与数据一致性角度讲清数据库 schema 迁移的工程实践。</description></item><item><title>分布式 vs 集中式版本控制：优势、劣势与适用场景</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/version-control/distributed-vs-centralized-vcs/</link><pubDate>Sat, 24 Jan 2026 11:20:31 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/version-control/distributed-vs-centralized-vcs/</guid><description>对比分布式版本控制（Git）与集中式版本控制（SVN）的优劣势，并给出选型建议。</description></item><item><title>为什么不该自己设计密码学：风险、误区与替代方案</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/security/why-not-roll-your-own-crypto/</link><pubDate>Sat, 24 Jan 2026 11:11:28 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/security/why-not-roll-your-own-crypto/</guid><description>解释自创密码学为何高风险，并给出工程上更安全的替代做法。</description></item><item><title>为什么写软件很难：不确定性、复杂性与人</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/why-software-is-hard/</link><pubDate>Sat, 24 Jan 2026 11:06:00 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/engineering/why-software-is-hard/</guid><description>从需求变化、复杂性与协作成本出发解释软件开发的困难，并给出可落地的缓解策略。</description></item><item><title>任务编排为什么要放后端：让流程可控、可变、可回放</title><link>https://shio-chan-dev.github.io/jeanblog/zh/dev/python/pipeline-orchestration/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/dev/python/pipeline-orchestration/</guid><description>用通俗语言解释“后端任务编排”的必要性：把流程顺序从前端移到后端，用配置驱动步骤与等待点。给出最小可运行示例、落地步骤与常见坑。</description></item><item><title>算法与业务的关系：把不确定性变成可交付（以 LLM 事实抽取为例）</title><link>https://shio-chan-dev.github.io/jeanblog/zh/thoughts/thoughts/algorithm-vs-business/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/thoughts/thoughts/algorithm-vs-business/</guid><description>用投标写作系统为例，解释算法与业务的边界：算法负责把模糊世界压缩成结构化中间态，业务负责在中间态稳定后编排流程。附：JupyterLab 验证清单、最小可运行示例与常见坑。</description></item><item><title>别被 AI 牵着走：保持可独立完成的工程能力</title><link>https://shio-chan-dev.github.io/jeanblog/zh/thoughts/thoughts/ai-usage-self-control/</link><pubDate>Mon, 08 Dec 2025 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/thoughts/thoughts/ai-usage-self-control/</guid><description>讨论在使用 AI 辅助编码时如何避免复制粘贴依赖，结合费曼技巧、刻意练习与检索练习，给出可操作的自检清单与演练步骤。</description></item></channel></rss>