<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[inTheChangingRoad的博客]]></title><description><![CDATA[把软件做到极致]]></description><link>https://blog.youkuaiyun.com/inTheChangingRoad</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; inTheChangingRoad]]></copyright><item><title><![CDATA[AI：程序员的脑力外挂]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/161026362</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/161026362</guid><author>inTheChangingRoad</author><pubDate>Tue, 12 May 2026 22:15:08 +0800</pubDate><description><![CDATA[知识扩容：AI如何填补人类脑力的边界；知识无界：AI如何成为人脑的超级外挂]]></description><category></category></item><item><title><![CDATA[一次AI辅助重构的踩坑实录]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/160989028</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/160989028</guid><author>inTheChangingRoad</author><pubDate>Mon, 11 May 2026 22:46:43 +0800</pubDate><description><![CDATA[这篇文章算是一篇skill养成记，通过使用opencode+GLM，实践了一次重构skill的构建过程，这个skill只负责move method这一种重构手法。
文中把跟AI相处的哭笑不得的过程记录了一下。把最终养成的skill和使用这个skill重构的代码PR放在了文章最后。]]></description><category></category></item><item><title><![CDATA[AI写的代码，人要不要来背锅？]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/160561906</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/160561906</guid><author>inTheChangingRoad</author><pubDate>Fri, 08 May 2026 20:39:32 +0800</pubDate><description><![CDATA[AI写的代码，人要不要来背锅？]]></description><category></category></item><item><title><![CDATA[IOS、Android 和 OpenHarmony 音频焦点抢占机制对比]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/160891272</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/160891272</guid><author>inTheChangingRoad</author><pubDate>Fri, 08 May 2026 19:51:41 +0800</pubDate><description><![CDATA[OS、Android、OpenHarmony 的音频焦点机制分别为：iOS 被动会话管理，Android 主动申请（四种抢占策略），OpenHarmony 双层机制（应用内独立/共享 + 应用间并发）。各平台均提供细粒度接口，开发者需适配以保证跨平台体验一致。]]></description><category></category></item><item><title><![CDATA[软件最佳实践不是“神坛代码”，而是你每天都在用的“套路”]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/159487777</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/159487777</guid><author>inTheChangingRoad</author><pubDate>Thu, 26 Mar 2026 16:17:14 +0800</pubDate><description><![CDATA[摘要： 很多人误以为，软件最佳实践非做出“都江堰”那样的工程后世典范。本文想说明：最佳实践并非高深的理论，而是经过验证、切实可用的代码模式。它无分大小，但凡行之有效、能提升效率与质量的方法，皆可称为最佳实践——而我们其实每天都在使用或创造着它。]]></description><category></category></item><item><title><![CDATA[聪明的外行——AI编程在存量代码面前的窘境与新范式预言]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/159472582</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/159472582</guid><author>inTheChangingRoad</author><pubDate>Wed, 25 Mar 2026 19:36:15 +0800</pubDate><description><![CDATA[摘要：本文探讨了AI编程助手在不同代码环境中的表现差异。研究发现，AI在维护存量代码时表现欠佳，因其难以理解历史遗留的隐式业务逻辑和技术债务；但在全新项目中，AI能充分发挥架构设计优势，生成结构清晰的代码。文章建议：对于存量代码，应将AI角色限制为代码审查和优化建议；对于新项目，可让AI主导开发，人类专注于需求定义和验收。这种&quot;AI负责实现，人类把控需求&quot;的新模式，或将重塑未来软件开发流程。]]></description><category></category></item><item><title><![CDATA[《大教堂与集市》PK《人月神话》，在对立中统一]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/158469152</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/158469152</guid><author>inTheChangingRoad</author><pubDate>Fri, 27 Feb 2026 19:24:47 +0800</pubDate><description><![CDATA[中国有句古话“尽信书不如无书”，很多事物是有多面性的，我们有时候只看到其中的一面就奉为信条，往往有失偏颇。以前我对《人月神话》的观点确信无疑，这也是一直以来指导我软件生涯的向导。其实《大教堂与集市》与《人月神话》各自有其适用场景，无所谓对错，在不同场景下，我们要具备灵活运用的能力。当前AI风起的时代，可预见的马上又会有新的颠覆式的软件开发范式出现，我们要拥抱这种变化。]]></description><category></category></item><item><title><![CDATA[敏捷已死？]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/149860572</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/149860572</guid><author>inTheChangingRoad</author><pubDate>Sun, 26 Oct 2025 21:59:45 +0800</pubDate><description><![CDATA[对于很多新时代的程序员，对于敏捷软件开发的概念，已然是很模糊的状态。因此有必要再引一下敏捷的发展历程，回顾一下哪些程序员激情燃烧的岁月。一、核心流程与工件管理二、团队协作与沟通三、质量与改进实践。]]></description><category></category></item><item><title><![CDATA[C++的map[key]使用陷阱--用放大镜看代码开发]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/151713735</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/151713735</guid><author>inTheChangingRoad</author><pubDate>Mon, 15 Sep 2025 13:23:49 +0800</pubDate><description><![CDATA[这一版还是不完美，因为在find之后，如果find到元素，但是有可能在执行fooMap[key]的瞬间，元素被删除，此时操作的就不是find的元素。为了保证状态的一致性，一是可以对fooMap的操作加锁，同时要使用find出来的it值进行操作，而不是使用fooMap[key]操作。这样的话，如果std::make_shared<Value>()失败，就不会往fooMap中放东西，反过来讲，只要能从fooMap中find到，一定非空，这样就能保证fooMap中能find到的元素，一定是有效的，不需要再判空。]]></description><category></category></item><item><title><![CDATA[开源软件API设计原则（1）]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/146999821</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/146999821</guid><author>inTheChangingRoad</author><pubDate>Fri, 04 Apr 2025 17:09:00 +0800</pubDate><description><![CDATA[正如Apache软件基金会倡导的："好的开源API应该像城市的古老建筑——外部保持稳定，内部允许改造。"这种平衡艺术正是优秀开源API设计的精髓所在。正如Linux内核开发者Greg Kroah-Hartman所说："开源API不是合同，而是承诺。：开源API可能被数以万计的开发者使用，而企业内API的调用方通常可枚举。：封闭系统中可通过协商逐步升级，而开源API的变更可能导致社区生态断裂。：建立API评审委员会（如Node.js的CTC）：78%的兼容性问题源于未定义的异常行为。]]></description><category></category></item><item><title><![CDATA[linux内存管理概述]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/134725584</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/134725584</guid><author>inTheChangingRoad</author><pubDate>Fri, 01 Dec 2023 07:29:39 +0800</pubDate><description><![CDATA[内存分配：例如，要请求一个256页（1M）的内存块，如果能找到，直接分配，如果找不到，则找512的内存块，如果能找到512的内存块，则将512的内存块，拆成2个256的内存块，将其中一个256页的块，分配给请求者，另一个256页的块，插入256页块的链表中。将所有的内存空闲页分组为11个块链表，每个块链表分别包含大小为1，2，4，8，16，32，64，128，256，512，1024个连续的页。每个块第一个页的物理地址是该块大小的整数倍，例如，大小为16个页的块，其起始地址是16*4096的整数倍。]]></description><category></category></item><item><title><![CDATA[linux内存-页表管理]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/134725581</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/134725581</guid><author>inTheChangingRoad</author><pubDate>Fri, 01 Dec 2023 07:28:18 +0800</pubDate><description><![CDATA[2级页表：需要的页数是256M/4K = 65536个物理页，一个二级页表（占4K物理内存）能表示1024（1K）个物理页地址，因此65536个物理页面需要65536/1024 = 64 个二级页表，同理，一个一级页表，能够包含1K个二级页表首地址，所以一个一级页就够了（能涵盖64个二级页表）。在64位架构的机器上，一个进程的虚拟地址空间大小理论上可以达到2的64次方字节，即16 EB（exabytes，十八亿GB）。不过，即使如此，64位架构依然能够支持更高的内存容量和更高的性能。]]></description><category></category></item><item><title><![CDATA[SOLID原则系列-视频讲解]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/128510988</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/128510988</guid><author>inTheChangingRoad</author><pubDate>Sun, 01 Jan 2023 13:32:20 +0800</pubDate><description><![CDATA[SOLID原则系列视频]]></description><category></category></item><item><title><![CDATA[用java反射机制解决开放封闭(OCP)原则的最后一公里问题]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/127944898</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/127944898</guid><author>inTheChangingRoad</author><pubDate>Tue, 22 Nov 2022 07:06:58 +0800</pubDate><description><![CDATA[用java的反射机制彻底实现开闭原则。]]></description><category></category></item><item><title><![CDATA[谈谈指令集和处理器]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/127385092</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/127385092</guid><author>inTheChangingRoad</author><pubDate>Tue, 18 Oct 2022 11:36:19 +0800</pubDate><description><![CDATA[处理器和指令集，其中有很多叫法不一，各种标准和厂家参杂在一起，很难理解。本文尝试去梳理一下他们之间的关系。]]></description><category></category></item><item><title><![CDATA[纷乱的C标准库澄清]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/127312131</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/127312131</guid><author>inTheChangingRoad</author><pubDate>Fri, 14 Oct 2022 00:20:39 +0800</pubDate><description><![CDATA[使用C语言标准库时，经常听到各种libc，glibc、uclib...，这些标准库到底是什么关系？]]></description><category></category></item><item><title><![CDATA[架构整洁之道--跟开源三方软件划清界限实战案例]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/126803455</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/126803455</guid><author>inTheChangingRoad</author><pubDate>Sun, 11 Sep 2022 11:09:55 +0800</pubDate><description><![CDATA[本文根据《架构整洁之道》的指导原则，提供一种解决跟开源三方软件划分界限的设计方法，以提升基于开源三方软件开发效率。]]></description><category></category></item><item><title><![CDATA[架构整洁之道解读]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/126716069</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/126716069</guid><author>inTheChangingRoad</author><pubDate>Tue, 06 Sep 2022 00:10:18 +0800</pubDate><description><![CDATA[本文解读Bob大叔的《架构整洁之道》一书，除了提炼整本书的内容外，对其中的一些隐晦知识点进行了展开讨论。希望跟有志于在软件架构上深耕的同仁一起探讨。]]></description><category></category></item><item><title><![CDATA[小马过河]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/51598272</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/51598272</guid><author>inTheChangingRoad</author><pubDate>Mon, 06 Jun 2016 21:08:03 +0800</pubDate><description><![CDATA[小马和他的妈妈住在绿草茵茵的十分美丽的小河边。除了妈妈过河给河对岸的村子送粮食的时候，他总是跟随在妈妈的身边寸步不离。
    他过的很快乐，时光飞快地过去了。
    有一天，妈妈把小马叫到身边说：“小马，你已经长大了，可以帮妈妈做事了。今天你把这袋粮食送到河对岸的村子里去吧。” 小马非常高兴地答应了。他驮着粮食飞快地来到了小河边。
    可是河上没有桥，只能自己淌过去。可又不知道河水有]]></description><category></category></item><item><title><![CDATA[git branch 和 tag的区别]]></title><link>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/51532227</link><guid>https://blog.youkuaiyun.com/inTheChangingRoad/article/details/51532227</guid><author>inTheChangingRoad</author><pubDate>Sun, 29 May 2016 15:17:16 +0800</pubDate><description><![CDATA[研究中，有知道的欢迎留言。就目前而言，个人感觉二者是一样的。]]></description><category></category></item></channel></rss>