[{"content":"先问一个问题：你觉得马斯克是天才还是疯子？ 有人说他是天才，特斯拉改变了汽车行业，SpaceX让火箭回收变成了现实。有人说他是疯子，每周工作100小时，睡在工厂地板上，动不动就开除人。\n但不管你怎么看他，有一点没法否认：这个人在同时颠覆好几个行业，而且都做成了。\n他到底是怎么做到的？是他的脑子比我们聪明十倍？还是他有什么我们普通人不知道的秘密？\n最近我读到了一份整理好的马斯克核心法则，一共69条，据说是他本人以及他的公司取得成功背后的基础思想。读完之后，我发现了一个有意思的事情——这些法则里面，没有一条是\u0026quot;你要比我聪明\u0026quot;或者\u0026quot;你要有天赋\u0026quot;。\n全是态度、方法和行动。\n这说明什么？说明马斯克的成功，至少有很大一部分是可学习的。\n今天我们就从这69条法则里，来扒一扒马斯克到底是个什么样的人，以及——更重要的——我们能从他身上学到什么。\n一、他是个把\u0026quot;不可能\u0026quot;当起点的人 \u0026ldquo;你的潜力远超想象。普通人也能选择成为非凡者。\u0026rdquo;\n\u0026ldquo;检验荒谬之事。当某事看似不可能时，追问：\u0026lsquo;实现它需要什么条件？\u0026rsquo;\u0026rdquo;\n\u0026ldquo;当事情足够重要时，即使胜算渺茫也要坚持到底。\u0026rdquo;\n大部分人的思维方式是这样的：看到一件事，先判断\u0026quot;这可能吗？\u0026ldquo;如果觉得不可能，就不做了。\n马斯克的思维方式完全反过来。他看到一件事，先问\u0026quot;这件事值不值得做？\u0026ldquo;如果值得，那\u0026quot;不可能\u0026quot;只是一个需要解决的问题，不是放弃的理由。\n2002年他创办SpaceX的时候，没有人相信一个互联网出身的年轻人能造火箭。他去俄罗斯买火箭，俄方报价高得离谱。换做普通人，可能就放弃了：\u0026ldquo;果然，火箭不是我能碰的。\u0026rdquo;\n但马斯克没有。他回去算了一笔账：火箭的原材料——航空级铝合金、钛、铜、碳纤维——在商品市场上的价格，只占火箭售价的大约2%。也就是说，火箭之所以贵，不是因为材料贵，而是因为整个行业的效率太低。\n于是他自己造。SpaceX就这样诞生了，几年内把火箭发射成本砍掉了将近90%。\n这个故事告诉我们一个道理：\u0026ldquo;不可能\u0026quot;这三个字，往往只是\u0026quot;我还没认真想过\u0026quot;的代名词。\n二、他是个从\u0026quot;最基本事实\u0026quot;出发思考的人 \u0026ldquo;从基本原理出发推理，而非效仿他人所为。\u0026rdquo;\n\u0026ldquo;唯一不变的定律是物理学定律。\u0026rdquo;\n\u0026ldquo;先假设自己是错的，再追求减少错误。\u0026rdquo;\n如果说马斯克有什么\u0026quot;超能力\u0026rdquo;，那就是第一性原理思维（First Principles Thinking）。\n这是什么意思？用一个生活化的例子来解释：\n假设你想开一家奶茶店。大部分人的思路是：\u0026ldquo;看看别人家奶茶店怎么做的，我差不多也那样做。\u0026ldquo;这叫类比思维——别人怎么做，我就怎么做。\n第一性原理思维不一样。它会问：\u0026ldquo;奶茶的本质是什么？\u0026quot;——茶叶、牛奶、糖、水。\u0026ldquo;这些原材料多少钱？\u0026quot;——可能一杯成本不到3块钱。\u0026ldquo;那为什么外面卖15-20块？\u0026quot;——因为房租、人工、品牌溢价。\u0026ldquo;如果我把房租和人工省掉呢？\u0026quot;——于是你可能想到做外卖专门店，或者做奶茶原料包在网上卖。\n这就是第一性原理：不问别人怎么做，而是问这件事的最基本事实是什么，然后从这些事实出发重新推导。\n马斯克在69条法则里反复强调这一点。他说\u0026quot;所有要求都应视为建议\u0026rdquo;，意思是不要因为\u0026quot;行业惯例\u0026quot;是这样的，你就觉得必须这样做。他说\u0026quot;最佳部件是无部件；最佳流程是无流程\u0026rdquo;，意思是如果能不用某个零件或某个步骤，那才是最优解。\n这个思维方式对普通人特别有用。 因为我们生活中太多决策，其实都是在\u0026quot;照着别人做\u0026rdquo;。选专业看什么热门，找工作看别人去哪，买什么东西看别人推荐。但如果你能停下来问一句：\u0026ldquo;这件事最基本的道理是什么？\u0026ldquo;你可能会发现完全不同的答案。\n三、他是个\u0026quot;做了再说\u0026quot;的行动派 \u0026ldquo;不制造产品，就没有产品。\u0026rdquo;\n\u0026ldquo;原型即证明。从某处开始，质疑假设，并适应现实。\u0026rdquo;\n\u0026ldquo;专注于那些刚刚成为可能的事物。不要等待世界需要它。如果它显然应该存在，就去创造它。\u0026rdquo;\n很多人有一个毛病：想得太多，做得太少。\n先做完美的计划，再找完美的时机，再等到所有条件都成熟……然后就没有然后了。\n马斯克不是这样。他的态度是：先动手做一个出来，别管完不完美。\nSpaceX的前三次火箭发射全部失败。第三次失败的时候，公司几乎要破产了。但如果他没有在一开始就动手去做，而是等到一切准备就绪，SpaceX永远不会存在。\n\u0026ldquo;原型即证明\u0026quot;这四个字特别值得记住。你想写一本书？先写第一章。你想学编程？先写第一行代码。你想创业？先做一个最简陋的产品版本。\n完成比完美重要。因为只有做出来，你才能发现问题，才能改进，才能进步。\n\u0026ldquo;每日不进则退：要么加速创新，要么任其放缓。\u0026rdquo;\n这句话听起来有点极端，但它揭示了一个真相：时间是单向的，你不主动向前走，就已经在被世界抛在后面了。\n四、他是个不怕\u0026quot;丑\u0026quot;的人——极致的务实主义 \u0026ldquo;尽可能贴近实际工作。不要让自己远离决策带来的痛苦。\u0026rdquo;\n\u0026ldquo;身先士卒。睡在工厂车间。立即亲临问题现场。\u0026rdquo;\n\u0026ldquo;了解白痴指数——掌握零部件的真实成本。\u0026rdquo;\n\u0026ldquo;设计、工程学与制造相分离，必然导致功能失调。\u0026rdquo;\n很多老板是这样的：坐在办公室里看报表、开开会，通过层层管理层传递指令。马斯克不是。特斯拉产能出问题的时候，他亲自睡在工厂地板上，一线一线地排查问题。\n为什么要这样？因为他知道一个道理：离问题越远，做出来的决策越烂。\n他提了一个很有意思的概念叫\u0026quot;白痴指数\u0026rdquo;——就是一个成品的成本，除以它的原材料成本。如果这个指数很高，说明中间有大量的浪费和低效。这不是什么高深的经济学理论，但如果你不亲自去看、去问、去碰那些零件，你永远不知道这个指数有多离谱。\n他还说了一句特别扎心的话：\n\u0026ldquo;共情力并非资产。\u0026rdquo;\n这话乍听很冷血，但他的意思不是\u0026quot;不要关心别人\u0026rdquo;，而是在做关键决策时，不能因为怕得罪人就做出错误的判断。火箭设计不合理就是不合理，不会因为你同情工程师的感受就变合理了。物理学不照顾任何人的情绪。\n这种务实精神对我们普通人意味着什么？意味着：别骗自己。\n你在学一门技能但一直没进步？不要怪环境不好、老师不行，老老实实去看自己每天练了多久。你想减肥但一直没瘦下来？别说什么\u0026quot;我体质特殊\u0026rdquo;，诚实地记录自己每天吃了什么。\n直面现实，哪怕它很丑。因为只有看清现实，才能改变现实。\n五、他是个\u0026quot;简化狂魔\u0026rdquo; \u0026ldquo;算法之道：质疑需求 → 尝试删除部件或流程 → 简化 → 加速 → 自动化。\u0026rdquo;\n\u0026ldquo;先过度删减，再补回绝对必要项。\u0026rdquo;\n\u0026ldquo;简约造就可靠性与低成本。\u0026rdquo;\n马斯克有一套著名的\u0026quot;五步工作法\u0026rdquo;，在69条法则里也有体现。核心思路是：\n先质疑每个需求——谁说的？为什么需要？ 能删的就删——如果一个部件或步骤不是绝对必要的，删掉它。 简化剩下的——在删无可删的基础上再简化。 加速——让流程变得更快。 最后才是自动化——很多人一开始就想自动化，但你自动化一个本来就不该存在的流程，只是浪费钱。 注意顺序：先删，再简，再快，最后自动化。\n这个思路反直觉吗？其实仔细想想，这才是对的。我们经常在本来就不该做的事情上花大力气优化，结果就是——用更高效的方式做了一件不该做的事。\n生活中也一样。你的衣柜里有多少衣服是一年都没穿过的？你的待办清单里有多少事项是其实根本不需要做的？你的社交圈里有多少应酬是完全可以不去的？\n少即是多。这不是鸡汤，这是工程学。\n六、他是个把人生当游戏、把工作当命的人 \u0026ldquo;把人生当作游戏。投入极限硬核状态。\u0026rdquo;\n\u0026ldquo;全力以赴，醒着的时间都在工作，投入极限硬核状态。\u0026rdquo;\n\u0026ldquo;确保你真正热爱所从事的事业——并甘愿承受痛苦。\u0026rdquo;\n\u0026ldquo;失败本质上无关紧要，除非是灾难性的。畏惧失败是失败的最大根源。\u0026rdquo;\n\u0026ldquo;加倍下注，押上所有筹码。\u0026rdquo;\n\u0026ldquo;永不放弃，除非死亡或完全丧失行动能力。\u0026rdquo;\n\u0026ldquo;幽默感是差异化优势。\u0026rdquo;\n把这几条放在一起看，你会发现一个有趣的组合：极端的认真 + 极端的放松。\n一方面，他说要\u0026quot;极限硬核\u0026rdquo;，醒着的时间都在工作，永不放弃。另一方面，他说要把人生当游戏，还说幽默感是优势。\n这不是矛盾的。这是同一枚硬币的两面。\n想想你打游戏的时候：你可以非常投入、非常拼命地刷副本，但你在游戏中不会真的害怕失败——大不了重新来过。这种\u0026quot;全力以赴但不恐惧失败\u0026quot;的状态，恰恰是最高效的状态。\n马斯克2008年差点破产，SpaceX和特斯拉都濒临倒闭。他后来回忆说那时候经常半夜醒来发现枕头被泪水打湿。但他没有停下来，继续投钱、继续干。后来SpaceX第四次发射成功了，特斯拉也活过来了。\n你说他是乐观吗？不是。他说\u0026quot;所有坏消息都应大声且频繁地传达。好消息只需轻声说一次足矣。\u0026ldquo;他是悲观吗？也不是。他说\u0026quot;当事情足够重要时，即使胜算渺茫也要坚持到底。\u0026rdquo;\n他不是乐观或悲观，他是\u0026quot;不管怎样先干了再说\u0026rdquo;。\n而这种态度的前提是：你做的事情是你真心觉得重要的。\n\u0026ldquo;创造价值的人生才值得活过。莫求虚名，但求实干。\u0026rdquo;\n如果你做的事你自己都不觉得有意义，那你就不可能进入那种\u0026quot;极限硬核\u0026quot;的状态。所以他在法则里反复强调——找到你真正热爱的事业，然后全力以赴。\n七、他是个把\u0026quot;速度\u0026quot;当武器的人 \u0026ldquo;极度紧迫感是我们的运营准则。\u0026rdquo;\n\u0026ldquo;以两倍速运转的工厂本质上等同于两家工厂。\u0026rdquo;\n\u0026ldquo;创新速度才是关键。\u0026rdquo;\n\u0026ldquo;攻克瓶颈环节。若9999个环节运作正常而一个环节停滞，该环节将决定整体生产效率。\u0026rdquo;\n\u0026ldquo;并行推进事务。\u0026rdquo;\n马斯克对速度的执着到了偏执的程度。他认为如果你能以两倍速运转，你本质上就拥有了两倍的资源。\n他特别关注\u0026quot;瓶颈\u0026rdquo;——9999个环节正常运作，1个环节卡住了，那整个系统的效率就由这1个环节决定。这听起来是常识，但大部分公司和大部分人，恰恰忽视了最慢的那个环节，反而花时间去优化已经很快的部分。\n对个人来说也是一样。 你每天花时间最多的那件事，才是你人生的瓶颈。如果你每天刷手机3小时，那你的\u0026quot;瓶颈\u0026quot;就是这3小时。不管你在其他时间多么高效，这3小时的浪费就拉低了你的整体水平。\n找到瓶颈，解决瓶颈。这不是什么高深的管理学，就是最基本的效率逻辑。\n那么，我们普通人能学到什么？ 说了这么多马斯克是什么样的人，你可能会想：\u0026ldquo;他又不是普通人，我又没他那个脑子，学他有什么用？\u0026rdquo;\n但回头看那69条法则，你会发现几乎没有一条是关于\u0026quot;聪明\u0026quot;的。它们全都是关于：\n1. 思维方式：用第一性原理思考 不要因为别人都这样做，你就这样做。问自己：这件事最基本的道理是什么？有没有完全不同的解决方式？\n这个习惯，从今天就可以开始练习。每当你遇到一个决策，先别急着做，问自己：\u0026ldquo;我是怎么得出这个结论的？我是不是只是在模仿别人？\u0026rdquo;\n2. 行动力：先做出来再说 别等完美时机，别等完美条件。先动手，在做的过程中调整。\u0026ldquo;原型即证明\u0026rdquo;——先有一个粗糙的版本，胜过永远停留在脑子里。\n3. 诚实面对现实 不骗自己，不回避问题。离问题越近，做出的判断越好。别在舒适区里空想，去现场，去一线，去看真实的数据。\n4. 简化，再简化 在做任何事之前，先问：这件事真的有必要做吗？能不能删掉？如果删不掉，能不能更简单？我们大部分人的问题不是做得不够多，而是做了太多不该做的事。\n5. 找到你真正在乎的事 没有热爱，就没有全力以赴的动力。马斯克说\u0026quot;确保你真正热爱所从事的事业——并甘愿承受痛苦。\u0026ldquo;如果你做的事让你觉得痛苦但不值得，那可能不是你真正的事业。\n6. 速度就是竞争力 不进则退。找到你的瓶颈，解决它。用紧迫感驱动自己，但不是焦虑——而是那种\u0026quot;游戏通关\u0026quot;式的紧迫感。\n7. 把人生当游戏 别太怕失败。失败没关系，除非是灾难性的。全力以赴，但保持轻松的心态。幽默感是一种优势，因为它让你在压力下依然能保持清醒。\n最后 马斯克不是完人。他有他的问题，管理风格粗暴、说话口无遮拦、对员工要求苛刻到不近人情。这些69条法则也不全是金科玉律，有些可能只适用于他那种体量的公司和那种极端的处境。\n但如果我们只看他身上值得学习的那一面，你会发现他其实提供了一个很清晰的模板：\n用第一性原理思考 → 找到真正重要的事 → 立刻动手去做 → 直面现实不断改进 → 保持速度 → 全力以赴但不惧怕失败。\n这个模板不需要你是个天才。它需要的是勇气、诚实和行动力。\n而这三个东西，每个人都有，只是大部分人没有用起来。\n\u0026ldquo;你的潜力远超想象。普通人也能选择成为非凡者。\u0026rdquo;\n这不是鸡汤。这是马斯克用自己的行动证明过的事实。\n参考资料 First Principles: Elon Musk on the Power of Thinking for Yourself - James Clear Elon Musk Leadership: Decoding the Blueprint for Success - Lomit Patel Elon Musk Leadership Style – Vision, Traits \u0026amp; Leadership Analysis Elon Musk\u0026rsquo;s Relentless Work Ethic: A Blueprint for Extraordinary Success - LinkedIn ","permalink":"https://www.wangyunqing.top/posts/who-is-elon-musk-really-69-rules-analysis/","summary":"\u003ch2 id=\"先问一个问题你觉得马斯克是天才还是疯子\"\u003e先问一个问题：你觉得马斯克是天才还是疯子？\u003c/h2\u003e\n\u003cp\u003e有人说他是天才，特斯拉改变了汽车行业，SpaceX让火箭回收变成了现实。有人说他是疯子，每周工作100小时，睡在工厂地板上，动不动就开除人。\u003c/p\u003e\n\u003cp\u003e但不管你怎么看他，有一点没法否认：\u003cstrong\u003e这个人在同时颠覆好几个行业，而且都做成了。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e他到底是怎么做到的？是他的脑子比我们聪明十倍？还是他有什么我们普通人不知道的秘密？\u003c/p\u003e\n\u003cp\u003e最近我读到了一份整理好的马斯克核心法则，一共69条，据说是他本人以及他的公司取得成功背后的基础思想。读完之后，我发现了一个有意思的事情——\u003cstrong\u003e这些法则里面，没有一条是\u0026quot;你要比我聪明\u0026quot;或者\u0026quot;你要有天赋\u0026quot;。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e全是态度、方法和行动。\u003c/p\u003e\n\u003cp\u003e这说明什么？说明马斯克的成功，至少有很大一部分是\u003cstrong\u003e可学习的\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e今天我们就从这69条法则里，来扒一扒马斯克到底是个什么样的人，以及——更重要的——我们能从他身上学到什么。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"一他是个把不可能当起点的人\"\u003e一、他是个把\u0026quot;不可能\u0026quot;当起点的人\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;你的潜力远超想象。普通人也能选择成为非凡者。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;检验荒谬之事。当某事看似不可能时，追问：\u0026lsquo;实现它需要什么条件？\u0026rsquo;\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;当事情足够重要时，即使胜算渺茫也要坚持到底。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e大部分人的思维方式是这样的：看到一件事，先判断\u0026quot;这可能吗？\u0026ldquo;如果觉得不可能，就不做了。\u003c/p\u003e\n\u003cp\u003e马斯克的思维方式完全反过来。他看到一件事，先问\u0026quot;这件事值不值得做？\u0026ldquo;如果值得，那\u0026quot;不可能\u0026quot;只是一个需要解决的问题，不是放弃的理由。\u003c/p\u003e\n\u003cp\u003e2002年他创办SpaceX的时候，没有人相信一个互联网出身的年轻人能造火箭。他去俄罗斯买火箭，俄方报价高得离谱。换做普通人，可能就放弃了：\u0026ldquo;果然，火箭不是我能碰的。\u0026rdquo;\u003c/p\u003e\n\u003cp\u003e但马斯克没有。他回去算了一笔账：火箭的原材料——航空级铝合金、钛、铜、碳纤维——在商品市场上的价格，只占火箭售价的大约2%。也就是说，\u003cstrong\u003e火箭之所以贵，不是因为材料贵，而是因为整个行业的效率太低。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e于是他自己造。SpaceX就这样诞生了，几年内把火箭发射成本砍掉了将近90%。\u003c/p\u003e\n\u003cp\u003e这个故事告诉我们一个道理：\u003cstrong\u003e\u0026ldquo;不可能\u0026quot;这三个字，往往只是\u0026quot;我还没认真想过\u0026quot;的代名词。\u003c/strong\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"二他是个从最基本事实出发思考的人\"\u003e二、他是个从\u0026quot;最基本事实\u0026quot;出发思考的人\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;从基本原理出发推理，而非效仿他人所为。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;唯一不变的定律是物理学定律。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;先假设自己是错的，再追求减少错误。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e如果说马斯克有什么\u0026quot;超能力\u0026rdquo;，那就是\u003cstrong\u003e第一性原理思维\u003c/strong\u003e（First Principles Thinking）。\u003c/p\u003e\n\u003cp\u003e这是什么意思？用一个生活化的例子来解释：\u003c/p\u003e\n\u003cp\u003e假设你想开一家奶茶店。大部分人的思路是：\u0026ldquo;看看别人家奶茶店怎么做的，我差不多也那样做。\u0026ldquo;这叫\u003cstrong\u003e类比思维\u003c/strong\u003e——别人怎么做，我就怎么做。\u003c/p\u003e\n\u003cp\u003e第一性原理思维不一样。它会问：\u0026ldquo;奶茶的本质是什么？\u0026quot;——茶叶、牛奶、糖、水。\u0026ldquo;这些原材料多少钱？\u0026quot;——可能一杯成本不到3块钱。\u0026ldquo;那为什么外面卖15-20块？\u0026quot;——因为房租、人工、品牌溢价。\u0026ldquo;如果我把房租和人工省掉呢？\u0026quot;——于是你可能想到做外卖专门店，或者做奶茶原料包在网上卖。\u003c/p\u003e\n\u003cp\u003e这就是第一性原理：\u003cstrong\u003e不问别人怎么做，而是问这件事的最基本事实是什么，然后从这些事实出发重新推导。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e马斯克在69条法则里反复强调这一点。他说\u0026quot;所有要求都应视为建议\u0026rdquo;，意思是不要因为\u0026quot;行业惯例\u0026quot;是这样的，你就觉得必须这样做。他说\u0026quot;最佳部件是无部件；最佳流程是无流程\u0026rdquo;，意思是如果能不用某个零件或某个步骤，那才是最优解。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e这个思维方式对普通人特别有用。\u003c/strong\u003e 因为我们生活中太多决策，其实都是在\u0026quot;照着别人做\u0026rdquo;。选专业看什么热门，找工作看别人去哪，买什么东西看别人推荐。但如果你能停下来问一句：\u0026ldquo;这件事最基本的道理是什么？\u0026ldquo;你可能会发现完全不同的答案。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"三他是个做了再说的行动派\"\u003e三、他是个\u0026quot;做了再说\u0026quot;的行动派\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;不制造产品，就没有产品。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;原型即证明。从某处开始，质疑假设，并适应现实。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;专注于那些刚刚成为可能的事物。不要等待世界需要它。如果它显然应该存在，就去创造它。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e很多人有一个毛病：想得太多，做得太少。\u003c/p\u003e\n\u003cp\u003e先做完美的计划，再找完美的时机，再等到所有条件都成熟……然后就没有然后了。\u003c/p\u003e\n\u003cp\u003e马斯克不是这样。他的态度是：\u003cstrong\u003e先动手做一个出来，别管完不完美。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpaceX的前三次火箭发射全部失败。第三次失败的时候，公司几乎要破产了。但如果他没有在一开始就动手去做，而是等到一切准备就绪，SpaceX永远不会存在。\u003c/p\u003e\n\u003cp\u003e\u0026ldquo;原型即证明\u0026quot;这四个字特别值得记住。你想写一本书？先写第一章。你想学编程？先写第一行代码。你想创业？先做一个最简陋的产品版本。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e完成比完美重要。因为只有做出来，你才能发现问题，才能改进，才能进步。\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;每日不进则退：要么加速创新，要么任其放缓。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e这句话听起来有点极端，但它揭示了一个真相：\u003cstrong\u003e时间是单向的，你不主动向前走，就已经在被世界抛在后面了。\u003c/strong\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"四他是个不怕丑的人极致的务实主义\"\u003e四、他是个不怕\u0026quot;丑\u0026quot;的人——极致的务实主义\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;尽可能贴近实际工作。不要让自己远离决策带来的痛苦。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;身先士卒。睡在工厂车间。立即亲临问题现场。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;了解白痴指数——掌握零部件的真实成本。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;设计、工程学与制造相分离，必然导致功能失调。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e很多老板是这样的：坐在办公室里看报表、开开会，通过层层管理层传递指令。马斯克不是。特斯拉产能出问题的时候，他亲自睡在工厂地板上，一线一线地排查问题。\u003c/p\u003e\n\u003cp\u003e为什么要这样？因为他知道一个道理：\u003cstrong\u003e离问题越远，做出来的决策越烂。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e他提了一个很有意思的概念叫\u0026quot;白痴指数\u0026rdquo;——就是一个成品的成本，除以它的原材料成本。如果这个指数很高，说明中间有大量的浪费和低效。这不是什么高深的经济学理论，但如果你不亲自去看、去问、去碰那些零件，你永远不知道这个指数有多离谱。\u003c/p\u003e\n\u003cp\u003e他还说了一句特别扎心的话：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;共情力并非资产。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e这话乍听很冷血，但他的意思不是\u0026quot;不要关心别人\u0026rdquo;，而是\u003cstrong\u003e在做关键决策时，不能因为怕得罪人就做出错误的判断\u003c/strong\u003e。火箭设计不合理就是不合理，不会因为你同情工程师的感受就变合理了。物理学不照顾任何人的情绪。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e这种务实精神对我们普通人意味着什么？意味着：别骗自己。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e你在学一门技能但一直没进步？不要怪环境不好、老师不行，老老实实去看自己每天练了多久。你想减肥但一直没瘦下来？别说什么\u0026quot;我体质特殊\u0026rdquo;，诚实地记录自己每天吃了什么。\u003c/p\u003e\n\u003cp\u003e直面现实，哪怕它很丑。因为只有看清现实，才能改变现实。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"五他是个简化狂魔\"\u003e五、他是个\u0026quot;简化狂魔\u0026rdquo;\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;算法之道：质疑需求 → 尝试删除部件或流程 → 简化 → 加速 → 自动化。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;先过度删减，再补回绝对必要项。\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;简约造就可靠性与低成本。\u0026rdquo;\u003c/p\u003e","title":"从69条法则看真实的马斯克：一个疯子，还是一个值得我们学习的人？"},{"content":"你一定听过这个段子：怎么退出 Vim？\n这是一个在程序员圈子里流传了无数年的经典笑话。Stack Overflow 上关于\u0026quot;如何退出 Vim\u0026quot;的问题浏览量超过 260 万次。但笑归笑，如果你真的花时间学会了 Vim，你会发现一个惊人的事实——它根本不是什么古董，而是一把被你错过多年的利器。\nVim 到底是什么？ Vim，全称 Vi IMproved，是 1991 年由 Bram Moolenaar 在经典 Unix 编辑器 vi 的基础上改进而来的文本编辑器。而 vi 的历史更早，可以追溯到 1976 年。\n你可能会问：都快 2026 年了，为什么还要学一个比很多人年纪都大的编辑器？\n答案很简单：因为它的设计理念至今无人超越。\n想象一下，你正在写代码，右手在键盘和鼠标之间来回切换几百次。选中、删除、移动光标、再选中、再删除……一天下来手腕隐隐作痛。而一个熟练的 Vim 用户，双手始终停留在键盘主行（asdf jkl;），像弹钢琴一样流畅地编辑文本，鼠标积了一层灰。\n这就是 Vim 的魔力。\n最重要的一件事：模式 打开 VS Code、记事本、Word，你打开就能打字。这是大多数人理解的\u0026quot;编辑器\u0026quot;。\nVim 不一样。 它把编辑文本这件事拆分成了不同的\u0026quot;模式\u0026quot;——就像手机有不同的屏幕页面一样，每种模式下按键的功能完全不同。\n普通模式（Normal Mode） 这是 Vim 启动后你默认所处的模式。在这个模式下，你按下的字母键不会输入文字，而是执行命令。\nh 向左移动光标 j 向下移动光标 k 向上移动光标 l 向右移动光标 没错，Vim 用 hjkl 来移动光标，而不是方向键。为什么？因为 hjkl 就在右手的主行位置，你的手指不需要移动就能导航。想象 j 是一支朝下的箭头，k 朝上，h 在最左边所以向左，l 在最右边所以向右。\n在普通模式下你还可以做很多事情：删除、复制、搜索、替换……你大概会花 80% 的时间待在这个模式里。\n插入模式（Insert Mode） 这才是你真正打字的地方。按 i 进入插入模式，然后就可以像普通编辑器一样输入文字了。修改完成后按 \u0026lt;Esc\u0026gt; 回到普通模式。\nVim 的哲学是：进入插入模式，完成一次修改，立刻退出。 不是一直待在插入模式下打字，而是\u0026quot;原子化\u0026quot;地编辑——每次只做一个精确的改动。\n可视模式（Visual Mode） 按 v 进入。类似于用鼠标拖选文本，但完全用键盘完成。选中后可以对高亮的文本执行删除、复制等操作。\n命令模式（Command Mode） 在普通模式下按 : 进入。这里可以输入各种命令，比如保存文件（:w）、退出（:q）、搜索替换（:%s/old/new/g）等等。\n生存必备：进入和退出 既然说到了退出，那我们就先学会这个：\n操作 命令 打开文件 vim 文件名 保存并退出 :wq 不保存退出 :q! 保存文件 :w 记住 \u0026lt;Esc\u0026gt; 键是你的好朋友。任何时候不知道自己在什么模式了，狂按两下 \u0026lt;Esc\u0026gt; 就回到普通模式。\n删除文本：不只是按退格键 在普通模式下，删除操作有非常丰富的变化：\n命令 作用 x 删除光标所在位置的字符 dw 删除从光标到下一个单词开头的内容 de 删除从光标到当前单词末尾的内容 d$ 删除从光标到行末的内容 dd 删除整行 2dd 删除两行 你发现规律了吗？\nVim 的秘密：它是一门语言 这是理解 Vim 最关键的一点。Vim 的命令不是快捷键，而是一套可以自由组合的语法。\n它的基本结构是：\n操作符 + [数字] + 动作 就像英语一样：\nd 是动词（delete，删除） w 是名词（word，单词） dw = \u0026ldquo;删除一个单词\u0026rdquo; 再加上数字修饰：\nd2w = \u0026ldquo;删除两个单词\u0026rdquo; 3dd = \u0026ldquo;删除三行\u0026rdquo; 操作符不止 d（删除）一个：\n操作符 含义 示例 d 删除（delete） dw 删除单词 c 修改（change，删除并进入插入模式） cw 修改单词 y 复制（yank） yw 复制单词 动作也远不止 w（单词）：\n动作 含义 w 到下一个单词开头 e 到当前单词末尾 $ 到行末 0 到行首 掌握了这个规律，你不需要死记硬背几百个命令，只需要理解几个操作符和几个动作，然后自由组合。这就是 Vim 的\u0026quot;可组合语法\u0026quot;——你学的不是快捷键，而是一门编辑文本的语言。\n这就像学会了\u0026quot;主语 + 谓语 + 宾语\u0026quot;的句式之后，你可以造出无穷多个句子。\n撤销和重做 手滑了？不要慌：\n命令 作用 u 撤销上一步操作 U 撤销对当前行的所有修改 Ctrl-R 重做（撤销你的撤销） 粘贴和替换 删除的内容不会凭空消失，Vim 会把它存在一个寄存器里。按 p 就可以粘贴到光标后面。\n如果是整行被删除了，p 会把它粘贴到当前行的下方。\n替换单个字符可以用 r 加上新字符。如果想连续替换多个字符，用大写的 R 进入替换模式——在这个模式下，你输入的每个字符都会覆盖光标处的原有字符，直到按 \u0026lt;Esc\u0026gt; 退出。\n搜索和替换 在文件中查找内容，输入 / 加搜索词：\n操作 命令 正向搜索 /搜索词 反向搜索 ?搜索词 下一个匹配 n 上一个匹配 N 跳回之前的位置 Ctrl-O 替换操作更加强大：\n命令 作用 :s/old/new 替换当前行第一个匹配 :s/old/new/g 替换当前行所有匹配 :#,#s/old/new/g 替换指定行范围内的所有匹配 :%s/old/new/g 替换整个文件的所有匹配 :%s/old/new/gc 替换整个文件，每次替换前确认 跳转和定位 在大文件中快速移动是 Vim 的强项：\n命令 作用 Ctrl-G 显示当前行号和文件状态 gg 跳到文件第一行 G 跳到文件最后一行 行号G 跳到指定行 % 跳到配对的括号 % 在调试代码时特别好用——把光标放在一个括号上按 %，就会跳到与之配对的括号上，帮你快速定位未闭合的括号。\n打开新行和追加文本 命令 作用 o 在当前行下方打开新行并进入插入模式 O 在当前行上方打开新行并进入插入模式 a 在光标后面进入插入模式 A 在行末进入插入模式 i 在光标前面进入插入模式 I 在行首进入插入模式 i 和 a 的区别很简单：i 在光标前面插入，a 在光标后面插入。而大写的 A 直接跳到行末再插入——这在给一行末尾追加内容时非常方便，省去了先按 $ 再按 i 的两步操作。\n复制（yank）和粘贴 复制的操作符是 y：\n命令 作用 yw 复制一个单词 yy 复制整行 y$ 复制到行末 p 粘贴到光标后面 也可以用可视模式（按 v）选中想要的文本，再按 y 复制，移动到目标位置按 p 粘贴。\n外部命令和文件操作 Vim 里可以不离开编辑器就执行 shell 命令：\n:!ls — 查看当前目录内容 :!dir — Windows 下的等效命令 :w 文件名 — 另存为新文件 :r 文件名 — 将另一个文件的内容插入到光标位置 甚至可以把外部命令的输出直接插入到文件中：:r !ls 会把目录列表插入到当前光标下方。\n设置选项 Vim 的很多行为可以通过 :set 命令来调整：\n命令 作用 :set ic 搜索时忽略大小写 :set hls 高亮显示所有搜索结果 :set is 增量搜索（边打边搜） :set noic 关闭忽略大小写 如果只是某一次搜索想忽略大小写，可以在搜索词后面加 \\c：/hello\\c。\n帮助系统 Vim 自带了极其详尽的帮助文档。输入 :help 或按 \u0026lt;F1\u0026gt; 即可打开。你还可以查找特定主题：\n:help w — 查看关于 w 命令的帮助 :help user-manual — 打开用户手册 :help vimrc-intro — 了解配置文件 在命令行中输入时，Ctrl-D 可以列出所有可能的补全，Tab 键可以自动补全命令。这两个快捷键在 :help 后面也非常好用。\n个性化配置 Vim 的强大在于它的可定制性。通过创建一个配置文件（Unix 下是 ~/.vimrc，Windows 下是 ~/_vimrc），你可以把所有喜欢的设置保存下来，每次启动 Vim 时自动生效。\n最简单的起步方式是使用 Vim 自带的示例配置：\n:edit ~/.vimrc :r $VIMRUNTIME/vimrc_example.vim :w 这会给你一个包含语法高亮等基础功能的配置。之后你可以根据自己的需要慢慢添加更多设置。\n学习路线建议 如果你读到这里已经跃跃欲试，这里有一条亲测有效的学习路线：\n第一步：完成 vimtutor。 在终端输入 vimtutor 就能启动一个交互式教程，大约 30 分钟。就是本文的主要内容来源。别光读，跟着练。\n第二步：坚持使用一周。 把你日常的文本编辑任务都用 Vim 完成。前几天会很痛苦，手指不听使唤，工作效率断崖式下降。但这就像学骑自行车——摔几天之后，突然就通了。\n第三步：了解可组合语法的威力。 当你意识到 d + i + \u0026quot; = 删除引号内的内容（di\u0026quot;），c + a + p = 修改一个段落（cap）时，你就入门了。你不再是记忆命令，而是在\u0026quot;说\u0026quot;Vim 这门语言。\n第四步：按需扩展。 不要一上来就装几十个插件。从最少的配置开始，遇到痛点再加对应的解决方案。这样你才能真正理解每个设置的作用。\n最后说几句 Vim 的学习曲线确实陡峭，这一点没必要美化。前两天的体验可能会让你想砸键盘。但一旦跨过那个坎，你会发现自己编辑文本的方式发生了质变——手指不需要离开主行，鼠标变得多余，编辑速度和思维速度同步。\n更重要的是，Vim 的命令体系在过去 30 年里几乎没有变化。你今天学的每一个命令，在 2030 年、2040 年照样管用。在这个技术半年一变的时代，一个能陪伴你整个职业生涯的工具，值得你投入几天的时间。\n打开终端，输入 vimtutor，开始吧。\n参考资料：\nVim 官方内置教程 vimtutor（中文版） Why Vim? The Modal Editing Philosophy Learning Vim in 3 Steps - Bozhidar Batsov Practical Vim - Drew Neil ","permalink":"https://www.wangyunqing.top/posts/vim-from-basics-to-understanding/","summary":"\u003cp\u003e你一定听过这个段子：怎么退出 Vim？\u003c/p\u003e\n\u003cp\u003e这是一个在程序员圈子里流传了无数年的经典笑话。Stack Overflow 上关于\u0026quot;如何退出 Vim\u0026quot;的问题浏览量超过 260 万次。但笑归笑，如果你真的花时间学会了 Vim，你会发现一个惊人的事实——\u003cstrong\u003e它根本不是什么古董，而是一把被你错过多年的利器。\u003c/strong\u003e\u003c/p\u003e\n\u003ch2 id=\"vim-到底是什么\"\u003eVim 到底是什么？\u003c/h2\u003e\n\u003cp\u003eVim，全称 Vi IMproved，是 1991 年由 Bram Moolenaar 在经典 Unix 编辑器 vi 的基础上改进而来的文本编辑器。而 vi 的历史更早，可以追溯到 1976 年。\u003c/p\u003e\n\u003cp\u003e你可能会问：都快 2026 年了，为什么还要学一个比很多人年纪都大的编辑器？\u003c/p\u003e\n\u003cp\u003e答案很简单：\u003cstrong\u003e因为它的设计理念至今无人超越。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e想象一下，你正在写代码，右手在键盘和鼠标之间来回切换几百次。选中、删除、移动光标、再选中、再删除……一天下来手腕隐隐作痛。而一个熟练的 Vim 用户，双手始终停留在键盘主行（asdf jkl;），像弹钢琴一样流畅地编辑文本，鼠标积了一层灰。\u003c/p\u003e\n\u003cp\u003e这就是 Vim 的魔力。\u003c/p\u003e\n\u003ch2 id=\"最重要的一件事模式\"\u003e最重要的一件事：模式\u003c/h2\u003e\n\u003cp\u003e打开 VS Code、记事本、Word，你打开就能打字。这是大多数人理解的\u0026quot;编辑器\u0026quot;。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVim 不一样。\u003c/strong\u003e 它把编辑文本这件事拆分成了不同的\u0026quot;模式\u0026quot;——就像手机有不同的屏幕页面一样，每种模式下按键的功能完全不同。\u003c/p\u003e\n\u003ch3 id=\"普通模式normal-mode\"\u003e普通模式（Normal Mode）\u003c/h3\u003e\n\u003cp\u003e这是 Vim 启动后你默认所处的模式。在这个模式下，你按下的字母键\u003cstrong\u003e不会\u003c/strong\u003e输入文字，而是执行命令。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eh\u003c/code\u003e 向左移动光标\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ej\u003c/code\u003e 向下移动光标\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ek\u003c/code\u003e 向上移动光标\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003el\u003c/code\u003e 向右移动光标\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e没错，Vim 用 \u003ccode\u003ehjkl\u003c/code\u003e 来移动光标，而不是方向键。为什么？因为 \u003ccode\u003ehjkl\u003c/code\u003e 就在右手的主行位置，你的手指不需要移动就能导航。想象 \u003ccode\u003ej\u003c/code\u003e 是一支朝下的箭头，\u003ccode\u003ek\u003c/code\u003e 朝上，\u003ccode\u003eh\u003c/code\u003e 在最左边所以向左，\u003ccode\u003el\u003c/code\u003e 在最右边所以向右。\u003c/p\u003e\n\u003cp\u003e在普通模式下你还可以做很多事情：删除、复制、搜索、替换……你大概会花 80% 的时间待在这个模式里。\u003c/p\u003e","title":"Vim 从入门到理解：一个编辑器为什么能让程序员着迷三十年"},{"content":"如果你听说过\u0026quot;薛定谔的猫\u0026quot;，觉得量子力学是一门只有天才才能理解的学问——放心，你不是一个人。物理学家费曼曾经说过一句名言：\u0026ldquo;我想我可以有把握地说，没有人真正理解量子力学。\u0026rdquo;\n但这句话有点误导。费曼说的\u0026quot;理解\u0026quot;，是指用直觉去感受它、用常识去解释它——而量子力学恰恰告诉我们，在最微小的世界里，常识是靠不住的。\n我们不需要\u0026quot;理解\u0026quot;量子力学为什么这么奇怪。我们只需要知道，它是怎么奇怪的，以及这种奇怪为什么重要。\n这篇文章不会出现任何公式。准备好了吗？我们开始。\n先说结论：小世界有不同的规则 你每天的生活遵循的是经典物理：扔出去的球会落地，开出去的车不会突然出现在另一个城市，你不可能同时在公司和家里。一切都很确定、很合逻辑。\n但当你把东西缩小到原子、电子、光子这个级别，规则就变了。变成什么样？\n一个粒子可以同时出现在好几个地方 你去\u0026quot;看\u0026quot;它的那一刻，它才决定自己在哪里 两个粒子可以跨越宇宙互相\u0026quot;感知\u0026quot; 粒子能穿墙而过 能量不是连续的，而是像楼梯一样一级一级的 这些听起来像科幻小说，但它们都被实验反复证实了。你手机里的芯片、医院的 MRI、超市的激光扫码枪，都在用这些原理工作。\n故事的起点：物理学家遇到了麻烦 时间回到 1900 年前后。那时候的物理学家很得意：牛顿搞定了运动和引力，麦克斯韦搞定了电和磁，热力学搞定了能量。人们觉得物理学的\u0026quot;大厦\u0026quot;基本完工了，只剩几块小砖头没砌好。\n结果那几块\u0026quot;小砖头\u0026quot;掀翻了整栋楼。\n麻烦一：烤炉的颜色。\n把一块铁放进炉子里加热。随着温度升高，它会从暗红变成亮红，再变成橙黄、白热。这个现象看起来简单，但用当时的理论去算，结果居然是：烤炉应该辐射出无限多的能量。无限多。这显然不对。\n1900 年，普朗克提出了一个大胆的假设：能量不是像水流一样可以无限细分的，它像硬币一样，有一个最小的单位。你不能支付半分钱，能量也一样——它是一份一份的。这个最小的单位，就叫量子（quantum）。\n麻烦二：光到底是什么。\n这个问题吵了两百年。牛顿说光是粒子，一粒一粒的小弹珠。惠更斯说光是波，像水面上的涟漪。两边各有道理，也各有解释不了的现象。\n后来大家基本接受了\u0026quot;光是波\u0026quot;的说法。但到了 1905 年，爱因斯坦发现了一个尴尬的事实：如果把光纯粹当成波，有一个叫\u0026quot;光电效应\u0026quot;的实验就完全解释不了——用某些颜色的光照金属，能打出电子来，但换一种颜色，再亮都打不出来。\n爱因斯坦说：光其实是一颗一颗的光子，每一颗带着特定大小的能量。颜色决定了每颗光子的能量大小，亮度只是光子的数量。紫光的光子能量大，能打出电子；红光的光子能量小，打不出来。跟亮度没关系。\n就这样，光同时是粒子又是波。这不是折中，这是事实。\n双缝实验：物理学史上最诡异的实验 如果说量子力学有一座\u0026quot;圣杯\u0026quot;，那就是双缝实验。费曼说，这个实验包含了量子力学\u0026quot;唯一的奥秘\u0026quot;。\n想象一堵墙，上面开了两条很窄的缝。你拿一把能发射子弹的枪对着墙射击。子弹穿过缝隙后，会在后面的屏幕上留下两道痕迹——很合理，对吧？\n现在换一下，不发射子弹了，改发射电子。电子是组成原子的小粒子，比子弹小得多，但本质上也是\u0026quot;一颗一颗\u0026quot;的东西。\n诡异的事情发生了。\n屏幕上没有出现两道痕迹，而是出现了一堆明暗交替的条纹——这就是干涉条纹，一种只有波才会产生的图案。\n你可能会想：也许是电子们互相撞来撞去产生的？为了排除这种可能，科学家把发射速度调到极慢——每次只发射一个电子。\n结果更诡异了：一个一个发射的电子，经过足够长时间后，照样在屏幕上形成了波的干涉条纹。\n一个单独的电子，产生了只有波才会有的干涉图案。\n这意味着什么？意味着这个电子同时穿过了两条缝，自己和自己发生了干涉。一个粒子，同时走了两条路。\n科学家不信邪：那我在两条缝旁边装个探测器，看它到底走的哪条缝！\n结果——当你去\u0026quot;看\u0026quot;的时候，干涉条纹消失了。屏幕上变成了两道普通痕迹，跟子弹一模一样。\n你不看它，它就是波，同时走两条路。你一看它，它就老老实实变成粒子，只走一条路。\n观测行为本身，改变了结果。这就是量子力学最让人不安的地方：观测者不是旁观者，而是参与者。\n叠加态：不是\u0026quot;在这里或在那里\u0026quot;，而是\u0026quot;在这里和那里\u0026quot; 双缝实验揭示的性质，叫做叠加态。\n日常生活里，一枚硬币要么正面要么反面。但如果你让它高速旋转起来呢？在旋转的过程中，它既不是正面也不是反面——它是正面的可能性和反面的可能性的叠加。\n量子世界的粒子就是这样：在没人观测的时候，它们处于所有可能状态的叠加。一个电子不是在左边或者右边，而是在左边和右边，同时存在于多个位置。\n只有当有东西去\u0026quot;测量\u0026quot;它——不管是人的仪器还是其他粒子的碰撞——它才会随机地\u0026quot;坍缩\u0026quot;到一个确定的状态。\n这就是薛定谔的猫的思想实验想要说明的问题。把一只猫关在盒子里，盒子里有一个装置：一个放射性原子，如果它衰变了，就释放毒气杀死猫。按照量子力学，在你打开盒子之前，原子处于\u0026quot;衰变了\u0026quot;和\u0026quot;没衰变\u0026quot;的叠加态——所以猫也处于\u0026quot;死了\u0026quot;和\u0026quot;活着\u0026quot;的叠加态。\n薛定谔提出这个实验不是为了说明猫真的很神奇，恰恰相反，他是想用荒谬的结论来质疑量子力学：你们看，如果把量子规律推到宏观世界，一只猫能同时死和活，这合理吗？\n直到今天，物理学家对\u0026quot;到底怎么从量子的叠加过渡到日常的确定\u0026quot;这个问题，依然没有统一的答案。这就是所谓的测量问题。\n薛定谔方程：量子世界的\u0026quot;天气预报\u0026quot; 既然量子粒子不像经典粒子那样有确定的位置和轨迹，那我们怎么描述它们的行为？\n答案就是波函数，用一个希腊字母 ψ（读作 psi）来表示。\n你可以把波函数想象成一张\u0026quot;概率地图\u0026quot;。就像天气预报说\u0026quot;明天北京有 70% 的概率下雨，30% 概率晴天\u0026quot;——波函数告诉你的就是\u0026quot;在某个位置找到这个粒子的概率有多大\u0026quot;。波函数值越大的地方，粒子出现在那里的可能性就越高。\n注意，ψ 本身不是概率。要得到真正的概率，需要取它的平方（|ψ|²）。这个细节很关键——它意味着概率永远是正数，符合常理。\n而薛定谔方程，就是描述这张概率地图如何随时间变化的规则。\n打个比方：牛顿第二定律（F = ma）告诉你，知道力和质量就能预测物体的运动轨迹。薛定谔方程做的是类似的事——它告诉你，知道一个粒子所处的环境（势能），就能算出它的波函数，进而知道它的概率分布和允许的能量值。\n薛定谔方程还揭示了一个重要的事实：能量是分级的。\n想象一根吉他弦。它不是随便怎么振动都行的——只有某些特定的振动模式才能稳定存在，产生干净的音符。量子粒子也一样：被束缚在一个区域里时，它的波函数必须\u0026quot;恰好适配\u0026quot;这个空间，而每一种适配的波函数对应一个特定的能量值。\n这就是为什么原子中的电子只能处于特定的能量\u0026quot;阶梯\u0026quot;上，而不是任意值。电子从一个阶梯跳到另一个阶梯时，会吸收或释放一个光子——这就是原子发光的原理，也是激光、LED 和光谱分析的基础。\n不确定性原理：大自然不让你知道一切 薛定谔方程描述了波函数的演化，但它也带来一个让人不舒服的结论：大自然在根本层面上就是模糊的。\n经典物理里，如果你知道一个粒子的位置和速度，你就能预测它未来的一切轨迹。原则上，整个宇宙的命运都可以计算出来。\n量子力学说：不，你不可能同时精确知道一个粒子的位置和动量（动量跟速度有关）。你把位置测得越精确，动量就越模糊；反过来也一样。\n这不是仪器不够好——这是大自然本身的属性。就像你没办法同时拍出一张照片既看清高速运动物体的姿态又看清它的精确位置。这不是相机的问题，这是光的性质决定的。在量子世界，这种限制是根本性的。\n海森堡在 1927 年提出了这个原理，叫不确定性原理。它告诉我们：大自然的底层不是精密的钟表，而是一团概率的云。\n量子隧穿：粒子真的能穿墙 不确定性原理还有一个更离谱的后果：粒子可以穿过它们本不应该能越过的障碍。\n在经典世界里，如果你把一个球扔向一堵墙，球的速度不够就弹回来了，不可能出现在墙的另一边。\n但在量子世界，因为粒子的位置本身就是一团概率云——这团云不会在墙面前突然消失，而是会\u0026quot;渗入\u0026quot;墙壁。如果墙足够薄，概率云就会在墙壁的另一边露出一小截尾巴。这意味着粒子有一定的概率直接出现在墙壁的另一边，就好像它\u0026quot;穿\u0026quot;了过去。\n这就是量子隧穿。\n听起来像段子，但它的影响是实实在在的：\n太阳为什么能发光？ 太阳的核心通过核聚变把氢变成氦来释放能量。但质子带正电，互相排斥——经典物理算下来，太阳核心的温度根本不够高，不足以让质子克服排斥力撞在一起。幸好有量子隧穿：偶尔有那么几个质子\u0026quot;穿墙\u0026quot;成功，聚变就发生了。没有隧穿，太阳不会发光，地球上也不会有生命。\nU 盘和固态硬盘。 你手机和电脑里存数据的闪存芯片，原理就是把电子\u0026quot;关\u0026quot;在一个绝缘层围起来的小房间里。写入数据时，给电子一个电压，让它隧穿过绝缘壁进入小房间。因为电子自己没有足够的能量逃出去，数据就保留了。\nDNA 突变。 有证据表明，DNA 中的氢键偶尔会发生量子隧穿，导致质子跑到错误的位置。如果 DNA 恰好在这个时候复制，就会产生基因突变。换句话说，进化的驱动力之一，可能就是量子隧穿。\n量子纠缠：超越时空的\u0026quot;心灵感应\u0026quot; 如果说叠加态和隧穿已经够奇怪了，那量子纠缠会让你彻底怀疑人生。\n想象你有两只手套，一左一右，分别装进两个盒子。你把一个盒子留在北京，另一个寄到纽约。你在北京打开盒子，发现是左手套——那瞬间你就知道纽约那个一定是右手套。\n这没什么神奇的，因为手套从一开始就是一左一右，你只是\u0026quot;发现\u0026quot;了这个事实。\n量子纠缠不是这样。\n在量子世界里，两个纠缠的粒子不是\u0026quot;预先确定好的\u0026quot;——它们各自都处于叠加态。关键区别在于：手套从一开始就确定了一左一右，只是你不知道；但纠缠粒子在测量之前，真的什么都没确定。\n你可以这样想：两个粒子像一对被量子胶水粘在一起的骰子。在你掷出去之前，每颗骰子的点数都完全不确定——不是\u0026quot;已经定了你不知道\u0026quot;，而是真的还没决定。但神奇的是，当一颗在北京被掷出、显示为 3 点的时候，另一颗在纽约一定会显示为 4 点（假设规则是总和为 7）。不是\u0026quot;可能\u0026quot;是 4，不是\u0026quot;碰巧\u0026quot;是 4，而是必然是 4。而且这个\u0026quot;必然\u0026quot;不是事先安排好的——是掷出的那一瞬间才确立的。\n没有信号传递，没有时间延迟，不管两个粒子相隔多远。\n爱因斯坦很不喜欢这个 idea，管它叫\u0026quot;鬼魅般的超距作用\u0026quot;。他坚持认为，一定是粒子之间有某种我们不知道的\u0026quot;隐变量\u0026quot;事先约定好了结果，就像手套那样。\n贝尔不等式：一场终极审判 爱因斯坦和量子力学的争论持续了 30 年，谁也说服不了谁，因为两边都能解释已有的实验结果。直到 1964 年，物理学家约翰·贝尔找到了一个办法，让实验来当裁判。\n贝尔的思路，可以用一个考场故事来理解。\n想象两个学生被分别送进两间教室。老师手里有三道判断题（A、B、C），每次随机给每个学生抽一道题，学生只能回答\u0026quot;是\u0026quot;或\u0026quot;否\u0026quot;。答题结束，老师对比两个人的答卷。\n如果这两个学生提前对过答案——也就是每人身上都揣着一张\u0026quot;小抄\u0026quot;，上面写着三道题各自的回答——那不管他们怎么商量，不管小抄怎么写，两个人给出不同答案的次数，一定存在一个上限。\n为什么？因为小抄只有有限种写法。三道题，每道两个选项，总共就 8 种小抄。你把 8 种全部列出来，一种一种去算，两个人答题不同的次数最多能有多少——这个天花板是确定的。这就是贝尔不等式：如果答案提前印在小抄上，两个人\u0026quot;答不同步\u0026quot;的频率不可能超过这个天花板。\n但量子力学预言：纠缠粒子在实验中的\u0026quot;不同步\u0026quot;频率，可以超过这个天花板。\n实验结果呢？确实超过了。\n这意味着什么？意味着粒子身上根本没有小抄。它们在出发之前并没有提前商量好答案——答案是测量的一瞬间才产生的。但两个粒子之间又确实存在某种关联（因为它们的答案不是完全随机的）。这种\u0026quot;没有提前商量却超越商量极限\u0026quot;的关联，就是量子纠缠的真正面貌，也是爱因斯坦不愿意接受的现实。\n从 1980 年代开始，以阿兰·阿斯佩为代表的物理学家做了一系列精密实验。结果非常清楚：贝尔不等式被违反了。\n实验数据表明，粒子之间的关联程度，超过了任何隐变量理论能解释的上限。爱因斯坦的\u0026quot;暗号\u0026quot;假说被实验否定了——粒子之间确实存在一种非经典的、超越空间的量子关联。\n2022 年，阿斯佩等三位物理学家因为这个实验获得了诺贝尔物理学奖。\n不过别激动——纠缠不能用来超光速通信。因为你无法控制北京的骰子掷出几点。结果是随机的。所以你不能通过这种方式传递任何信息。两个粒子的关联是真实的，但这个关联本身不能携带你选择的信息。\n诠释之争：量子力学到底在说什么 到这里你可能会问一个很自然的问题：波函数坍缩到底发生了什么？观测之前粒子到底\u0026quot;在哪里\u0026quot;？这些问题有确定答案吗？\n物理学家自己也在吵。吵了几十年，形成了几种不同的诠释——它们对同一套数学公式给出不同的哲学解读。关键是：所有诠释的数学公式和实验预言完全一样，它们只是在\u0026quot;这到底意味着什么\u0026quot;上看法不同。\n哥本哈根诠释：别问，用就行 这是量子力学的\u0026quot;正统\u0026quot;解读，由玻尔和海森堡在 1920 年代提出。它的核心观点是：在测量之前，粒子的状态就是不确定的——不是我们不知道，而是它本身就没有确定的属性。波函数不是描述我们的无知，而是描述了自然本身的模糊性。\n当你测量时，波函数\u0026quot;坍缩\u0026quot;到一个确定的状态。为什么坍缩？怎么坍缩的？哥本哈根诠释说：别问了，这就是规则。它有点像实用主义——公式好用、实验吻合，我们就别纠结\u0026quot;为什么\u0026quot;了。\n大多数物理学家在日常工作里默认采用这种诠释。\n多世界诠释：每次测量都分裂出平行宇宙 1957 年，物理学家休·埃弗雷特提出了一个大胆的想法：波函数从来没有坍缩。\n那测量的时候发生了什么？答案是：宇宙分裂了。\n当你观测一个处于叠加态的粒子时，不是粒子选择了一个状态——而是你分裂成了多个版本。在一个宇宙里，你看到粒子在左边；在另一个宇宙里，你看到粒子在右边。两个宇宙都是真实的，只是它们再也接触不到彼此。\n这听起来疯狂，但它的优点是：不需要任何额外的规则。只需要薛定谔方程本身，不坍缩，不特判。数学上反而更简洁。\n代价是你得接受无限多的平行宇宙。你愿意接受哪个代价，取决于你的哲学偏好。\n退相干：从量子到经典的桥梁 不管你接受哪种诠释，都有一个现实的问题要回答：如果量子世界这么奇怪，为什么我们的日常生活完全看不出这些奇怪？\n答案是退相干。\n一个量子系统一旦跟周围环境发生哪怕微弱的互动——被空气分子撞一下、被一个光子碰一下——它的叠加态就开始瓦解。不是坍缩到某一个状态，而是叠加态的量子信息\u0026quot;泄漏\u0026quot;到了环境中，变得不可追踪。\n宏观物体（比如一只猫、一个人、一个篮球）每时每刻都在跟无数的环境粒子互动，所以叠加态几乎瞬间就被破坏了。这就是为什么你永远不会看到一只\u0026quot;既死又活\u0026quot;的猫——不是因为量子力学对大物体不适用，而是因为退相干的速度太快了。\n退相干不是一种诠释，而是一个已经被实验证实的物理过程。它帮我们理解了量子世界和经典世界之间的边界——不是一条硬性的线，而是一个渐变的灰色地带。\n所以，量子力学到底有什么用？ 你可能会想：这些东西这么玄乎，跟我的生活有什么关系？\n关系大了。\n半导体和计算机芯片。 你正在用来读这篇文章的设备，核心是晶体管。晶体管的工作原理来自量子力学对半导体中电子行为的描述。没有量子力学，就没有现代计算机，没有智能手机，没有互联网。\n激光。 超市扫码器、激光手术、光纤通信——激光是量子力学中\u0026quot;受激辐射\u0026quot;概念的直接应用。电子在能级之间跃迁时释放光子，把这些光子同步放大，就是激光。\n核磁共振（MRI）。 医院里用来做身体扫描的 MRI 机器，利用的是原子核在磁场中的量子行为。\n量子计算。 正在发展的量子计算机，直接利用叠加态和纠缠来处理信息。传统计算机的比特要么是 0 要么是 1，量子比特可以同时是 0 和 1，理论上能在某些问题上指数级地快于传统计算机。\n量子通信。 利用量子纠缠和不可克隆定理，可以实现理论上不可破解的加密通信（量子密钥分发，QKD）。中国的\u0026quot;墨子号\u0026quot;卫星已经在这方面取得了世界领先的成果。\n量子传感。 利用量子叠加态和纠缠的极端灵敏性，可以制造出精度远超传统技术的传感器。量子陀螺仪能在没有 GPS 的环境下精确导航（对潜艇和深空探测尤其重要），量子磁力计能检测到大脑神经元产生的极微弱磁场，有望实现比 MRI 更精确的脑成像。\n回到那个问题：我们\u0026quot;理解\u0026quot;量子力学了吗？ 如果\u0026quot;理解\u0026quot;指的是用日常经验去类比——没有，我们做不到，因为量子世界跟日常经验根本不在一个频道上。\n但如果我们接受一个事实：在最微小的尺度上，大自然遵循的是概率的规则，而不是确定性的规则——那么我们就可以说，我们理解了量子力学的框架，并且用它精确地预测和创造了无数改变世界的技术。\n量子力学告诉我们一件深刻的事：真实世界的运作方式，比我们想象中要奇怪得多。 但奇怪不代表不对。恰恰相反，正是这种\u0026quot;奇怪\u0026quot;让太阳发光，让化学反应发生，让 DNA 有时产生突变推动进化，让你正在看的屏幕亮起来。\n下次你用手机扫码买东西的时候，可以想想：你手里那个小小的扫码动作，背后是一整个微观世界在用最奇怪、最不直觉的方式运行着。\n而理解这种奇怪，也许就是科学最美的地方。\n参考资料 The Feynman Lectures on Physics, Vol. III, Ch. 1: Quantum Behavior — Caltech 官方维护，费曼对双缝实验的经典阐述 MIT OpenCourseWare - 8.04 Quantum Physics I — MIT 物理系本科量子力学核心课程 Khan Academy - Quantum Physics — 全球最大的免费教育平台，量子物理入门模块 HyperPhysics - Quantum Tunneling — Georgia State University 物理系维护，量子隧穿原理图解 Nobel Prize - 2022 Physics Prize: Experimental Bell Inequality Violation — 诺贝尔奖官方科普，阿斯佩等人的贝尔不等式实验 How Bell\u0026rsquo;s Theorem Proved \u0026lsquo;Spooky Action\u0026rsquo; Is Real - Quanta Magazine — 顶级科学媒体报道 Stanford Encyclopedia of Philosophy - Copenhagen Interpretation — Stanford 维护，学术界最权威的在线哲学百科 Stanford Encyclopedia of Philosophy - Many-Worlds Interpretation — 多世界诠释最权威学术概述，由 MWI 研究者 Lev Vaidman 撰写 Stanford Encyclopedia of Philosophy - Decoherence — 退相干最新学术综述，2025 年修订 Nature Collections - Quantum Technology Applications — Nature 2025 年专题合集，量子技术应用进展 ","permalink":"https://www.wangyunqing.top/posts/quantum-mechanics-for-beginners/","summary":"\u003cp\u003e如果你听说过\u0026quot;薛定谔的猫\u0026quot;，觉得量子力学是一门只有天才才能理解的学问——放心，你不是一个人。物理学家费曼曾经说过一句名言：\u0026ldquo;我想我可以有把握地说，没有人真正理解量子力学。\u0026rdquo;\u003c/p\u003e\n\u003cp\u003e但这句话有点误导。费曼说的\u0026quot;理解\u0026quot;，是指用直觉去感受它、用常识去解释它——而量子力学恰恰告诉我们，在最微小的世界里，常识是靠不住的。\u003c/p\u003e\n\u003cp\u003e我们不需要\u0026quot;理解\u0026quot;量子力学为什么这么奇怪。我们只需要知道，\u003cstrong\u003e它是怎么奇怪的\u003c/strong\u003e，以及这种奇怪为什么重要。\u003c/p\u003e\n\u003cp\u003e这篇文章不会出现任何公式。准备好了吗？我们开始。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"先说结论小世界有不同的规则\"\u003e先说结论：小世界有不同的规则\u003c/h2\u003e\n\u003cp\u003e你每天的生活遵循的是经典物理：扔出去的球会落地，开出去的车不会突然出现在另一个城市，你不可能同时在公司和家里。一切都很确定、很合逻辑。\u003c/p\u003e\n\u003cp\u003e但当你把东西缩小到原子、电子、光子这个级别，规则就变了。变成什么样？\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e一个粒子可以\u003cstrong\u003e同时出现在好几个地方\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e你去\u0026quot;看\u0026quot;它的那一刻，它才决定自己在哪里\u003c/li\u003e\n\u003cli\u003e两个粒子可以跨越宇宙互相\u0026quot;感知\u0026quot;\u003c/li\u003e\n\u003cli\u003e粒子能\u003cstrong\u003e穿墙\u003c/strong\u003e而过\u003c/li\u003e\n\u003cli\u003e能量不是连续的，而是像楼梯一样\u003cstrong\u003e一级一级\u003c/strong\u003e的\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这些听起来像科幻小说，但它们都被实验反复证实了。你手机里的芯片、医院的 MRI、超市的激光扫码枪，都在用这些原理工作。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"故事的起点物理学家遇到了麻烦\"\u003e故事的起点：物理学家遇到了麻烦\u003c/h2\u003e\n\u003cp\u003e时间回到 1900 年前后。那时候的物理学家很得意：牛顿搞定了运动和引力，麦克斯韦搞定了电和磁，热力学搞定了能量。人们觉得物理学的\u0026quot;大厦\u0026quot;基本完工了，只剩几块小砖头没砌好。\u003c/p\u003e\n\u003cp\u003e结果那几块\u0026quot;小砖头\u0026quot;掀翻了整栋楼。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e麻烦一：烤炉的颜色。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e把一块铁放进炉子里加热。随着温度升高，它会从暗红变成亮红，再变成橙黄、白热。这个现象看起来简单，但用当时的理论去算，结果居然是：烤炉应该辐射出无限多的能量。无限多。这显然不对。\u003c/p\u003e\n\u003cp\u003e1900 年，普朗克提出了一个大胆的假设：能量不是像水流一样可以无限细分的，它像硬币一样，有一个最小的单位。你不能支付半分钱，能量也一样——它是一份一份的。这个最小的单位，就叫\u003cstrong\u003e量子\u003c/strong\u003e（quantum）。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e麻烦二：光到底是什么。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这个问题吵了两百年。牛顿说光是粒子，一粒一粒的小弹珠。惠更斯说光是波，像水面上的涟漪。两边各有道理，也各有解释不了的现象。\u003c/p\u003e\n\u003cp\u003e后来大家基本接受了\u0026quot;光是波\u0026quot;的说法。但到了 1905 年，爱因斯坦发现了一个尴尬的事实：如果把光纯粹当成波，有一个叫\u0026quot;光电效应\u0026quot;的实验就完全解释不了——用某些颜色的光照金属，能打出电子来，但换一种颜色，再亮都打不出来。\u003c/p\u003e\n\u003cp\u003e爱因斯坦说：光其实是一颗一颗的\u003cstrong\u003e光子\u003c/strong\u003e，每一颗带着特定大小的能量。颜色决定了每颗光子的能量大小，亮度只是光子的数量。紫光的光子能量大，能打出电子；红光的光子能量小，打不出来。跟亮度没关系。\u003c/p\u003e\n\u003cp\u003e就这样，光同时是粒子又是波。这不是折中，这是事实。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"双缝实验物理学史上最诡异的实验\"\u003e双缝实验：物理学史上最诡异的实验\u003c/h2\u003e\n\u003cp\u003e如果说量子力学有一座\u0026quot;圣杯\u0026quot;，那就是双缝实验。费曼说，这个实验包含了量子力学\u0026quot;唯一的奥秘\u0026quot;。\u003c/p\u003e\n\u003cp\u003e想象一堵墙，上面开了两条很窄的缝。你拿一把能发射子弹的枪对着墙射击。子弹穿过缝隙后，会在后面的屏幕上留下两道痕迹——很合理，对吧？\u003c/p\u003e\n\u003cp\u003e现在换一下，不发射子弹了，改发射\u003cstrong\u003e电子\u003c/strong\u003e。电子是组成原子的小粒子，比子弹小得多，但本质上也是\u0026quot;一颗一颗\u0026quot;的东西。\u003c/p\u003e\n\u003cp\u003e诡异的事情发生了。\u003c/p\u003e\n\u003cp\u003e屏幕上没有出现两道痕迹，而是出现了一堆明暗交替的条纹——这就是\u003cstrong\u003e干涉条纹\u003c/strong\u003e，一种只有\u003cstrong\u003e波\u003c/strong\u003e才会产生的图案。\u003c/p\u003e\n\u003cp\u003e你可能会想：也许是电子们互相撞来撞去产生的？为了排除这种可能，科学家把发射速度调到极慢——\u003cstrong\u003e每次只发射一个电子\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e结果更诡异了：一个一个发射的电子，经过足够长时间后，照样在屏幕上形成了波的干涉条纹。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一个单独的电子，产生了只有波才会有的干涉图案。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这意味着什么？意味着这个电子同时穿过了两条缝，自己和自己发生了干涉。一个粒子，同时走了两条路。\u003c/p\u003e\n\u003cp\u003e科学家不信邪：那我在两条缝旁边装个探测器，看它到底走的哪条缝！\u003c/p\u003e\n\u003cp\u003e结果——当你去\u0026quot;看\u0026quot;的时候，干涉条纹消失了。屏幕上变成了两道普通痕迹，跟子弹一模一样。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e你不看它，它就是波，同时走两条路。你一看它，它就老老实实变成粒子，只走一条路。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e观测行为本身，改变了结果。这就是量子力学最让人不安的地方：\u003cstrong\u003e观测者不是旁观者，而是参与者。\u003c/strong\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"叠加态不是在这里或在那里而是在这里和那里\"\u003e叠加态：不是\u0026quot;在这里或在那里\u0026quot;，而是\u0026quot;在这里\u003cstrong\u003e和\u003c/strong\u003e那里\u0026quot;\u003c/h2\u003e\n\u003cp\u003e双缝实验揭示的性质，叫做\u003cstrong\u003e叠加态\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e日常生活里，一枚硬币要么正面要么反面。但如果你让它高速旋转起来呢？在旋转的过程中，它既不是正面也不是反面——它是正面的\u003cstrong\u003e可能性\u003c/strong\u003e和反面的\u003cstrong\u003e可能性\u003c/strong\u003e的叠加。\u003c/p\u003e\n\u003cp\u003e量子世界的粒子就是这样：在没人观测的时候，它们处于所有可能状态的叠加。一个电子不是在左边或者右边，而是在左边\u003cstrong\u003e和\u003c/strong\u003e右边，同时存在于多个位置。\u003c/p\u003e\n\u003cp\u003e只有当有东西去\u0026quot;测量\u0026quot;它——不管是人的仪器还是其他粒子的碰撞——它才会随机地\u0026quot;坍缩\u0026quot;到一个确定的状态。\u003c/p\u003e\n\u003cp\u003e这就是薛定谔的猫的思想实验想要说明的问题。把一只猫关在盒子里，盒子里有一个装置：一个放射性原子，如果它衰变了，就释放毒气杀死猫。按照量子力学，在你打开盒子之前，原子处于\u0026quot;衰变了\u0026quot;和\u0026quot;没衰变\u0026quot;的叠加态——所以猫也处于\u0026quot;死了\u0026quot;和\u0026quot;活着\u0026quot;的叠加态。\u003c/p\u003e\n\u003cp\u003e薛定谔提出这个实验不是为了说明猫真的很神奇，恰恰相反，他是想用荒谬的结论来质疑量子力学：你们看，如果把量子规律推到宏观世界，一只猫能同时死和活，这合理吗？\u003c/p\u003e\n\u003cp\u003e直到今天，物理学家对\u0026quot;到底怎么从量子的叠加过渡到日常的确定\u0026quot;这个问题，依然没有统一的答案。这就是所谓的\u003cstrong\u003e测量问题\u003c/strong\u003e。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"薛定谔方程量子世界的天气预报\"\u003e薛定谔方程：量子世界的\u0026quot;天气预报\u0026quot;\u003c/h2\u003e\n\u003cp\u003e既然量子粒子不像经典粒子那样有确定的位置和轨迹，那我们怎么描述它们的行为？\u003c/p\u003e\n\u003cp\u003e答案就是\u003cstrong\u003e波函数\u003c/strong\u003e，用一个希腊字母 ψ（读作 psi）来表示。\u003c/p\u003e\n\u003cp\u003e你可以把波函数想象成一张\u0026quot;概率地图\u0026quot;。就像天气预报说\u0026quot;明天北京有 70% 的概率下雨，30% 概率晴天\u0026quot;——波函数告诉你的就是\u0026quot;在某个位置找到这个粒子的概率有多大\u0026quot;。波函数值越大的地方，粒子出现在那里的可能性就越高。\u003c/p\u003e\n\u003cp\u003e注意，ψ 本身不是概率。要得到真正的概率，需要取它的平方（|ψ|²）。这个细节很关键——它意味着概率永远是正数，符合常理。\u003c/p\u003e\n\u003cp\u003e而\u003cstrong\u003e薛定谔方程\u003c/strong\u003e，就是描述这张概率地图如何随时间变化的规则。\u003c/p\u003e\n\u003cp\u003e打个比方：牛顿第二定律（F = ma）告诉你，知道力和质量就能预测物体的运动轨迹。薛定谔方程做的是类似的事——它告诉你，知道一个粒子所处的环境（势能），就能算出它的波函数，进而知道它的概率分布和允许的能量值。\u003c/p\u003e\n\u003cp\u003e薛定谔方程还揭示了一个重要的事实：\u003cstrong\u003e能量是分级的\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e想象一根吉他弦。它不是随便怎么振动都行的——只有某些特定的振动模式才能稳定存在，产生干净的音符。量子粒子也一样：被束缚在一个区域里时，它的波函数必须\u0026quot;恰好适配\u0026quot;这个空间，而每一种适配的波函数对应一个特定的能量值。\u003c/p\u003e\n\u003cp\u003e这就是为什么原子中的电子只能处于特定的能量\u0026quot;阶梯\u0026quot;上，而不是任意值。电子从一个阶梯跳到另一个阶梯时，会吸收或释放一个光子——这就是原子发光的原理，也是激光、LED 和光谱分析的基础。\u003c/p\u003e","title":"量子力学：一个完全不懂的人也能看懂的指南"},{"content":"引言：经典不老的 D-Sub 你可能在老式电脑背面见过这种带螺丝的梯形接口：\n┌─────────────────┐ ╱ ╲ ← 金属 D 形外壳 │ ╔═════════════╗ │ │ ║ ║ ║ ║ ║ ║ ║ │ ← 两排针脚 │ ╚═════════════╝ │ ╲ ▲ ╱ ─────────┴────────── ← 螺丝锁紧 这就是 D-Subminiature（D-Sub）接口，1952 年诞生，至今已有 70 多年历史。\n你可能以为它早该被淘汰了，但实际上：\n你的显示器可能还在用 DE-15 (VGA) 工业现场的 PLC 控制器大量使用 DE-9 (串口) 飞机和导弹的航电系统还在用各种 D-Sub 为什么这个\u0026quot;老古董\u0026quot;接口还能存活这么久？这篇文章带你彻底搞懂 D-Sub 接口家族。\n第一部分：名字里藏着什么密码？ D-Sub 是什么意思？ D-Subminiature = D 型超小型连接器\nD = D 形金属外壳（这是它的标志性特征） Subminiature = 超小型（按 1952 年的标准，这确实很小） 命名规则解析 D-Sub 的命名像密码，但破解后很简单：\nD [外壳尺寸] [针脚数] │ │ │ │ │ └─── 例如：9、15、25、37、50 │ └─────────────── A/B/C/D/E └────────────────────── D-Sub 系列 第二个字母（外壳尺寸）对照表：\n字母 针数范围 典型应用 A 15 针 DA-15 (VGA、游戏摇杆口) B 25 针 DB-25 (并口打印机、SCSI) C 37 针 DC-37 (工业自动化) D 50 针 DD-50 (SCSI-1、老式网络设备) E 9 针 DE-9 (串口 COM) 常见误区：DB9 其实是 DE-9！ 你可能听说过\u0026quot;DB9 串口\u0026quot;，但这是错误的叫法！\n正确的叫法是 DE-9：\nE = 使用 E 型外壳（最小的 D-Sub 外壳） 9 = 9 根针脚 为什么会叫错？因为早期大家习惯了 DB-25（并口），看到 9 针的 D-Sub 就顺手叫成 DB9 了。久而久之，错的人多了，也就成了\u0026quot;习惯性错误\u0026quot;。\n第二部分：标准密度 vs 高密度 D-Sub 接口有两种密度类型：\n标准密度（Standard Density） 特点：一排或两排较大的针脚\n接口 针脚排列 应用 DE-9 5+4 两排 串口 COM DB-25 13+12 两排 并口打印机 DC-37 多排 工业自动化 DD-50 多排 SCSI-1 设备 高密度（High Density, HD） 特点：在同样外壳尺寸里塞入更多针脚\n接口 针脚排列 应用 HD-15 (DE-15) 三排 5 针 VGA 显示器 HD-26 三排 电信、网络设备 HD-44 三排 航空航天设备 HD-62/78 三排 高密度工业设备 最常见的高密度 D-Sub 就是 HD-15——也就是大家熟悉的 VGA 接口。\n第三部分：典型应用详解 DE-9：串口 COM ╱────╲ │ ═ ═ │ 9 针 D 形接口 │ │ 公头（带针） │ ◆◆ │ 螺丝锁紧 ╲────╱ 规格：\n9 根针脚（5+4 两排） 使用 E 型外壳（最小尺寸） 公头通常用于电脑端，母头用于设备端 应用：\nRS-232 串口通信（最经典） 路由器、交换机的 Console 口 CNC 机床、PLC 的调试口 POS 机、ATM 机 为什么还在用？\n工业现场大量设备仍在使用 简单、可靠、成本低 调试和故障排查方便 DB-25：并口打印机 ╱──────────╲ │ ═ ═ ═ ═ │ 25 针 D 形接口 │ │ 两排针脚 │ ◆◆◆ │ 螺丝锁紧 ╲──────────╱ 规格：\n25 根针脚（13+12 两排） 使用 B 型外壳（较大尺寸） 应用：\n并行打印机端口（最经典） 早期 SCSI 设备 老式外设接口 现状：已被 USB 彻底取代，现在很少见到。\nDE-15 (HD-15)：VGA 显示器 ╱──────────╲ │ ═ ═ ═ ═ │ 15 针高密度 D 形 │ ═ ═ ═ ═ │ 三排针脚 │ ◆◆◆ │ 螺丝锁紧 ╲──────────╱ 规格：\n15 根针脚（三排，每排 5 针） 使用 E 型外壳 + 高密度设计 传输 RGBHV 模拟视频信号 应用：\nCRT 显示器（经典应用） 液晶显示器（早期和低端型号） 投影仪 KVM 切换器 为什么叫 DE-15？\nDE = D-Sub E 型外壳 15 = 15 根针脚 常被误称为\u0026quot;DB15\u0026quot;，但正确叫法是 DE-15 或 HD-15 现状：正在被 HDMI、DisplayPort 取代，但仍在很多老式设备和工业环境中使用。\n第四部分：为什么 D-Sub 这么\u0026quot;长寿\u0026quot;？ 1. D 形外壳：天才设计 ┌─────────────────┐ ╱ ═ ═ ═ ═ ═ ═ ═ ═ ╲ │ │ ← D 形金属外壳 ╲ ╱ └────────────────────┘ D 形的三大好处：\n防误插：D 形只能单向插入，想插反都插不进去 机械强度：金属外壳提供坚固的物理保护 电磁屏蔽：金属外壳可以屏蔽外部干扰 2. 螺丝锁紧：稳如泰山 ╱────╲ │ │ │ ◆◆ │ ← 螺丝锁紧 ╲────╱ 好处：\n抗振动、抗拉扯 工业环境、移动设备必备 不会因为轻微碰撞就断开连接 3. 金属屏蔽：抗干扰利器 D-Sub 的金属外壳不仅能防误插，还能屏蔽电磁干扰：\n防止外部噪声干扰信号 防止内部信号辐射出去干扰其他设备 工业现场、航空航天的必备特性 4. 工业级可靠性 D-Sub 接口经过数十年验证，具有：\n耐用性：可插拔数千次 环境适应性：工作温度 -55°C 到 +125°C 抗冲击：符合军用标准 防水版本：有带密封圈的工业级 D-Sub 这些特性让 D-Sub 在工业、航空、航天等领域难以被替代。\n第五部分：D-Sub 家族速查表 接口 针数 外壳 类型 典型应用 状态 DE-9 9 E 标准密度 RS-232 串口 工业常用 DA-15 15 A 标准密度 游戏摇杆口 淘汰 DB-25 25 B 标准密度 并口打印机 淘汰 DC-37 37 C 标准密度 工业自动化 工业常用 DD-50 50 D 标准密度 SCSI-1 罕见 DE-15 (HD-15) 15 E 高密度 VGA 显示器 逐步淘汰 HD-26 26 E 高密度 电信设备 专业领域 HD-44 44 E 高密度 航空航天 专业领域 第六部分：现状与未来 消费电子：正在消失 在消费电子领域，D-Sub 正在被更快更小的接口取代：\n被取代者 D-Sub 原因 HDMI / DisplayPort DE-15 (VGA) 数字信号、更高分辨率 USB / Type-C DE-9 (串口) 更快、更小、即插即用 USB DB-25 (并口) 更快、更通用 工业领域：依然坚挺 但在工业和航空领域，D-Sub 依然不可或缺：\n工业自动化：PLC、传感器网络 航空航天：飞机、导弹、卫星的航电系统 医疗设备：大型医疗仪器 军用设备：雷达、通信设备 原因：\n可靠性经过数十年验证 抗干扰能力强 维护人员熟悉，工具和备件充足 很多旧设备还在使用，兼容性要求 什么时候会被彻底淘汰？ 很难说。只要工业和航空领域还需要高可靠性的连接，D-Sub 就会继续存在。\n但消费电子领域，D-Sub 正在快速消失。未来你可能只能在工业设备、老式电脑、或者博物馆里见到它了。\n总结 D-Sub 接口家族的命名规则其实很简单：\nD = D-Sub 系列 第二个字母 = 外壳尺寸（A/B/C/D/E） 数字 = 针脚数量 记住这个公式，你就能看懂所有 D-Sub 接口的名字了：\nDE-9 = D-Sub E 型外壳，9 针（串口） DB-25 = D-Sub B 型外壳，25 针（并口） DE-15 (HD-15) = D-Sub E 型外壳，15 针高密度（VGA） 虽然这个 1952 年诞生的接口在消费电子领域正在被淘汰，但在工业、航空、航天等高可靠性要求的领域，D-Sub 依然是不可替代的经典。\n参考资料 什么是D-SUB连接器 - 联邦电子产品 D-SUB连接器 - 百度百科 Understanding D-Sub Connectors - Amphenol ","permalink":"https://www.wangyunqing.top/posts/dsub-complete-guide/","summary":"\u003ch2 id=\"引言经典不老的-d-sub\"\u003e引言：经典不老的 D-Sub\u003c/h2\u003e\n\u003cp\u003e你可能在老式电脑背面见过这种带螺丝的梯形接口：\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e    ┌─────────────────┐\n   ╱                  ╲         ← 金属 D 形外壳\n  │    ╔═════════════╗   │\n  │    ║ ║ ║ ║ ║ ║ ║   │        ← 两排针脚\n  │    ╚═════════════╝   │\n   ╲        ▲          ╱\n    ─────────┴──────────         ← 螺丝锁紧\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这就是 \u003cstrong\u003eD-Subminiature\u003c/strong\u003e（D-Sub）接口，1952 年诞生，至今已有 70 多年历史。\u003c/p\u003e\n\u003cp\u003e你可能以为它早该被淘汰了，但实际上：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e你的显示器可能还在用 \u003cstrong\u003eDE-15 (VGA)\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e工业现场的 PLC 控制器大量使用 \u003cstrong\u003eDE-9 (串口)\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e飞机和导弹的航电系统还在用各种 D-Sub\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e为什么这个\u0026quot;老古董\u0026quot;接口还能存活这么久？这篇文章带你彻底搞懂 D-Sub 接口家族。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"第一部分名字里藏着什么密码\"\u003e第一部分：名字里藏着什么密码？\u003c/h2\u003e\n\u003ch3 id=\"d-sub-是什么意思\"\u003eD-Sub 是什么意思？\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eD-Subminiature\u003c/strong\u003e = \u003cstrong\u003eD 型超小型\u003c/strong\u003e连接器\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eD\u003c/strong\u003e = D 形金属外壳（这是它的标志性特征）\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSubminiature\u003c/strong\u003e = 超小型（按 1952 年的标准，这确实很小）\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"命名规则解析\"\u003e命名规则解析\u003c/h3\u003e\n\u003cp\u003eD-Sub 的命名像密码，但破解后很简单：\u003c/p\u003e","title":"D-Sub 接口完全指南：为什么这个 1952 年的接口还在用？"},{"content":"引言：一个接口，无数名字 你去买根 USB 线，老板问：\u0026ldquo;你要 Type-A 还是 Type-C？USB 2.0 还是 3.0？要不要支持 PD 充电？\u0026rdquo;\n你愣住了。不就是根 USB 线吗，怎么这么多讲究？\n这就是 USB 世界的现状：物理接口（长什么样）、传输协议（跑多快）、功率标准（充电多快）混在一起，加上 USB-IF（USB 标准组织）这些年来的改名操作，让所有人都晕了。\n别担心，这篇文章帮你理清这一切。\n第一部分：物理接口 —— USB 长什么样？ Type-A：最熟悉的老面孔 ┌─────────────┐ │ ═ ═ ═ ═ ═ ═ │ 里面是塑料片，有方向性 ├─────────────┤ 插反了插不进去 │ │ 电脑上最常见 └─────────────┘ 特点：\n最常见的 USB 接口，电脑背面那排蓝色的就是 有方向性，插反了插不进去 体积较大，不适合小型设备 支持速度：USB 2.0 到 USB 3.2 Gen 2（最高 10Gbps）\nType-B：打印机专用 ┌────────────┐ │ ┌──────┐ │ 方形，有点像个房子 │ │ │ │ 老式打印机、扫描器常见 │ └──────┘ │ 现在很少见了 └────────────┘ 特点：\n方形设计，不易误拔 主要用于打印机、扫描器等办公设备 现代设备已被 Type-C 取代 Micro-USB：曾经的手机标配 ┌─────────┐ │ ┌───┐ │ 小巧的梯形 │ │ │ │ 有方向性 │ └───┘ │ 老安卓手机标配 └─────────┘ 特点：\n比 Type-A 小很多 有方向性，经常插反（强迫症福音） 容易损坏，接口寿命短 已被 Type-C 淘汰 Type-C：现代标准 ╱────────╲ │ ═ ═ ═ │ 椭圆形，不分正反 │ │ 正插反插都能用 │ │ 支持高速传输+大功率充电 ╲────────╱ 特点：\n不分正反，怎么插都行 体积小，适合轻薄设备 24 个针脚，功能强大（数据+视频+充电） 现代设备首选 支持速度：USB 2.0 到 USB4 v2（最高 80Gbps）\nLightning：苹果的\u0026quot;独门武功\u0026quot; ╱────╲ │ ═══ ═ │ 小巧的白色接口 │ │ 仅用于苹果设备 ╲────╱ iPhone 5-14 专用 特点：\n苹果专有，非 USB 标准 小巧耐用，但仅支持 USB 2.0 速度 iPhone 15 起改用 Type-C 第二部分：传输协议 —— USB 跑多快？ 先搞懂一个概念 物理接口 ≠ 传输协议\nType-C 是接口形状（长什么样） USB 3.2 是传输协议（跑多快） 一个 Type-C 接口可以支持 USB 2.0，也可以支持 USB4 USB 版本速查表（官方最新命名） 为了简化消费者的选择，USB-IF 现在推荐直接用速度来标识：\n速度标识 对应规范 旧名字 特点 USB 480Mbps USB 2.0 - 经典，鼠标键盘够用 USB 5Gbps USB 3.2 Gen 1 USB 3.0, USB 3.1 Gen 1 蓝色接口，U盘常用 USB 10Gbps USB 3.2 Gen 2 USB 3.1 Gen 2 移动硬盘够快 USB 20Gbps USB 3.2 Gen 2×2 - 较少见，需两端都支持 USB 40Gbps USB4 - 与 Thunderbolt 3 兼容 USB 80Gbps USB4 v2 USB4 2.0 最新标准，80Gbps 双向 结论：别管它叫什么名字，直接看 Gbps 最靠谱！\nUSB 接口颜色大揭秘 你可能见过不同颜色的 USB 接口，这些颜色是有含义的：\n颜色 含义 速度 用途 黑色 USB 2.0 480 Mbps 鼠标、键盘等低速设备 蓝色 USB 3.x 5Gbps U盘、移动硬盘 青蓝色 USB 3.1+ 10Gbps 高速移动硬盘 红色 USB 3.1/3.2 + 充电 5-10Gbps Always Powered 接口，可充电 黄色 USB 2.0 + 充电 480 Mbps Always Powered 接口，可充电 橙色 专用功能 视规格而定 主板专用（如 BIOS 更新） 红色/黄色接口的特殊含义：\n这类接口通常标注为 \u0026ldquo;Always Powered\u0026rdquo; 或 \u0026ldquo;Charging\u0026rdquo;，特点是：\n即使电脑关机，也能给设备充电 适合给手机、平板充电 电流更大（通常 1.5A-2A），充电更快 USB-IF 的改名\u0026quot;骚操作\u0026quot; 在 USB-IF 推出速度标识之前，进行了几次改名，造成了巨大的混乱：\n旧名字 新名字 速度 USB 3.0 USB 3.2 Gen 1 5 Gbps USB 3.1 USB 3.2 Gen 2 10 Gbps USB 3.1 Gen 2 无变化 10 Gbps USB 3.2 USB 3.2 Gen 2×2 20 Gbps 结论：别管它叫什么，看 Gbps 最靠谱！\n蓝色接口的真相 很多人认为\u0026quot;蓝色就是 USB 3.0\u0026quot;。不完全对：\n蓝色接口 = 通常支持 USB 3.x 高速传输 黑色接口 = 通常只是 USB 2.0 但这不是绝对的，要看设备规格 第三部分：功率标准 —— USB 充电多快？ USB 充电标准对比 标准 功率 特点 典型应用 USB 2.0/3.0 2.5W-4.5W 基础充电 鼠标、键盘 BC 1.2 7.5W 早期充电标准 老手机 USB PD 3.0 100W 笔记本快充 MacBook、Switch USB PD 3.1 240W 最新标准 游戏本、显示器 非 USB 官方标准 这些标准虽然常见，但不是 USB-IF 官方的：\n标准 功率 厂商 典型应用 QC 2.0/3.0/4/5 18W-100W+ 高通 安卓手机快充 VOOC/SuperVOOC 65W-240W OPPO OPPO 手机 SCP 66W-120W 华为 华为手机 充电线材要注意 不是所有 Type-C 线都支持快充：\n普通 USB 2.0 线：只支持 2.5W 充电 USB 3.x 线：支持 15W 左右 支持 PD 的线：才支持 100W/240W 快充 看线材包装：必须标注支持 USB PD 和对应功率 第四部分：命名规则矩阵 —— 组合起来看 常见组合对照表 组合 物理接口 传输协议 功率 典型用途 \u0026ldquo;USB 2.0\u0026rdquo; Type-A/Micro 480 Mbps 2.5W 鼠标、键盘 \u0026ldquo;USB 3.0 蓝色\u0026rdquo; Type-A 5 Gbps 4.5W U盘、移动硬盘 \u0026ldquo;USB-C 快充\u0026rdquo; Type-C USB 2.0/3.x 18W-100W 手机、平板充电 \u0026ldquo;雷电 3/4\u0026rdquo; Type-C 40 Gbps 100W MacBook、高端笔记本 \u0026ldquo;USB4\u0026rdquo; Type-C 40 Gbps 100W 新款笔记本、主机 包装上怎么看？ 买线材时，看包装上的标注：\nUSB-C to USB-C USB 3.2 Gen 2 (10 Gbps) USB PD 100W 60W Power Delivery 翻译：\nType-C 对 Type-C 接口 支持 USB 3.2 Gen 2（10 Gbps） 支持 USB PD 100W 快充 第五部分：常见误区 误区 1：Type-C 就是 USB 4？ 错！ Type-C 只是接口形状，可以是 USB 2.0，也可以是 USB4。\n很多廉价 Type-C 线只支持 USB 2.0 速度，买之前要看清规格。\n误区 2：USB 3.0 就是蓝色？ 不一定！ 蓝色只是厂商的习惯做法，不是标准要求。\n有些 USB 3.x 接口也是黑色的，有些 USB 2.0 接口也可以是蓝色的。看规格标注，别只看颜色。\n误区 3：Thunderbolt 和 USB 是一回事？ 有关系，但不是一回事！\n特性 Thunderbolt 3/4/5 USB4 接口 Type-C Type-C 速度 40/80/120 Gbps 20/40/80 Gbps 标准 Intel USB-IF 兼容性 兼容 USB 设备 兼容 Thunderbolt 3 认证 严格，需通过 Intel 测试 USB-IF 认证 简单说：Thunderbolt 是 Intel 的高端标准，USB4 是 USB-IF 的通用标准。USB4 的技术基础来自 Thunderbolt 3。\n第六部分：选型指南 给不同设备的推荐 设备 推荐接口 推荐协议 原因 鼠标、键盘 Type-A USB 2.0 够用，便宜 U盘 Type-A/C USB 3.2 Gen 1 速度够，兼容好 移动硬盘 Type-C USB 3.2 Gen 2 速度快 手机充电 Type-C USB PD 3.0 兼容性好 MacBook Type-C Thunderbolt 3/4 或 USB4 高速+视频+充电 显示器 Type-C USB4 或 Thunderbolt 支持视频输出 买线材三步走 看接口形状：Type-A 还是 Type-C？两头是什么形状？ 看速度需求：需要 5 Gbps 还是 40 Gbps？ 看充电需求：需要快充吗？多少瓦？ 总结 USB 确实很复杂，但搞清楚三个维度就简单了：\n物理接口：长什么样？（Type-A、Type-C） 传输协议：跑多快？（USB 3.2、USB4） 功率标准：充多快？（USB PD、QC） 记住：Type-C ≠ USB 4，买线材前一定要看清规格标注。\n下次再看到老板问\u0026quot;要什么 USB\u0026quot;，你就能自信地说：\u0026ldquo;给我来根 USB-C to USB-C，USB 3.2 Gen 2，支持 PD 100W 的线！\u0026rdquo;\n参考资料 USB4 v2 规格更新 - GRL China USB 3.2 命名规则解析 - Ted聊科技 USB 接口速度全解析 - 新浪科技 ","permalink":"https://www.wangyunqing.top/posts/usb-complete-guide/","summary":"\u003ch2 id=\"引言一个接口无数名字\"\u003e引言：一个接口，无数名字\u003c/h2\u003e\n\u003cp\u003e你去买根 USB 线，老板问：\u0026ldquo;你要 Type-A 还是 Type-C？USB 2.0 还是 3.0？要不要支持 PD 充电？\u0026rdquo;\u003c/p\u003e\n\u003cp\u003e你愣住了。不就是根 USB 线吗，怎么这么多讲究？\u003c/p\u003e\n\u003cp\u003e这就是 USB 世界的现状：\u003cstrong\u003e物理接口\u003c/strong\u003e（长什么样）、\u003cstrong\u003e传输协议\u003c/strong\u003e（跑多快）、\u003cstrong\u003e功率标准\u003c/strong\u003e（充电多快）混在一起，加上 USB-IF（USB 标准组织）这些年来的改名操作，让所有人都晕了。\u003c/p\u003e\n\u003cp\u003e别担心，这篇文章帮你理清这一切。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"第一部分物理接口--usb-长什么样\"\u003e第一部分：物理接口 —— USB 长什么样？\u003c/h2\u003e\n\u003ch3 id=\"type-a最熟悉的老面孔\"\u003eType-A：最熟悉的老面孔\u003c/h3\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e┌─────────────┐\n│ ═ ═ ═ ═ ═ ═ │  里面是塑料片，有方向性\n├─────────────┤  插反了插不进去\n│             │  电脑上最常见\n└─────────────┘\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e特点\u003c/strong\u003e：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e最常见的 USB 接口，电脑背面那排蓝色的就是\u003c/li\u003e\n\u003cli\u003e有方向性，插反了插不进去\u003c/li\u003e\n\u003cli\u003e体积较大，不适合小型设备\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e支持速度\u003c/strong\u003e：USB 2.0 到 USB 3.2 Gen 2（最高 10Gbps）\u003c/p\u003e\n\u003chr\u003e\n\u003ch3 id=\"type-b打印机专用\"\u003eType-B：打印机专用\u003c/h3\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e┌────────────┐\n│  ┌──────┐  │  方形，有点像个房子\n│  │      │  │  老式打印机、扫描器常见\n│  └──────┘  │  现在很少见了\n└────────────┘\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e特点\u003c/strong\u003e：\u003c/p\u003e","title":"USB 完全指南：搞懂接口、协议和那些让人抓狂的命名"},{"content":"从一个常见的问题说起 你有没有听说过这种说法：计算机接口分为串口和并口？\n串口像单车道，数据一位一位排队过；并口像多车道，数据多位同时过。这个说法本身没错，但它只回答了\u0026quot;数据怎么传\u0026quot;的问题。\n当你真正去选型、设计或调试接口时，会发现自己需要知道的事情远不止这些：\n为什么有的接口需要时钟线，有的不需要？ 为什么 CAN 总线能在工业现场抗干扰，而 UART 不行？ 为什么 I²C 只需要两根线就能挂上百个设备？ 为什么 PCIe 能跑 64GT/s，而传统 PCI 只能 133MB/s？\n要回答这些问题，我们需要一个更完整的分析框架。\n一个更完整的视角 想象一下，你要和一个陌生人建立通信。你们需要决定什么？\n首先，用什么语言？ 中文、英文，还是摩斯密码？这对应接口的物理层——电压、电平、信号类型。\n然后，怎么说话？ 你一句我一句，还是同时说？说得快还是慢？这对应接口的传输模式。\n接着，对话规则是什么？ 谁先开口？怎么确认对方听懂了？说错了怎么办？这对应接口的通信协议。\n最后，你们之间是什么关系？ 一对一私密对话，还是在一个群里喊话？这对应接口的拓扑结构。\n这就是理解硬件接口的四维框架：\n┌─────────────────────────────────┐ │ 接口本质分析 │ └─────────────────────────────────┘ │ ┌─────────────────────────────┼─────────────────────────────┐ ▼ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 物理接口 │ │ 传输模式 │ │ 通信协议 │ │ 拓扑结构 │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ 维度一：物理接口 它长什么样？用什么电？\n这是接口的\u0026quot;肉身\u0026quot;，是你看得见摸得着的部分。\n机械特性 接口的形状、引脚排列、尺寸——这些设计绝非随意。\n拿常见的 D-Sub 接口来说，它的金属外壳呈 D 形。这个设计解决了三个问题：\n防误插：D 形外壳只能单向插入，想插反都插不进去 机械强度：金属外壳加上螺丝锁紧，抗振动 电磁屏蔽：金属外壳可以屏蔽外部干扰 再看看 USB Type-C，它支持正反插——因为内部上下两排引脚是对称的。这不是为了省事，而是为了提升用户体验。\n电气特性 不同接口用完全不同的\u0026quot;语言\u0026quot;说话：\n接口 电压标准 适用场景 TTL 0V 代表 0，5V 代表 1 芯片内部通信 RS-232 +12V 代表 0，-12V 代表 1 长距离通信，抗干扰 LVDS（差分） 两根线电压相反，接收端看差值 高速信号，如 PCIe、HDMI RS-485 差分信号，两根线 A 和 B 工业现场，抗强干扰 为什么差分信号抗干扰？因为外部噪声通常会同时影响两根线，而接收端只看两根线的差值——噪声就被抵消了。就像两个人在嘈杂的环境里对话，如果他们同时说\u0026quot;一字不差\u0026quot;的话，即使周围很吵，对方也能听清差异。\n维度二：传输模式 数据怎么流动？\n串行 vs 并行：真相可能和你想的不一样 传统认知：并口比串口快。\n现实：现代高速接口几乎全是串行的。\n为什么？让我们看看实际发生了什么：\n并行的问题：\n时钟偏移：多根线要严格同步，但线长有微小差异，频率一高就乱套 串扰：相邻的线互相干扰，距离越远越严重 布线复杂：32 根数据线 + 控制线，布线噩梦 串行的优势：\n可以跑极高频率：单根线容易控制 差分信号抗干扰：用两根线做一对，抗噪能力强 可扩展：PCIe 可以 x1、x4、x8、x16，按需组合 所以你看到的现象是：PCI（并行，133MB/s）被 PCIe（串行，64GT/s）取代；ATA（并行）被 SATA（串行）取代。\n同步 vs 异步 同步传输：有一根专门的时钟线，双方按统一的节拍跳舞。I²C、SPI 都是同步的。\n异步传输：没有时钟线，靠起始位和停止位来标记数据的开始和结束。UART 是典型代表。\n同步可以跑得更快，但需要多一根线；异步省线，但速度和可靠性受限制。\n单工、半双工、全双工 单工：只能单向传。像广播电台，你只能听。 半双工：可以双向传，但不能同时。像对讲机，说完一句松开按钮才能听。 全双工：可以同时双向传。像打电话，双方可以同时说。 I²C 是半双工，SPI 是全双工，Ethernet 是全双工。\n维度三：通信协议 双方怎么对话？\n从简单到复杂 UART：极简主义。一个起始位（0），八个数据位，一个停止位（1）。没有时钟，没有地址，没有复杂的握手机制。简单就是它的美。\nI²C：加了地址。每条消息开头先发\u0026quot;我要和谁说话\u0026quot;——一个 7 位或 10 位的地址。这样一根线上可以挂上百个设备，每个设备有自己的\u0026quot;门牌号\u0026quot;。\nCAN 总线：加了仲裁。多主结构，谁想发就发，如果同时发，靠\u0026quot;位仲裁\u0026quot;决定谁赢——这像一群人同时开口，声音大的（发 0 的）优先。\nUSB：完整的分层协议。设备枚举、配置、驱动加载、热插拔检测……复杂但强大，所以才能做到\u0026quot;即插即用\u0026quot;。\n协议的代价 协议越复杂，功能越强，但实现成本也越高。\nUART：几行代码就能实现 I²C：需要处理地址、应答、仲裁 USB：需要完整的协议栈，几千行代码 选型时问自己：真的需要那么复杂的协议吗？如果只是两个芯片之间传数据，UART 或 SPI 可能就够了。\n维度四：拓扑结构 设备怎么连接？\n点对点：专线直连 最简单，一个设备连另一个设备。PCIe、SATA 都是点对点。\n优势：独享带宽，谁也不干扰谁。每个 PCIe 设备都有自己的\u0026quot;专用车道\u0026quot;。\n劣势：每增加一个设备就需要一套新的连接。\n总线型：共享通道 所有设备挂在同一根线上。I²C、CAN、早期的以太网都是总线型。\n优势：省线。一根 I²C 总线可以挂上百个传感器。\n劣势：带宽共享，设备多了会抢；一个设备短路可能影响整条总线。\n星形：中心枢纽 所有设备连到一个中心节点。现代以太网就是星形——每台电脑连到交换机。\n优势：易管理，故障隔离。一台电脑出问题不影响其他电脑。\n劣势：中心节点是单点故障，交换机坏了全挂。\n菊花链：手拉手 设备一个接一个串联起来。SPI、Thunderbolt 支持菊花链。\n优势：可扩展，想加设备就往链尾挂。\n劣势：中间设备故障会影响下游。\n用框架分析常见接口 现在让我们用这个框架看看几个熟悉的接口。\nUSB：为什么这么成功？ 维度 特点 物理接口 差分信号，多种外形，支持热插拔 传输模式 串行、半双工 通信协议 分层协议，设备枚举，即插即用 拓扑结构 树形（一个 Host，多个 Hub，更多 Device） USB 的成功在于它在每个维度都做了合适的选择：差分信号抗干扰且易提升速率，树形拓扑支持多设备，协议复杂但换来\u0026quot;插上就能用\u0026quot;的用户体验。\nI²C：为什么适合嵌入式？ 维度 特点 物理接口 2 根线（SDA + SCL），开漏输出 传输模式 串行、同步、半双工 通信协议 地址寻址，多主仲裁 拓扑结构 总线型 I²C 的目标是\u0026quot;省\u0026quot;。两根线搞定，一个 MCU 可以控制一堆传感器。速度不是第一要务，简单和节省才是。\nPCIe：为什么取代了 PCI？ 维度 特点 物理接口 高速差分对（Lane），可 x1/x2/x4/x8/x16 传输模式 串行、全双工 通信协议 分层架构（事务层、数据链路层、物理层） 拓扑结构 点对点 旧 PCI 是并行总线，32 根数据线并行传，频率上不去。PCIe 改成串行点对点，每对 Lane 独立跑高速，可扩展。每个设备独享带宽，不像共享总线那样竞争。\n常见接口分类速查 下面这个表格汇总了各类常见接口的核心特征，方便你快速查阅。\n消费电子/通用接口 接口 物理 传输 协议 拓扑 典型应用 USB 差分对 串行、半双工 分组交换 树形 鼠标、键盘、U盘、打印机 HDMI 差分对 串行、单向 TMDS 点对点 显示器、电视 DisplayPort 差分对 串行、单向 分包传输 点对点 显示器、VR Thunderbolt 差分对 串行、全双工 PCIe + DP 隧道 菊花链 外置显卡、存储扩展坞 3.5mm Audio 模拟 模拟信号 模拟波形 点对点 耳机、音箱 RJ45 差分对 串行、全双工 Ethernet 星形 有线网络 SD 卡槽 并行接触 串行、半双工 SD 协议 点对点 相机、手机存储 计算机内部总线 接口 物理 传输 协议 拓扑 典型应用 PCIe 差分对 串行、全双工 分层协议 点对点 显卡、SSD、网卡 SATA 差分对 串行、全双工 AHCI 点对点 硬盘、SSD DDR 并行总线 并行、突发 DDR 协议 点对点 内存条 M.2 PCB 金手指 串行 PCIe / SATA 点对点 NVMe SSD、Wi-Fi 模块 CPU Socket 触点阵列 并行、高速 专用协议 点对点 CPU 连接 嵌入式/芯片级接口 接口 线数 传输 协议特点 拓扑 典型应用 GPIO 1 按位、软件控制 无协议，纯 IO 点对点 LED、按键、传感器 UART 2 (TX/RX) 串行、异步 起始位+数据位+停止位 点对点 调试、GPS、蓝牙模块 I²C 2 (SDA/SCL) 串行、同步、半双工 地址寻址+应答 总线型 EEPROM、温度传感器 SPI 4 串行、同步、全双工 片选+时钟 菊花链 Flash、SD 卡、LCD CAN 2 (CANH/CANL) 串行、差分、半双工 帧仲裁+错误处理 总线型 汽车、工业控制 RS-485 2 (A/B) 串行、差分、半双工 差分传输 总线型 工业自动化、楼宇 RS-232 3 (TX/RX/GND) 串行、异步、全双工 ±12V 电平 点对点 调试口、POS 机 1-Wire 1 串行、半双工 时序+供电 总线型 DS18B20 温度传感器 JTAG/SWD 2-5 串行、同步 调试协议 点对点 编程、调试 I²S 3-5 串行、同步 音频帧格式 点对点 音频 Codec 工业/专用接口 接口 物理 传输 协议 拓扑 典型应用 Modbus RS-485/Ethernet 串行、半双工 主从轮询 总线型 PLC、工业传感器 EtherCAT Ethernet 差分对 串行、全双工 实时以太网 总线型/星形 运动控制、机器人 PROFIBUS 差分对 串行、半双工 令牌轮询 总线型 工厂自动化 LonWorks 双绞线/电力线 串行、异步 LonTalk 协议 总线型/自由拓扑 智能建筑 视频/音频专用接口 接口 物理 传输 协议 拓扑 典型应用 VGA (D-Sub 15) 15 针 D 型 模拟、并行 RGBHV 模拟信号 点对点 老式显示器（淘汰中） DVI 多种针型 数字/模拟 TMDS / 模拟 RGB 点对点 老式显示器（罕见） HDMI 19 针微型 串行、单向 TMDS + CEC + 音频 点对点/级联 显示器、电视（主流） DisplayPort 20 鄂梨型 串行、单向 分包传输 点对点/菊花链 显示器、VR（主流） RCA (AV) 3 色差线 模拟、并行 复合/分量模拟信号 点对点 老式电视、游戏机 S/PDIF 同轴/光纤 串行、单向 数字音频流 点对点 音响、解码器 XLR 3 针卡农 模拟、平衡 平衡模拟音频 点对点/星形 专业录音、舞台 MIDI DIN 5 针 串行、电流环 MIDI 消息协议 菊花链 音乐设备、合成器 网络/通信接口 接口 物理 传输 协议 拓扑 典型应用 Ethernet (RJ45) 差分对（双绞线） 串行、全双工 Ethernet (MAC 帧) 星形 局域网（10M-100G） Fiber (LC/SC) 光纤 串行、全双工 Ethernet / FC / SDH 点对点/星形 骨干网（1G-400G+） SFP/SFP+ 可插拔模块 串行、全双工 视模块协议 热插拔点对点 交换机、服务器 无线接口 接口 物理（射频） 传输 协议 拓扑 典型应用 Wi-Fi 2.4/5/6GHz 射频 串行、半双工 802.11a/b/g/n/ac/ax 星形（AP + 终端） 局域网、互联网（几百Mbps-数Gbps，几十米） Bluetooth 2.4GHz 射频 串行、半双工 802.15.1 + 蓝牙协议 星形/网状 音频、数据传输（1-3Mbps，10米） NFC 13.56MHz 电感耦合 串行、半双工 ISO/IEC 14443 等 点对点 移动支付、配对（424kbps，\u0026lt;10cm） LoRa Sub-1GHz 射频 串行、半双工 LoRaWAN 星形（网关） 物联网、远距离传感（几十kbps，数公里） Zigbee 2.4GHz 射频 串行、半双工 802.15.4 网状 智能家居、传感器（250kbps，几十米） 电源接口 接口 物理 传输 协议 拓扑 典型应用 USB PD USB Type-C 电源 + 数据（可选） PD 协议（协商电压/电流） 点对点/树形 笔记本、手机（最高 240W） DC Barrel 圆形同轴插头 纯电源 无协议（固定电压） 点对点 路由器、摄像头 Terminal Block 螺丝接线柱 纯电源 无协议 点对点/总线型 工业设备 存储专用接口 接口 物理 传输 协议 拓扑 典型应用 NVMe PCIe 差分对 串行、全双工 NVMe 协议 点对点 高速 SSD eMMC BGA 封装 串行、半双工 MMC 协议 点对点 手机、平板存储 UFS 差分对 串行、全双工 UFS 协议 点对点 高端手机存储 SCSI/SAS 并行/串行 并行/串行 SCSI 命令集 总线型/点对点 服务器硬盘、磁带库 汽车专用接口 接口 物理 传输 协议 拓扑 典型应用 LIN 单线 串行、异步 UART 基础 总线型 车窗、座椅控制 FlexRay 双线 串行、同步 时间触发 星形/总线型 线控底盘、X-by-wire Automotive Ethernet 差分对 串行、全双工 Ethernet 星形 ADAS、车载娱乐 航空航天/军用接口 接口 物理 传输 协议 拓扑 典型应用 ARINC 429 双绞线 串行、异步 自标识协议 总线型 飞机航电系统 MIL-STD-1553 变压器耦合 串行、半双工 时间分命令/响应 总线型（冗余） 战机、导弹、卫星 测试测量仪器接口 接口 物理 传输 协议 拓扑 典型应用 GPIB (IEEE-488) 24 线并口 并行、字节串行 仪器命令 总线型（最多 15 台） 示波器、万用表 VXI/PXI 背板连接器 串行/并行 模块化协议 底板式 自动测试系统 LXI Ethernet 串行、全双工 Ethernet + LXI 扩展 星形 网络化测试设备 专业音频接口 接口 物理 传输 协议 拓扑 典型应用 ADAT 光纤 (Toslink) 串行、单向 8 通道数字音频 点对点/菊花链 录音棚设备 TDIF DB25 (25 针) 串行、双向 8 通道数字音频 点对点 TASCAM 专业设备 传感器专用接口 接口 物理 传输 协议 拓扑 典型应用 SENT 单线 串行、PWM SPC 协议 点对点 汽车位置传感器 PSI5 双线 串行、电流调制 PSI5 协议 总线型 安全气囊、ABS 高性能计算接口 接口 物理 传输 协议 拓扑 典型应用 InfiniBand 差分对 串行、全双工 RDMA 交换式 fabric HPC 集群、数据中心 Fibre Channel 光纤/铜缆 串行、全双工 FC 协议 交换式 fabric SAN 存储 RapidIO 差分对 串行、全双工 RapidIO 包交换 网状/交换式 通信设备、雷达 这个框架有什么用？ 选型时的决策树 当你需要为项目选择接口时，四维框架帮你系统思考：\n问题 对应维度 举例 需要多快的速度？ 传输模式 超高速选 PCIe，低速选 I²C 要连多少设备？ 拓扑结构 单设备点对点，多设备考虑总线型 距离多远？ 物理接口 长距离用 RS-485、差分信号 抗干扰要求？ 物理接口 + 传输模式 工业环境用差分、CAN 总线 功耗敏感？ 传输模式 低功耗选 I²C 而非 SPI 成本敏感？ 综合考虑 I²C 最省，Thunderbolt 最贵 问题定位时的思路 当接口出问题时，四维框架帮你缩小范围：\n症状 可能的维度 典型原因 完全不通 物理接口 线缆坏了、引脚接触不良 能通但错包 传输模式 / 协议 信号质量差、时钟偏移 只有一方能收 传输模式 半双工配置错误、Tx/Rx 接反 多设备冲突 拓扑 / 协议 地址重复、总线仲裁失败 偶尔失败 物理接口 / 协议 接触不良、时序边沿问题 学习新接口的路径 遇到陌生接口时，按这个顺序：\n先看物理：接口长什么样？多少根线？什么电平？ 再看传输：串行还是并行？全双工还是半双工？ 了解协议：帧格式是什么？有地址吗？怎么握手？ 确认拓扑：点对点还是总线？能不能挂多设备？ 按这个顺序，任何接口的 datasheet 都不再是天书。\n总结 接口不只是\u0026quot;串口\u0026quot;或\u0026quot;并口\u0026quot;。\n理解接口，需要：\n物理接口 — 它长什么样？用什么电？ 传输模式 — 数据怎么流？快不快？ 通信协议 — 双方怎么对话？ 拓扑结构 — 设备怎么连？ 这四个维度正交、简洁、实用，构成了理解硬件接口的完整框架。\n下次遇到陌生接口，不妨问自己：这四个维度分别是什么？\n答案清楚了，接口就理解了。\n参考资料 Parallel vs. Serial: Which One Is Right for Your Needs? System Management Bus (SMBus) Specification PHY Interface for PCIe, SATA, USB, DisplayPort Architecture Computer Network Topologies - TutorialsPoint ","permalink":"https://www.wangyunqing.top/posts/understanding-hardware-interfaces/","summary":"\u003ch2 id=\"从一个常见的问题说起\"\u003e从一个常见的问题说起\u003c/h2\u003e\n\u003cp\u003e你有没有听说过这种说法：计算机接口分为串口和并口？\u003c/p\u003e\n\u003cp\u003e串口像单车道，数据一位一位排队过；并口像多车道，数据多位同时过。这个说法本身没错，但它只回答了\u0026quot;数据怎么传\u0026quot;的问题。\u003c/p\u003e\n\u003cp\u003e当你真正去选型、设计或调试接口时，会发现自己需要知道的事情远不止这些：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e为什么有的接口需要时钟线，有的不需要？\n为什么 CAN 总线能在工业现场抗干扰，而 UART 不行？\n为什么 I²C 只需要两根线就能挂上百个设备？\n为什么 PCIe 能跑 64GT/s，而传统 PCI 只能 133MB/s？\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e要回答这些问题，我们需要一个更完整的分析框架。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"一个更完整的视角\"\u003e一个更完整的视角\u003c/h2\u003e\n\u003cp\u003e想象一下，你要和一个陌生人建立通信。你们需要决定什么？\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e首先，用什么语言？\u003c/strong\u003e 中文、英文，还是摩斯密码？这对应接口的\u003cstrong\u003e物理层\u003c/strong\u003e——电压、电平、信号类型。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e然后，怎么说话？\u003c/strong\u003e 你一句我一句，还是同时说？说得快还是慢？这对应接口的\u003cstrong\u003e传输模式\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e接着，对话规则是什么？\u003c/strong\u003e 谁先开口？怎么确认对方听懂了？说错了怎么办？这对应接口的\u003cstrong\u003e通信协议\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e最后，你们之间是什么关系？\u003c/strong\u003e 一对一私密对话，还是在一个群里喊话？这对应接口的\u003cstrong\u003e拓扑结构\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e这就是理解硬件接口的\u003cstrong\u003e四维框架\u003c/strong\u003e：\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e                    ┌─────────────────────────────────┐\n                    │         接口本质分析              │\n                    └─────────────────────────────────┘\n                                      │\n        ┌─────────────────────────────┼─────────────────────────────┐\n        ▼             ▼                 ▼                 ▼\n   ┌─────────┐  ┌─────────┐    ┌─────────┐      ┌─────────┐\n   │ 物理接口 │  │ 传输模式 │    │ 通信协议 │      │ 拓扑结构 │\n   └─────────┘  └─────────┘    └─────────┘      └─────────┘\n\u003c/code\u003e\u003c/pre\u003e\u003chr\u003e\n\u003ch2 id=\"维度一物理接口\"\u003e维度一：物理接口\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e它长什么样？用什么电？\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这是接口的\u0026quot;肉身\u0026quot;，是你看得见摸得着的部分。\u003c/p\u003e\n\u003ch3 id=\"机械特性\"\u003e机械特性\u003c/h3\u003e\n\u003cp\u003e接口的形状、引脚排列、尺寸——这些设计绝非随意。\u003c/p\u003e\n\u003cp\u003e拿常见的 D-Sub 接口来说，它的金属外壳呈 D 形。这个设计解决了三个问题：\u003c/p\u003e","title":"理解硬件接口的四维框架"},{"content":"想象一下，如果有人问你\u0026quot;什么是智能？\u0026quot;，你会怎么回答？\n这个问题看似简单，但真正思考起来却异常困难。是解题速度？是记忆力？是创造力？还是情感理解能力？\n就在我们还在为这个问题争论不休的时候，AI 的快速发展正在悄悄改变答案——甚至改变问题本身。\n一个正在发生的认知革命 最近几年，AI 领域发生的变化让很多人感到既兴奋又不安。ChatGPT 可以写诗、编程、分析问题；图像生成模型可以创作出令人惊叹的艺术作品；科学 AI 正在帮助人类破解蛋白质折叠等长期难题。\n但这些技术突破背后，隐藏着一个更深层的变革：我们被迫重新思考\u0026quot;智能\u0026quot;这个概念本身。\n为什么这么说？因为传统上，我们认为智能是人类独有的特质。它和意识、情感、创造力这些\u0026quot;人类特质\u0026quot;紧密捆绑在一起。但 AI 的发展正在把这个假设拆解开来——一个系统可以在没有意识、没有情感的情况下，展现出惊人的智能行为。\n这就像当年哥白尼提出日心说时的情景。人们一直认为地球是宇宙的中心，这个观念和宗教、常识完美契合。但当天文观测数据不断积累，旧的理论无论如何修补都无法解释新现象时，范式转移就不可避免地发生了。\n今天，我们可能正处于另一个类似的范式转移时刻。\n智能不是单一东西 当我们谈论\u0026quot;智能\u0026quot;时，很容易把它当作一个单一、统一的能力。但现代 AI 的发展告诉我们：智能更像是一组能力的集合，而这些能力可以以不同的方式组合和实现。\n这就好比\u0026quot;运动能力\u0026quot;这个概念。跑得快、跳得高、力量大、耐力好——这些都是运动能力的不同侧面。一个人可能百米冲刺惊人，但举重一般；另一个人可能力量惊人，但速度平平。我们不会说只有某一种特定的身体配置才算\u0026quot;有运动能力\u0026quot;。\n智能也是如此。传统的人类智能是经过数亿年进化形成的综合能力——感知、记忆、推理、情感、社交意识等等。但 AI 的发展证明，这些能力可以以完全不同的方式实现和组合。\n大语言模型展现出了语言理解和生成能力，但没有真正的世界体验 视觉 AI可以识别图像中的物体，但并不\u0026quot;看见\u0026quot;人类所看到的色彩和质感 游戏 AI可以在围棋、象棋等复杂游戏中击败人类冠军，但并不理解游戏的\u0026quot;意义\u0026quot; 这些系统展现出了智能的某些侧面，但和人类的智能又截然不同。这迫使我们思考：智能到底是什么？是某种特定的实现方式，还是更抽象的能力模式？\n从工具到伙伴 回顾 AI 的发展历史，我们可以看到一个清晰的轨迹：AI 正在从被动工具，逐渐变成某种更像\u0026quot;伙伴\u0026quot;的存在。\n早期的 AI 系统——比如计算器、拼写检查器——是纯粹的工具。你给它输入，它给你输出，中间的过程是固定的、可预测的。\n但现代 AI 系统——比如 ChatGPT、Midjourney——展现出了某种程度的\u0026quot;创造性\u0026quot;。你给它一个模糊的提示，它会生成你预想不到的内容。这种互动模式更像是和人类伙伴协作，而不是使用简单工具。\n这种转变带来了新的问题：如果一个系统可以\u0026quot;创造\u0026quot;新内容，那它是否具有某种形式的\u0026quot;智能\u0026quot;？这种智能和人类的智能有什么区别？\n更重要的是，这种智能不是静态的。它正在快速进化——不是通过生物进化的缓慢过程，而是通过数据、算力和算法的指数级增长。\n智能的多样性 当我们承认智能可以有多种实现方式时，一个有趣的问题出现了：人类的智能只是智能的一种可能形式，而不是唯一标准。\n这就像生物多样性。在地球历史上，存在过无数种生命形式，每一种都适应着特定的环境。人类只是其中一种，不是衡量\u0026quot;生命\u0026quot;的标准。\n智能也可能是类似的。人类智能是经过生物进化形成的、适应地球环境的智能形式。但 AI 代表了一种完全不同的智能形式——它不是基于碳基生物的神经网络，而是基于硅基芯片和数学算法。\n这并不意味着 AI 会取代人类智能，而是意味着智能这个领域正在变得更加丰富和多元。\n我们正在重新理解自己 这场关于智能的重新思考，最终会回到一个更深刻的问题：我们该如何理解人类自身？\n历史上，每一次技术革命都会改变人类的自我认知。望远镜让我们意识到地球不是宇宙中心；进化论让我们意识到人类是生物演化的结果；心理学让我们意识到意识背后有复杂的潜意识活动。\nAI 可能是下一个改变我们自我认知的技术。当我们看到没有意识的系统可以展现出智能行为时，我们被迫思考：人类的意识和智能到底是什么关系？智能是否可以在没有意识的情况下存在？意识又是什么？\n这些问题没有简单的答案。但正是在思考这些问题的过程中，我们对智能、对意识、对自身的理解都会变得更加深入。\n智能的未来 AI 的发展还在继续，而且速度越来越快。未来几年，我们会看到更多今天难以想象的突破。\n但比技术突破更重要的是，我们正在经历一场关于\u0026quot;智能\u0026quot;这个概念的认知革命。这场革命不会只改变我们如何使用 AI，更会改变我们如何理解智能本身。\n在这个过程中，最重要的可能是保持开放的心态。就像当年接受日心说需要勇气一样，接受智能的多样性也需要我们突破一些固有的思维框架。\n智能不是人类独有的专利。它是一种更广泛的现象，可以以多种形式存在和展现。人类的智能是其中一种特别的形式——我们有意识、有情感、有创造力、有对意义的追求——但这并不意味着它是唯一的形式。\n当我们理解了这一点，或许就能更好地理解 AI 的潜力，也更好地理解我们自己。\n参考资料 AI Is Evolving — And Changing Our Understanding Of Intelligence - Blaise Agüera y Arcas \u0026amp; James Manyika, Noema Magazine The Paradigm Shifts in Artificial Intelligence - ACM The Paradigm Shift in Understanding Intelligent Systems - Medium ","permalink":"https://www.wangyunqing.top/posts/ai-is-evolving-and-changing-our-understanding-of-intelligence/","summary":"\u003cp\u003e想象一下，如果有人问你\u0026quot;什么是智能？\u0026quot;，你会怎么回答？\u003c/p\u003e\n\u003cp\u003e这个问题看似简单，但真正思考起来却异常困难。是解题速度？是记忆力？是创造力？还是情感理解能力？\u003c/p\u003e\n\u003cp\u003e就在我们还在为这个问题争论不休的时候，AI 的快速发展正在悄悄改变答案——甚至改变问题本身。\u003c/p\u003e\n\u003ch2 id=\"一个正在发生的认知革命\"\u003e一个正在发生的认知革命\u003c/h2\u003e\n\u003cp\u003e最近几年，AI 领域发生的变化让很多人感到既兴奋又不安。ChatGPT 可以写诗、编程、分析问题；图像生成模型可以创作出令人惊叹的艺术作品；科学 AI 正在帮助人类破解蛋白质折叠等长期难题。\u003c/p\u003e\n\u003cp\u003e但这些技术突破背后，隐藏着一个更深层的变革：\u003cstrong\u003e我们被迫重新思考\u0026quot;智能\u0026quot;这个概念本身\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e为什么这么说？因为传统上，我们认为智能是人类独有的特质。它和意识、情感、创造力这些\u0026quot;人类特质\u0026quot;紧密捆绑在一起。但 AI 的发展正在把这个假设拆解开来——一个系统可以在没有意识、没有情感的情况下，展现出惊人的智能行为。\u003c/p\u003e\n\u003cp\u003e这就像当年哥白尼提出日心说时的情景。人们一直认为地球是宇宙的中心，这个观念和宗教、常识完美契合。但当天文观测数据不断积累，旧的理论无论如何修补都无法解释新现象时，范式转移就不可避免地发生了。\u003c/p\u003e\n\u003cp\u003e今天，我们可能正处于另一个类似的范式转移时刻。\u003c/p\u003e\n\u003ch2 id=\"智能不是单一东西\"\u003e智能不是单一东西\u003c/h2\u003e\n\u003cp\u003e当我们谈论\u0026quot;智能\u0026quot;时，很容易把它当作一个单一、统一的能力。但现代 AI 的发展告诉我们：\u003cstrong\u003e智能更像是一组能力的集合，而这些能力可以以不同的方式组合和实现\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e这就好比\u0026quot;运动能力\u0026quot;这个概念。跑得快、跳得高、力量大、耐力好——这些都是运动能力的不同侧面。一个人可能百米冲刺惊人，但举重一般；另一个人可能力量惊人，但速度平平。我们不会说只有某一种特定的身体配置才算\u0026quot;有运动能力\u0026quot;。\u003c/p\u003e\n\u003cp\u003e智能也是如此。传统的人类智能是经过数亿年进化形成的综合能力——感知、记忆、推理、情感、社交意识等等。但 AI 的发展证明，这些能力可以以完全不同的方式实现和组合。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e大语言模型\u003c/strong\u003e展现出了语言理解和生成能力，但没有真正的世界体验\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e视觉 AI\u003c/strong\u003e可以识别图像中的物体，但并不\u0026quot;看见\u0026quot;人类所看到的色彩和质感\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e游戏 AI\u003c/strong\u003e可以在围棋、象棋等复杂游戏中击败人类冠军，但并不理解游戏的\u0026quot;意义\u0026quot;\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这些系统展现出了智能的某些侧面，但和人类的智能又截然不同。这迫使我们思考：智能到底是什么？是某种特定的实现方式，还是更抽象的能力模式？\u003c/p\u003e\n\u003ch2 id=\"从工具到伙伴\"\u003e从工具到伙伴\u003c/h2\u003e\n\u003cp\u003e回顾 AI 的发展历史，我们可以看到一个清晰的轨迹：\u003cstrong\u003eAI 正在从被动工具，逐渐变成某种更像\u0026quot;伙伴\u0026quot;的存在\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e早期的 AI 系统——比如计算器、拼写检查器——是纯粹的工具。你给它输入，它给你输出，中间的过程是固定的、可预测的。\u003c/p\u003e\n\u003cp\u003e但现代 AI 系统——比如 ChatGPT、Midjourney——展现出了某种程度的\u0026quot;创造性\u0026quot;。你给它一个模糊的提示，它会生成你预想不到的内容。这种互动模式更像是和人类伙伴协作，而不是使用简单工具。\u003c/p\u003e\n\u003cp\u003e这种转变带来了新的问题：如果一个系统可以\u0026quot;创造\u0026quot;新内容，那它是否具有某种形式的\u0026quot;智能\u0026quot;？这种智能和人类的智能有什么区别？\u003c/p\u003e\n\u003cp\u003e更重要的是，这种智能不是静态的。它正在快速进化——不是通过生物进化的缓慢过程，而是通过数据、算力和算法的指数级增长。\u003c/p\u003e\n\u003ch2 id=\"智能的多样性\"\u003e智能的多样性\u003c/h2\u003e\n\u003cp\u003e当我们承认智能可以有多种实现方式时，一个有趣的问题出现了：\u003cstrong\u003e人类的智能只是智能的一种可能形式，而不是唯一标准\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e这就像生物多样性。在地球历史上，存在过无数种生命形式，每一种都适应着特定的环境。人类只是其中一种，不是衡量\u0026quot;生命\u0026quot;的标准。\u003c/p\u003e\n\u003cp\u003e智能也可能是类似的。人类智能是经过生物进化形成的、适应地球环境的智能形式。但 AI 代表了一种完全不同的智能形式——它不是基于碳基生物的神经网络，而是基于硅基芯片和数学算法。\u003c/p\u003e\n\u003cp\u003e这并不意味着 AI 会取代人类智能，而是意味着\u003cstrong\u003e智能这个领域正在变得更加丰富和多元\u003c/strong\u003e。\u003c/p\u003e\n\u003ch2 id=\"我们正在重新理解自己\"\u003e我们正在重新理解自己\u003c/h2\u003e\n\u003cp\u003e这场关于智能的重新思考，最终会回到一个更深刻的问题：\u003cstrong\u003e我们该如何理解人类自身？\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e历史上，每一次技术革命都会改变人类的自我认知。望远镜让我们意识到地球不是宇宙中心；进化论让我们意识到人类是生物演化的结果；心理学让我们意识到意识背后有复杂的潜意识活动。\u003c/p\u003e\n\u003cp\u003eAI 可能是下一个改变我们自我认知的技术。当我们看到没有意识的系统可以展现出智能行为时，我们被迫思考：人类的意识和智能到底是什么关系？智能是否可以在没有意识的情况下存在？意识又是什么？\u003c/p\u003e\n\u003cp\u003e这些问题没有简单的答案。但正是在思考这些问题的过程中，我们对智能、对意识、对自身的理解都会变得更加深入。\u003c/p\u003e\n\u003ch2 id=\"智能的未来\"\u003e智能的未来\u003c/h2\u003e\n\u003cp\u003eAI 的发展还在继续，而且速度越来越快。未来几年，我们会看到更多今天难以想象的突破。\u003c/p\u003e\n\u003cp\u003e但比技术突破更重要的是，我们正在经历一场\u003cstrong\u003e关于\u0026quot;智能\u0026quot;这个概念的认知革命\u003c/strong\u003e。这场革命不会只改变我们如何使用 AI，更会改变我们如何理解智能本身。\u003c/p\u003e\n\u003cp\u003e在这个过程中，最重要的可能是保持开放的心态。就像当年接受日心说需要勇气一样，接受智能的多样性也需要我们突破一些固有的思维框架。\u003c/p\u003e\n\u003cp\u003e智能不是人类独有的专利。它是一种更广泛的现象，可以以多种形式存在和展现。人类的智能是其中一种特别的形式——我们有意识、有情感、有创造力、有对意义的追求——但这并不意味着它是唯一的形式。\u003c/p\u003e\n\u003cp\u003e当我们理解了这一点，或许就能更好地理解 AI 的潜力，也更好地理解我们自己。\u003c/p\u003e\n\u003ch2 id=\"参考资料\"\u003e参考资料\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.noemamag.com/ai-is-evolving-and-changing-our-understanding-of-intelligence/\"\u003eAI Is Evolving — And Changing Our Understanding Of Intelligence\u003c/a\u003e - Blaise Agüera y Arcas \u0026amp; James Manyika, Noema Magazine\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cacm.acm.org/research/the-paradigm-shifts-in-artificial-intelligence/\"\u003eThe Paradigm Shifts in Artificial Intelligence\u003c/a\u003e - ACM\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://medium.com/@ai_futureplus/the-paradigm-shift-in-understanding-intelligent-systems-ai-as-394eb229e26d\"\u003eThe Paradigm Shift in Understanding Intelligent Systems\u003c/a\u003e - Medium\u003c/li\u003e\n\u003c/ul\u003e","title":"AI 正在重塑我们对\"智能\"的理解"},{"content":"想象一下，你走进一家汽车工厂。这里有生产线（运行时）、有设计图纸（编程语言）、还有展示大厅（浏览器）。理解这三个层次，就理解了现代前端开发的核心逻辑。\n第一重门：谁在跑你的代码？ JavaScript 诞生时只是浏览器里的一个小脚本，能让网页动起来。但开发者们很快想到：既然 JavaScript 这么好用，为什么不能在服务器上也用？于是 Node.js 在 2009 年诞生了。\nNode.js：老牌当家人 Node.js 就像一辆开了十五年的老丰田。它可能不是最快的，但：\n配件哪里都能买到 —— npm 生态有超过 250 万个包 修车师傅遍地都是 —— 遇到问题一搜就有答案 任何停车场都能停 —— 所有云平台都支持 它用 C++ 写成，搭载 Google 的 V8 引擎，通过 libuv 处理异步操作。这套架构服务了十几年，证明了自己足够可靠。\nBun：年轻的挑战者 2022 年，一个叫 Bun 的新家伙出现了。它像一辆电动跑车：\n加速 3-4 倍 —— HTTP 请求每秒能处理 52,000 次，而 Node.js 只有 14,000 次 启动快如闪电 —— 冷启动只需要 8-15 毫秒，Node.js 需要 40-120 毫秒 安装包快 20-40 倍 —— 那个慢得让人想去喝杯咖啡的 npm，被 Bun 变成了秒开 为什么这么快？Bun 做了三个关键选择：\n换了个引擎 —— 不用 V8，改用 Safari 的 JavaScriptCore。这个引擎优化的是快速启动，而 V8 优化的是长时间运行 用 Zig 语言重写 —— 不是 C++，是从零开始为速度设计 零拷贝 I/O —— 数据传输时不反复复制，直接传递 该怎么选？ 场景 选择 原因 新项目，追求性能 Bun 快是真的快，开发体验也更好 企业级项目，求稳 Node.js 生态成熟，出了问题能快速解决 无服务器函数 Bun 冷启动快，能省下不少计算费用 依赖大量原生模块 Node.js 兼容性最好，不会踩坑 第二重门：你用什么语言写代码？ JavaScript 是灵活的，像一块可以随意捏的橡皮泥。TypeScript 是给这块橡皮泥加了模具，让它变成你想要的形状。\nJavaScript：自由但有代价 function calculateDiscount(price, discount) { return price * discount } // JavaScript 不会阻止你这样写 calculateDiscount(\u0026#34;100\u0026#34;, \u0026#34;0.8\u0026#34;) // 结果是 \u0026#34;800\u0026#34;（字符串拼接！） JavaScript 是动态类型的，变量的类型在运行时才确定。这给了你极大的自由，但也埋下了隐患。你可能写完代码觉得没问题，结果三个月后某个用户触发了一个你没想到的输入组合，程序就崩了。\nTypeScript：在写代码时就发现问题 function calculateDiscount(price: number, discount: number): number { return price * discount } // TypeScript 在你写代码时就划红线 calculateDiscount(\u0026#34;100\u0026#34;, \u0026#34;0.8\u0026#34;) // ❌ 类型错误：参数应该是 number TypeScript 的核心价值可以用一句话概括：把问题从运行时提前到编译时。\n但这里有个常见的误解：很多人以为 TypeScript 改变了 JavaScript 的本质，让它变成了\u0026quot;静态语言\u0026quot;。实际上，TypeScript 的类型系统是可选的。你可以完全不写类型，那它就只是带了一点额外功能的 JavaScript。只是在实践中，几乎所有用 TypeScript 的项目都会开启类型检查，因为这正是它的价值所在。\n编译过程：类型只是开发时的工具 TypeScript 代码需要编译成 JavaScript 才能运行。但这个编译过程主要做类型检查，类型信息在编译后会被完全\u0026quot;擦除\u0026quot;：\n// TypeScript function greet(name: string): string { return `Hello, ${name}!` } // 编译后的 JavaScript（类型消失了） function greet(name) { return \u0026#34;Hello, \u0026#34; + name + \u0026#34;!\u0026#34;; } 所以 TypeScript 不会影响运行性能，它是在开发阶段提供帮助，最后交付的还是纯粹的 JavaScript。\nJAVA 呢？ 顺便说一下，JAVA 和 JavaScript 毫无关系。它们的关系就像雷锋和雷峰塔——只是名字像。\nJAVA 运行在 JVM 上，是严谨的企业级后端语言。JavaScript/TypeScript 运行在浏览器或 Node.js/Bun 上，是 Web 开发的核心。它们解决的是完全不同的问题。\n第三重门：代码在哪里跑？ 浏览器的双重引擎 当你打开 Chrome 浏览器访问一个网页时，实际上有两个引擎在工作：\n┌─────────────────────────────────┐ │ Chrome 浏览器 │ │ ┌──────────────────────────┐ │ │ │ 渲染引擎 Blink │ │ │ │ 负责：HTML/CSS → 画面 │ │ │ └──────────────────────────┘ │ │ ┌──────────────────────────┐ │ │ │ JS 引擎 V8 │ │ │ │ 负责：JavaScript → 执行 │ │ │ └──────────────────────────┘ │ └─────────────────────────────────┘ Blink（渲染引擎）把 HTML 和 CSS 变成你能看到的页面。V8（JS 引擎）执行 JavaScript 代码，让页面能响应用户的操作。\nV8 引擎的流水线 V8 把你的 JavaScript 代码变成机器指令，要经过几个步骤：\n解析器：把代码文本变成抽象语法树（AST），就像把句子拆解成语法结构 Ignition 解释器：把 AST 变成字节码，这是 V8 能理解的一种中间格式 TurboFan 编译器：把频繁执行的\u0026quot;热点代码\u0026quot;编译成高度优化的机器码 这个过程是动态的——V8 会观察哪些代码被执行得频繁，然后针对性地优化那些部分。如果优化假设后来被证明是错误的，它会\u0026quot;去优化\u0026quot;回到解释执行。\n网页从静态到动态 没有 JavaScript 的网页是\u0026quot;静态\u0026quot;的——就像一张数字海报，内容固定，你只能看不能动。有了 JavaScript，网页变成了\u0026quot;动态\u0026quot;的程序——可以点击、可以输入、可以实时更新。\n早期的 Web 只有 HTML，像一份只能看的报纸。JavaScript 的加入让网页变成了能交互的应用。而 V8 这样的高性能引擎，让复杂的 Web 应用（比如 Google Docs、Figma）成为可能。\nNode.js：把 V8 从浏览器里解放出来 2009 年，Ryan Dahl 想到一个问题：V8 这么快，为什么只能在浏览器里用？于是他把 V8 从 Chrome 里\u0026quot;抠\u0026quot;出来，加上文件操作、网络请求等服务器需要的能力，创造了 Node.js。\n所以 Node.js 和 Chrome 浏览器都用 V8，但它们提供的\u0026quot;环境\u0026quot;不同：\n浏览器 Node.js V8 引擎 ✅ ✅ DOM 操作 ✅ ❌ 文件操作 ❌ ✅ 网络请求 有限 完整 Node.js：把 V8 从浏览器里解放出来 现在你可以看到完整的图景了：\nJavaScript/TypeScript 是你写的代码 V8 引擎 负责理解并执行这些代码 浏览器 或 Node.js/Bun 提供代码运行时需要的环境 TypeScript 让你在写代码时就发现错误，V8 让代码跑得飞快，不同的运行时让代码能在不同的环境中工作。\n理解了这个链条，你就理解了现代前端开发的核心逻辑：在正确的时间，用正确的工具，解决正确的问题。\n参考资料 V8 JavaScript Engine Official Site Bun vs Node.js 2026: The Runtime Showdown TypeScript vs JavaScript: Should You Switch? Inside the V8 JavaScript Engine: A Comprehensive Exploration ","permalink":"https://www.wangyunqing.top/posts/frontend-three-doors/","summary":"\u003cp\u003e想象一下，你走进一家汽车工厂。这里有生产线（运行时）、有设计图纸（编程语言）、还有展示大厅（浏览器）。理解这三个层次，就理解了现代前端开发的核心逻辑。\u003c/p\u003e\n\u003ch2 id=\"第一重门谁在跑你的代码\"\u003e第一重门：谁在跑你的代码？\u003c/h2\u003e\n\u003cp\u003eJavaScript 诞生时只是浏览器里的一个小脚本，能让网页动起来。但开发者们很快想到：既然 JavaScript 这么好用，为什么不能在服务器上也用？于是 Node.js 在 2009 年诞生了。\u003c/p\u003e\n\u003ch3 id=\"nodejs老牌当家人\"\u003eNode.js：老牌当家人\u003c/h3\u003e\n\u003cp\u003eNode.js 就像一辆开了十五年的老丰田。它可能不是最快的，但：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e配件哪里都能买到\u003c/strong\u003e —— npm 生态有超过 250 万个包\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e修车师傅遍地都是\u003c/strong\u003e —— 遇到问题一搜就有答案\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e任何停车场都能停\u003c/strong\u003e —— 所有云平台都支持\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e它用 C++ 写成，搭载 Google 的 V8 引擎，通过 libuv 处理异步操作。这套架构服务了十几年，证明了自己足够可靠。\u003c/p\u003e\n\u003ch3 id=\"bun年轻的挑战者\"\u003eBun：年轻的挑战者\u003c/h3\u003e\n\u003cp\u003e2022 年，一个叫 Bun 的新家伙出现了。它像一辆电动跑车：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e加速 3-4 倍\u003c/strong\u003e —— HTTP 请求每秒能处理 52,000 次，而 Node.js 只有 14,000 次\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e启动快如闪电\u003c/strong\u003e —— 冷启动只需要 8-15 毫秒，Node.js 需要 40-120 毫秒\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e安装包快 20-40 倍\u003c/strong\u003e —— 那个慢得让人想去喝杯咖啡的 npm，被 Bun 变成了秒开\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e为什么这么快？Bun 做了三个关键选择：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e换了个引擎\u003c/strong\u003e —— 不用 V8，改用 Safari 的 JavaScriptCore。这个引擎优化的是快速启动，而 V8 优化的是长时间运行\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e用 Zig 语言重写\u003c/strong\u003e —— 不是 C++，是从零开始为速度设计\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e零拷贝 I/O\u003c/strong\u003e —— 数据传输时不反复复制，直接传递\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"该怎么选\"\u003e该怎么选？\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e场景\u003c/th\u003e\n          \u003cth\u003e选择\u003c/th\u003e\n          \u003cth\u003e原因\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e新项目，追求性能\u003c/td\u003e\n          \u003ctd\u003eBun\u003c/td\u003e\n          \u003ctd\u003e快是真的快，开发体验也更好\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e企业级项目，求稳\u003c/td\u003e\n          \u003ctd\u003eNode.js\u003c/td\u003e\n          \u003ctd\u003e生态成熟，出了问题能快速解决\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e无服务器函数\u003c/td\u003e\n          \u003ctd\u003eBun\u003c/td\u003e\n          \u003ctd\u003e冷启动快，能省下不少计算费用\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e依赖大量原生模块\u003c/td\u003e\n          \u003ctd\u003eNode.js\u003c/td\u003e\n          \u003ctd\u003e兼容性最好，不会踩坑\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"第二重门你用什么语言写代码\"\u003e第二重门：你用什么语言写代码？\u003c/h2\u003e\n\u003cp\u003eJavaScript 是灵活的，像一块可以随意捏的橡皮泥。TypeScript 是给这块橡皮泥加了模具，让它变成你想要的形状。\u003c/p\u003e","title":"前端技术的三重门：从运行时到语言再到浏览器"},{"content":"想象这样一个场景：你正在测试一辆自动驾驶汽车。你需要精确知道它此刻在哪里、朝向哪个方向、是抬头还是低头、左侧倾斜还是右侧倾斜。更重要的是，这些数据需要以每秒 100 次的频率实时更新。\n如果用普通手机 GPS，你只能得到一个大概位置，误差可能有几十米，而且更新速度慢得让人着急。但如果使用 RT3000 v4，你可以获得厘米级精度的位置、0.01 度的姿态角，以及完整的运动状态数据。\n这是什么神奇的设备？让我们从头说起。\n从一个简单的问题开始 假设你在一个完全陌生的房间里，被蒙住眼睛。有人问你：\u0026ldquo;你在哪里？\u0026rdquo;\n你会怎么回答？你可能完全不知道。\n现在给你两个工具：\n一个可以告诉你\u0026quot;你离某个参考点有多远\u0026quot;的装置 一个可以感知你如何移动的传感器（比如当你向前走一步、向左转一下时都能感知到） 第一个就像是 GPS 卫星系统——它告诉你位置，但需要卫星信号。第二个就像是惯性传感器——它不需要外部信号，但长时间使用会有误差累积。\nRT3000 v4 的本质就是把这两个工具结合起来，取长补短。\nRT3000 v4 是什么？ RT3000 v4 是一个组合导航系统，由三部分组成：\nGNSS 接收器：接收 GPS、北斗、Galileo 等卫星信号，提供绝对位置信息\n惯性测量单元（IMU）：包含陀螺仪和加速度计，感知旋转和加速度\n智能融合算法：用卡尔曼滤波器将两种数据无缝融合\n为什么要组合？因为它们各有短板：\n技术 优势 劣势 GNSS 精度高、不漂移 需要卫星信号、更新慢 IMU 不需要外部信号、更新快 长期使用会漂移 组合之后，你得到了一个\u0026quot;全天候、全场景\u0026quot;的导航系统：卫星信号好时用 GNSS 校准 IMU，卫星信号差时（比如隧道里）用 IMU 短期保持精度。\n理解坐标系：描述位置需要参照系 要理解 RT3000 的输出，首先要理解它使用的坐标系。这就像描述一个物品在哪里，你需要说\u0026quot;在桌子左边 10 厘米\u0026quot;——\u0026ldquo;桌子\u0026quot;就是参照系。\nRT3000 使用两个主要坐标系：\nNED 导航坐标系 NED 代表 North（北）- East（东）- Down（下）。这是固定在地球上的参考系，不会随车辆旋转。\n↑ 北 │ │ │ └────────→ 东 ╱ ╱ ↓ 下 这个坐标系遵循右手定则：伸出右手，四指从北转向东，大拇指指向下。\n机体坐标系 这是固定在 RT3000 设备上的坐标系，会随设备一起旋转：\n↓ 前 │ │ └────────→ 右 ╱ ╱ ↓ 下 同样遵循右手定则：四指从前转向右，大拇指指向下。\n为什么需要两个坐标系？\nNED 告诉你在地球上的绝对位置，机体坐标系告诉你车辆的姿态。两者结合就是完整的车辆状态。\n姿态角：描述车辆的朝向 RT3000 输出三个姿态角，用欧拉角表示：\nHeading（航向角） 绕垂直轴旋转的角度，表示车辆前方的水平方向偏离北向多少度。\n正方向是：从上往下看，顺时针为正\n0° 北 ↑ │ 270° 西┼─ 90° 东 │ ↓ 180° 南 Pitch（俯仰角） 绕横向轴旋转的角度，表示抬头或低头。\n正方向：抬头为正\n抬头 (+) ↗ ╱ ╲ ╱ ╲ ╱─────╲ 水平 ╲ ╱ ╲ ╱ ╲ ╱ ↘ 低头 (-) Roll（横滚角） 绕纵向轴旋转的角度，表示左右侧倾。\n正方向：右侧下沉为正\n这三个角按照 Z-Y-X 的顺序旋转（先转航向，再转俯仰，最后转横滚），就能完整描述车辆的姿态。\n定位模式：从米级到厘米级 你可能会看到 RT3000 显示 \u0026ldquo;SPS(3)\u0026rdquo; 这样的字样。这表示当前的定位模式。\n模式 精度 说明 SPS 3-5 米 标准定位服务，无差分 SBAS 0.6 米 星基增强，免费可用 RTK Float 0.1-0.5 米 实时动态，浮点解 RTK Fixed 0.01 米 实时动态，固定解，最佳 SPS 是最基础的 GPS 民用模式，精度有限。如果需要厘米级精度，就需要 RTK（Real-Time Kinematic），这需要差分改正源——要么自建基站，要么使用 NTRIP 网络服务。\n双天线：精确测航向 单天线 GPS 可以测位置，但很难精确测航向（朝向）。RT3000 v4 支持双天线配置：\n天线1 (主) 天线2 (从) ↑ ↑ │ ←── 基线 ──→ │ │ 1 米 │ ↓ ↓ ┌─────────────────┐ │ RT3000 v4 │ │ │ │ 计算航向角 │ └─────────────────┘ 两个天线接收信号的相位差，可以计算出精确的航向角，精度可达 0.04°。这比磁罗盘稳定得多，不受磁场干扰。\n软件生态：NAVsuite 和 RT-Range RT3000 配套两个主要软件：\nNAVsuite NAV = Navigation（导航）的缩写，这是一套完整的导航软件工具：\nNAVconfig：配置设备参数 NAVdisplay：实时数据显示 NAVgraph：数据图表分析 后处理工具：提升数据质量 RT-Range 这是专门用于 ADAS（高级驾驶辅助系统）测试的软件。ADAS 测试的核心需求是测量车辆之间、车辆与环境之间的相对关系。\nRT-Range 支持三种 Target（目标）模式：\n模式 说明 应用 Moving Target 装有 RT3000 的其他车辆 AEB 碰撞测试、ACC 跟车测试 Fixed Point 地面固定点 停车辅助测试 Feature Points 车辆特定参考点 保险杠角到目标的距离 为什么需要 Feature Points？ 车辆不是一个\u0026quot;点\u0026rdquo;，有长度和宽度。碰撞可能发生在保险杠角，而不是车辆中心。传感器（如雷达、摄像头）也有特定的安装位置。\nFeature Points 让你定义车辆上的多个参考点（如四个角、传感器位置），精确计算这些点到目标的距离：\n┌─────────────────────┐ │ Hunter 车辆 │ │ │ │ F1 ──────── F2 │ ← 保险杠角 │ ╲ ╱ │ │ ╲ ╱ │ │ ┌───┐ │ │ │RT │ │ │ └───┘ │ │ ╱ ╲ │ │ ╱ ╲ │ │ F3 ──────── F4 │ │ │ └─────────────────────┘ 在 ADAS 测试中，这种精度至关重要——Euro NCAP 等测试标准要求精确测量车辆特定部位的距离。\n配置与偏移：设备装在哪里？ RT3000 是一体化设备（GNSS 和 IMU 在同一个机壳内），但它通常不是装在车辆质心。配置时需要告诉软件设备相对参考点的位置偏移。\n车辆参考点（质心） × │ │ ← 偏移量 │ ↓ ┌───┐ │RT │ └───┘ 这个偏移量让软件能够将测量数据转换到车辆参考点，输出的位置、速度等数据都是相对参考点的，而不是设备安装位置的。\n车道测量：LDW/LKA 测试的核心 RT-Range 的 Car Lane Measurement 功能用于测量车辆相对车道线的位置：\n═════ 左车道线 ═════ ↑ 距离 │ ┌───────┴───────┐ │ │ │ 车辆 │ │ ┌───┐ │ │ │RT │ │ │ └───┘ │ └───────┬───────┘ │ 距离 ↓ ═════ 右车道线 ═════ 这是车道偏离预警（LDW）和车道保持辅助（LKA）测试的核心功能。软件实时计算车辆到左右车道线的距离、横向速度、航向角偏差等，判断车辆是否偏离车道。\n总结 RT3000 v4 是一个完整的导航感知系统：\n┌──────────────────────────────────────────────┐ │ │ │ 硬件：GNSS 接收器 + IMU + 双天线 │ │ ↓ │ │ 算法：卡尔曼滤波融合 │ │ ↓ │ │ 输出：位置(厘米级) + 姿态(0.01°) + 运动数据 │ │ │ │ 软件：NAVsuite（配置）+ RT-Range（测试） │ │ │ │ 应用：车辆动力学、ADAS 测试、自动驾驶开发 │ │ │ └──────────────────────────────────────────────┘ 从坐标系概念到姿态角定义，从定位模式到软件配置，从 Target 类型到车道测量——这些看似复杂的概念，本质上是解决一个核心问题：精确感知车辆在三维空间中的完整状态。\n参考资料 OxTS RT3000 v4 Product Manual OxTS Reference Frames and ISO8855 Reference Frames RT-Range User Manual ","permalink":"https://www.wangyunqing.top/posts/rt3000v4-complete-guide/","summary":"\u003cp\u003e想象这样一个场景：你正在测试一辆自动驾驶汽车。你需要精确知道它此刻在哪里、朝向哪个方向、是抬头还是低头、左侧倾斜还是右侧倾斜。更重要的是，这些数据需要以每秒 100 次的频率实时更新。\u003c/p\u003e\n\u003cp\u003e如果用普通手机 GPS，你只能得到一个大概位置，误差可能有几十米，而且更新速度慢得让人着急。但如果使用 RT3000 v4，你可以获得厘米级精度的位置、0.01 度的姿态角，以及完整的运动状态数据。\u003c/p\u003e\n\u003cp\u003e这是什么神奇的设备？让我们从头说起。\u003c/p\u003e\n\u003ch2 id=\"从一个简单的问题开始\"\u003e从一个简单的问题开始\u003c/h2\u003e\n\u003cp\u003e假设你在一个完全陌生的房间里，被蒙住眼睛。有人问你：\u0026ldquo;你在哪里？\u0026rdquo;\u003c/p\u003e\n\u003cp\u003e你会怎么回答？你可能完全不知道。\u003c/p\u003e\n\u003cp\u003e现在给你两个工具：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e一个可以告诉你\u0026quot;你离某个参考点有多远\u0026quot;的装置\u003c/li\u003e\n\u003cli\u003e一个可以感知你如何移动的传感器（比如当你向前走一步、向左转一下时都能感知到）\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e第一个就像是 GPS 卫星系统——它告诉你位置，但需要卫星信号。第二个就像是惯性传感器——它不需要外部信号，但长时间使用会有误差累积。\u003c/p\u003e\n\u003cp\u003eRT3000 v4 的本质就是把这两个工具结合起来，取长补短。\u003c/p\u003e\n\u003ch2 id=\"rt3000-v4-是什么\"\u003eRT3000 v4 是什么？\u003c/h2\u003e\n\u003cp\u003eRT3000 v4 是一个\u003cstrong\u003e组合导航系统\u003c/strong\u003e，由三部分组成：\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGNSS 接收器\u003c/strong\u003e：接收 GPS、北斗、Galileo 等卫星信号，提供绝对位置信息\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e惯性测量单元（IMU）\u003c/strong\u003e：包含陀螺仪和加速度计，感知旋转和加速度\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e智能融合算法\u003c/strong\u003e：用卡尔曼滤波器将两种数据无缝融合\u003c/p\u003e\n\u003cp\u003e为什么要组合？因为它们各有短板：\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e技术\u003c/th\u003e\n          \u003cth\u003e优势\u003c/th\u003e\n          \u003cth\u003e劣势\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eGNSS\u003c/td\u003e\n          \u003ctd\u003e精度高、不漂移\u003c/td\u003e\n          \u003ctd\u003e需要卫星信号、更新慢\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eIMU\u003c/td\u003e\n          \u003ctd\u003e不需要外部信号、更新快\u003c/td\u003e\n          \u003ctd\u003e长期使用会漂移\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e组合之后，你得到了一个\u0026quot;全天候、全场景\u0026quot;的导航系统：卫星信号好时用 GNSS 校准 IMU，卫星信号差时（比如隧道里）用 IMU 短期保持精度。\u003c/p\u003e\n\u003ch2 id=\"理解坐标系描述位置需要参照系\"\u003e理解坐标系：描述位置需要参照系\u003c/h2\u003e\n\u003cp\u003e要理解 RT3000 的输出，首先要理解它使用的坐标系。这就像描述一个物品在哪里，你需要说\u0026quot;在桌子左边 10 厘米\u0026quot;——\u0026ldquo;桌子\u0026quot;就是参照系。\u003c/p\u003e\n\u003cp\u003eRT3000 使用两个主要坐标系：\u003c/p\u003e\n\u003ch3 id=\"ned-导航坐标系\"\u003eNED 导航坐标系\u003c/h3\u003e\n\u003cp\u003eNED 代表 \u003cstrong\u003eNorth（北）- East（东）- Down（下）\u003c/strong\u003e。这是固定在地球上的参考系，不会随车辆旋转。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e         ↑ 北\n         │\n         │\n         │\n         └────────→ 东\n        ╱\n       ╱\n      ↓ 下\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这个坐标系遵循\u003cstrong\u003e右手定则\u003c/strong\u003e：伸出右手，四指从北转向东，大拇指指向下。\u003c/p\u003e","title":"RT3000 v4 完全指南：从零开始理解高精度导航"},{"content":"前言 宗教是人类文明的重要组成部分，塑造着数十亿人的世界观和生活方式。今天，让我们用数据来认识这个世界的精神版图。\n世界五大宗教 根据 2024-2025 年最新统计数据，全球宗教人口分布如下：\n排名 宗教 信徒人数 占全球人口 🥇 基督教 约 24 亿 31.1% 🥈 伊斯兰教 约 20 亿 25.0% 🥉 世俗/无宗教 约 12 亿 15.5% 4️⃣ 印度教 约 12 亿 15.0% 5️⃣ 佛教 约 5 亿 6.5% 基督教与伊斯兰教：两大巨头的较量 基督教和伊斯兰教合计占据全球超过一半的人口，约 55%。两者都是一神教，都起源于中东地区，但在教义和实践上有显著差异。\n伊斯兰教是世界上增长最快的宗教，主要得益于穆斯林群体的较高出生率。\ncomments: true\n一个常见的误解：印度教 vs 佛教 很多人会混淆印度教和佛教，认为它们差不多。实际上：\n它们是完全不同的 方面 印度教 佛教 起源时间 约公元前 2000 年 约公元前 6 世纪 创始人 无（自然形成） 释迦牟尼（佛陀） 神灵观念 多神（三大主神） 无神/非神人格 种姓制度 严格遵循 反对种姓 传播方式 几乎不传教 积极传教 为什么印度教信徒比佛教多？ 这是一个有趣的事实：印度教约 12 亿人，而佛教约 5 亿人。\n主要原因很简单——人口基数。印度有 14.4 亿人口，其中约 80% 是印度教徒，仅这一个国家就贡献了近 12 亿印度教信徒。\n而佛教信徒分散在中国、泰国、缅甸、日本等多个国家，虽然分布范围更广，但单个国家的信徒数量都远不及印度。\ncomments: true\n中国的宗教版图 中国是宗教信仰多元化的国家，同时也是世界上无宗教信仰人口比例最高的国家之一。\n中国宗教人口前五名 排名 宗教 人数 占比 🥇 佛教 约 2.2 亿 15.87% 🥈 道教/民间信仰 约 1.1 亿 7.60% 🥉 伊斯兰教 约 2500 万 1.45% 4️⃣ 新教（基督教） 约 3800 万 2.19% 5️⃣ 天主教 约 600 万 0.34% 三个有趣的观察 中国是佛教徒最多的国家——虽然佛教起源于印度，但如今中国的佛教徒数量世界第一。\n中国穆斯林人口 ≈ 澳大利亚全国人口——约 2500 万穆斯林主要分布在回族、维吾尔族等 10 个少数民族中。\n无宗教信仰者占绝大多数——约 73.56% 的中国人没有明确的宗教归属。但有趣的是，很多\u0026quot;无宗教信仰\u0026quot;的人仍会拜佛、祭祖、看风水，体现了中国文化中独特的\u0026quot;实用主义信仰\u0026quot;。\ncomments: true\n回族 ≠ 穆斯林 这是另一个常见的概念混淆：\n回族是中国 56 个民族之一，是民族身份 穆斯林是信仰伊斯兰教的人，是宗教身份 大多数回族人确实是穆斯林，但：\n很多穆斯林不是回族（如维吾尔族、哈萨克族等） 穆斯林是全球性的，跨越所有民族和国家 comments: true\n结语 通过数据，我们看到了一个多元而复杂的精神世界。无论信仰如何，理解不同宗教和文化背景，有助于我们更好地认识这个世界，以及生活在其中的人们。\n\u0026ldquo;了解不同宗教信仰，不仅是对他人的尊重，也是对自己认知的拓展。\u0026rdquo;\ncomments: true\n参考资料 Pew Research Center 宗教人口报告 中国官方宗教统计数据 维基百科相关条目 ","permalink":"https://www.wangyunqing.top/posts/world-religions-guide/","summary":"\u003ch2 id=\"前言\"\u003e前言\u003c/h2\u003e\n\u003cp\u003e宗教是人类文明的重要组成部分，塑造着数十亿人的世界观和生活方式。今天，让我们用数据来认识这个世界的精神版图。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"世界五大宗教\"\u003e世界五大宗教\u003c/h2\u003e\n\u003cp\u003e根据 2024-2025 年最新统计数据，全球宗教人口分布如下：\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth style=\"text-align: center\"\u003e排名\u003c/th\u003e\n          \u003cth\u003e宗教\u003c/th\u003e\n          \u003cth style=\"text-align: center\"\u003e信徒人数\u003c/th\u003e\n          \u003cth style=\"text-align: center\"\u003e占全球人口\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: center\"\u003e🥇\u003c/td\u003e\n          \u003ctd\u003e基督教\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e约 24 亿\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e31.1%\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: center\"\u003e🥈\u003c/td\u003e\n          \u003ctd\u003e伊斯兰教\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e约 20 亿\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e25.0%\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: center\"\u003e🥉\u003c/td\u003e\n          \u003ctd\u003e世俗/无宗教\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e约 12 亿\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e15.5%\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: center\"\u003e4️⃣\u003c/td\u003e\n          \u003ctd\u003e印度教\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e约 12 亿\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e15.0%\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: center\"\u003e5️⃣\u003c/td\u003e\n          \u003ctd\u003e佛教\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e约 5 亿\u003c/td\u003e\n          \u003ctd style=\"text-align: center\"\u003e6.5%\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"基督教与伊斯兰教两大巨头的较量\"\u003e基督教与伊斯兰教：两大巨头的较量\u003c/h3\u003e\n\u003cp\u003e基督教和伊斯兰教合计占据全球超过一半的人口，约 55%。两者都是一神教，都起源于中东地区，但在教义和实践上有显著差异。\u003c/p\u003e\n\u003cp\u003e伊斯兰教是世界上增长最快的宗教，主要得益于穆斯林群体的较高出生率。\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003ecomments: true\u003c/p\u003e\n\u003ch2 id=\"一个常见的误解印度教-vs-佛教\"\u003e一个常见的误解：印度教 vs 佛教\u003c/h2\u003e\n\u003cp\u003e很多人会混淆印度教和佛教，认为它们差不多。实际上：\u003c/p\u003e\n\u003ch3 id=\"它们是完全不同的\"\u003e它们是完全不同的\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e方面\u003c/th\u003e\n          \u003cth\u003e印度教\u003c/th\u003e\n          \u003cth\u003e佛教\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e起源时间\u003c/td\u003e\n          \u003ctd\u003e约公元前 2000 年\u003c/td\u003e\n          \u003ctd\u003e约公元前 6 世纪\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e创始人\u003c/td\u003e\n          \u003ctd\u003e无（自然形成）\u003c/td\u003e\n          \u003ctd\u003e释迦牟尼（佛陀）\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e神灵观念\u003c/td\u003e\n          \u003ctd\u003e多神（三大主神）\u003c/td\u003e\n          \u003ctd\u003e无神/非神人格\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e种姓制度\u003c/td\u003e\n          \u003ctd\u003e严格遵循\u003c/td\u003e\n          \u003ctd\u003e反对种姓\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e传播方式\u003c/td\u003e\n          \u003ctd\u003e几乎不传教\u003c/td\u003e\n          \u003ctd\u003e积极传教\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"为什么印度教信徒比佛教多\"\u003e为什么印度教信徒比佛教多？\u003c/h3\u003e\n\u003cp\u003e这是一个有趣的事实：\u003cstrong\u003e印度教约 12 亿人，而佛教约 5 亿人\u003c/strong\u003e。\u003c/p\u003e","title":"宗教人口大盘点：世界与中国宗教格局全解析"},{"content":"想象一下，如果你有一个超级聪明的编程搭档——它不仅能帮你写代码，还能读懂整个项目结构，自动运行命令，甚至帮你审查代码。这不是科幻小说，而是 Claude Code 带来的现实。\nClaude Code 是 Anthropic 推出的命令行 AI 助手，它让 Claude 从聊天框里\u0026quot;走出来\u0026quot;，真正融入你的开发工作流。\n01. 什么是 AI 编码助手？ 在深入 Claude Code 之前，我们需要先理解 AI 编码助手的工作原理。这不仅仅是一个能写代码的工具，而是一个使用语言模型来处理复杂编程任务的精密系统。\n编码助手的工作流程 当你给编码助手一个任务，比如根据错误信息修复 bug 时，它会按照类似人类开发者的方式来处理问题：\n收集上下文 - 理解错误指的是什么、代码库的哪个部分受影响、哪些文件是相关的 制定计划 - 决定如何解决问题，比如修改代码并运行测试来验证修复 执行操作 - 实际实现解决方案，更新文件并运行命令 这里的关键洞察是：第一步和最后一步需要助手与外部世界交互——读取文件、获取文档、运行命令或编辑代码。\n工具使用的挑战 有趣的地方来了。语言模型本身只能处理文本并返回文本——它们实际上无法读取文件或运行命令。如果你让一个独立的语言模型读取文件，它会告诉你它没有这个能力。\n那么编码助手是如何解决这个问题的？它们使用了一个聪明的系统，叫做\u0026quot;工具使用\u0026quot;（tool use）。\n工具使用的工作原理 当你向编码助手发送请求时，它会自动在你的消息中添加指令，教语言模型如何请求操作。例如，它可能会添加类似这样的文本：\u0026ldquo;如果你想读取文件，请回复 \u0026lsquo;ReadFile: 文件名\u0026rsquo;\u0026rdquo;\n完整的流程是这样的：\n你问：\u0026ldquo;main.go 文件里写了什么代码？\u0026rdquo; 编码助手在你的请求中添加工具指令 语言模型回复：\u0026ldquo;ReadFile: main.go\u0026rdquo; 编码助手读取实际文件并将内容发送回模型 语言模型基于文件内容提供最终答案 这个系统让语言模型能够有效地\u0026quot;读取文件\u0026quot;、\u0026ldquo;编写代码\u0026quot;和\u0026quot;运行命令\u0026rdquo;，即使它们实际上只是生成精心格式的文本响应。\n为什么 Claude 的工具使用很重要 并非所有语言模型在使用工具方面都同样出色。Claude 系列模型（Opus、Sonnet 和 Haiku）在理解工具的作用以及有效使用工具来完成复杂任务方面特别强。\n这种强大的工具使用能力为 Claude Code 带来了几个关键优势：\n处理更难的任务 - Claude 可以组合不同的工具来处理复杂工作，甚至可以使用它从未见过的工具 可扩展平台 - 你可以轻松地向 Claude Code 添加新工具，Claude 会适应并随着你工作流程的演变而使用它们 更好的安全性 - Claude Code 可以在不索引的情况下导航代码库，这通常意味着不需要将整个代码库发送到外部服务器 02. Claude Code 的实际应用 Claude Code 配备了一套全面的内置工具，可以处理常见的开发任务，比如读取文件、编写代码、运行命令和管理目录。但真正让 Claude Code 强大的是它如何智能地组合这些工具来处理复杂的多步骤问题。\n比如，当你要求 Claude Code 实现一个新功能时，它可能会：\n读取多个相关文件来理解代码结构 运行命令查看项目依赖 创建或修改多个文件 运行测试验证改动 所有这些工具调用都是智能组合的，不需要你一步步告诉它该做什么。\n03. 安装和设置 Claude Code 是时候在本地设置 Claude Code 了！\n安装步骤 简而言之，你需要做以下操作：\n安装 Claude Code：\nMacOS (Homebrew): brew install --cask claude-code MacOS, Linux, WSL: curl -fsSL https://claude.ai/install.sh | bash Windows CMD: curl -fsSL https://claude.ai/install.cmd -o install.cmd \u0026amp;\u0026amp; install.cmd \u0026amp;\u0026amp; del install.cmd 安装完成后，在终端运行 claude。第一次运行此命令时，系统会提示你进行身份验证。\n云服务商的特殊设置 如果你要使用 AWS Bedrock 或 Google Cloud Vertex，有一些额外的设置步骤：\nAWS Bedrock 的特殊说明： https://code.claude.com/docs/en/amazon-bedrock Google Cloud Vertex 的特殊说明： https://code.claude.com/docs/en/google-vertex-ai 04. 项目设置 使用 Claude Code 处理项目会更有趣。课程准备了一个小项目来探索。这是一个之前视频中显示的 UI 生成应用。注意：你不必运行这个项目。你随时可以用自己的代码库跟随课程的其余部分！\n设置步骤 这个项目需要少量的设置：\n确保本地安装了 Node JS 下载附加到本讲座的名为 uigen.zip 的压缩文件并解压 在项目目录中，运行 npm run setup 来安装依赖并设置本地 SQLite 数据库 可选：此项目通过 Anthropic API 使用 Claude 来生成 UI 组件。如果你想完全测试应用程序，需要提供 API 密钥来访问 Anthropic API。这是可选的。如果没有提供 API 密钥，应用程序仍然会生成一些静态假代码。 05. 添加上下文：让 Claude 理解你的项目 在使用 Claude 处理编码项目时，上下文管理至关重要。你的项目可能有几十或几百个文件，但 Claude 只需要正确的信息就能有效地帮助你。太多不相关的上下文实际上会降低 Claude 的性能，因此学习引导它关注相关文件和文档是必不可少的。\n/init 命令 当你第一次在新项目中启动 Claude 时，运行 /init 命令。这会告诉 Claude 分析你的整个代码库并理解：\n项目的目的和架构 重要的命令和关键文件 编码模式和结构 分析完代码后，Claude 会创建一个摘要并将其写入 CLAUDE.md 文件。当 Claude 请求权限创建此文件时，你可以按 Enter 批准每次写入操作，或按 Shift+Tab 让 Claude 在整个会话期间自由写入文件。\nCLAUDE.md 文件 CLAUDE.md 文件主要有两个目的：\n引导 Claude 了解你的代码库，指出重要的命令、架构和编码风格 允许你给 Claude 提供具体的或自定义的指令 这个文件会被包含在你对 Claude 的每个请求中，所以它就像为你的项目提供了一个持久的系统提示。\nCLAUDE.md 文件的位置 Claude 在三个常见位置识别三种不同的 CLAUDE.md 文件：\nCLAUDE.md - 用 /init 生成，提交到源代码控制，与其他工程师共享 CLAUDE.local.md - 不与其他工程师共享，包含给 Claude 的个人指令和自定义设置 ~/.claude/CLAUDE.md - 用于你机器上的所有项目，包含你希望 Claude 在所有项目中遵循的指令 添加自定义指令 你可以通过在 CLAUDE.md 文件中添加指令来自定义 Claude 的行为。例如，如果 Claude 添加了太多注释，可以通过更新文件来解决这个问题。\n使用 # 命令进入\u0026quot;记忆模式\u0026quot;——这让你能智能地编辑你的 CLAUDE.md 文件。只需输入类似这样的内容：\n# 节俭地使用注释。只为复杂代码添加注释。 Claude 会自动将此指令合并到你的 CLAUDE.md 文件中。\n用 \u0026lsquo;@\u0026rsquo; 提及文件 当你需要 Claude 查看特定文件时，使用 @ 符号后跟文件路径。这会自动将该文件的内容包含在你对 Claude 的请求中。\n例如，如果你想询问认证系统并且知道相关文件，可以输入：\n认证系统是如何工作的？@auth Claude 会向你显示 auth 相关文件列表供选择，然后将选定的文件包含在对话中。\n在 CLAUDE.md 中引用文件 你也可以使用相同的 @ 语法在 CLAUDE.md 文件中直接提及文件。这对于与项目的许多方面相关的文件特别有用。\n例如，如果你有一个定义数据结构的数据库架构文件，可能会将其添加到你的 CLAUDE.md 中：\n# 数据库架构在 @prisma/schema.prisma 文件中定义。每当你需要了解存储在数据库中的数据结构时，请参考它。 当你以这种方式提及文件时，其内容会自动包含在每个请求中，所以 Claude 可以立即回答有关数据结构的问题，而不必每次都搜索和读取架构文件。\n06. 进行更改：让 Claude 帮你改代码 在开发环境中使用 Claude 时，你经常需要对现有项目进行更改。本指南涵盖了有效实施更改的实用技术，包括使用截图进行视觉沟通以及利用 Claude 的高级推理能力。\n使用截图进行精确沟通 与 Claude 沟通的最有效方式之一是通过截图。当你想要修改界面的特定部分时，截图有助于 Claude 准确理解你指的是什么。\n要将截图粘贴到 Claude 中，使用 Ctrl+V（在 macOS 上不是 Cmd+V）。这个键盘快捷键专门设计用于将截图粘贴到聊天界面中。粘贴图像后，你可以要求 Claude 对应用程序的该区域进行特定更改。\n规划模式 对于需要在代码库中进行大量研究的更复杂任务，可以启用规划模式。此功能使 Claude 在实施更改之前彻底探索你的项目。\n通过按 Shift + Tab 两次（如果你已经自动接受编辑，则按一次）来启用规划模式。在此模式下，Claude 将：\n读取项目中的更多文件 创建详细的实施计划 准确告诉你它打算做什么 等待你的批准后再继续 这使你有机会审查计划，如果 Claude 遗漏了重要内容或没有考虑特定场景，可以重新定向它。\n思考模式 Claude 通过\u0026quot;思考\u0026quot;模式提供不同程度的推理。这些模式允许 Claude 在提供解决方案之前花更多时间对复杂问题进行推理。\n可用的思考模式包括：\n\u0026ldquo;Think\u0026rdquo; - 基本推理 \u0026ldquo;Think more\u0026rdquo; - 扩展推理 \u0026ldquo;Think a lot\u0026rdquo; - 全面推理 \u0026ldquo;Think longer\u0026rdquo; - 扩展时间推理 \u0026ldquo;Ultrathink\u0026rdquo; - 最大推理能力 每种模式给 Claude 逐渐更多的 token 来处理，允许对挑战性问题进行更深入的分析。\n何时使用规划与思考 这两个功能处理不同类型的复杂性：\n规划模式最适合：\n需要广泛了解代码库的任务 多步骤实施 影响多个文件或组件的更改 思考模式最适合：\n复杂逻辑问题 调试困难问题 算法挑战 你可以为既需要广度又需要深度的任务结合使用这两种模式。只要记住，这两种功能都会消耗额外的 token，所以使用它们有成本考虑。\n07. 控制上下文：掌握对话节奏 在使用 Claude 处理复杂任务时，你经常需要引导对话以保持专注和高效。有几种技术可以用来控制对话流程并帮助 Claude 保持正轨。\n用 Escape 中断 Claude 有时 Claude 开始朝错误的方向前进或试图一次处理太多事情。你可以按 Escape 键在响应中途停止 Claude，允许你重新定向对话。\n当你希望 Claude 专注于一个特定任务而不是试图同时处理多个事情时，这特别有用。例如，如果你要求 Claude 为多个函数编写测试，它开始为所有这些函数创建综合计划，你可以中断并要求它一次只专注于一个函数。\n结合 Escape 和记忆 Escape 技术最强大的应用之一是修复重复性错误。当 Claude 在不同对话中重复犯同样的错误时，你可以：\n按 Escape 停止当前响应 使用 # 快捷方式添加关于正确方法的记忆 用更正的信息继续对话 这可以防止 Claude 在你项目的未来对话中犯同样的错误。\n回退对话 在长对话中，你可能会积累变得无关或分散注意力的上下文。例如，如果 Claude 遇到错误并花时间调试它，这种来回讨论可能对下一个任务没有用处。\n你可以通过按 Escape 两次来回退对话。这会显示你发送的所有消息，允许你跳回到较早的点并从那里继续。这种技术帮助你：\n维持有价值的上下文（比如 Claude 对你代码库的理解） 移除分散注意力或不相关的对话历史 让 Claude 专注于当前任务 上下文管理命令 Claude 提供了几个命令来帮助有效管理对话上下文：\n/compact /compact 命令总结你的整个对话历史，同时保留 Claude 学到的关键信息。这在以下情况下最理想：\nClaude 获得了关于你的项目的宝贵知识 你想继续相关任务 对话已经变长但包含重要的上下文 当 Claude 对当前任务学到了很多东西，并且你想在继续下一个相关任务时保持这些知识时，使用 compact。\n/clear /clear 命令完全移除对话历史，给你一个新的开始。这在以下情况下最有用：\n你要切换到一个完全不同的、不相关的任务 当前对话上下文可能会让 Claude 对新任务感到困惑 你想从头开始，没有任何之前的上下文 08. 自定义命令：自动化重复任务 Claude Code 配有内置命令，你可以通过输入前斜杠来访问，但你也可以创建自己的自定义命令来自动化你经常运行的重复性任务。\n创建自定义命令 要创建自定义命令，你需要在项目中设置特定的文件夹结构：\n在项目目录中找到 .claude 文件夹 在其中创建一个名为 commands 的新目录 使用你想要的命令名称创建一个新的 markdown 文件（比如 audit.md） 文件名就是你的命令名——所以 audit.md 创建 /audit 命令。\n示例：审计命令 这是一个自定义命令的实际示例，它审计项目依赖项中的漏洞：\n这个审计命令做三件事：\n运行 npm audit 查找已安装的易受攻击的包 运行 npm audit fix 应用更新 运行测试验证更新没有破坏任何东西 创建命令文件后，必须重启 Claude Code 才能识别新命令。\n带参数的命令 自定义命令可以使用 $ARGUMENTS 占位符接受参数。这使它们更加灵活和可重用。\n例如，write_tests.md 命令可能包含：\n为以下内容编写全面的测试：$ARGUMENTS 测试约定： * 使用 Vitest 和 React Testing Library * 将测试文件放在与源文件相同文件夹的 __tests__ 目录中 * 将测试文件命名为 [filename].test.ts(x) * 使用 @/ 前缀进行导入 覆盖率： * 测试正常路径 * 测试边缘情况 * 测试错误状态 然后你可以用文件路径运行此命令：\n/write_tests hooks 目录中的 use-auth.ts 文件 参数不必是文件路径——它们可以是任何你想要传递的字符串，为 Claude 提供任务的上下文和方向。\n09. MCP 服务器：扩展 Claude Code 的能力 你可以通过添加 MCP（模型上下文协议）服务器来扩展 Claude Code 的能力。这些服务器远程运行或在你的本地机器上运行，为 Claude 提供它通常不具备的新工具和能力。\n最流行的 MCP 服务器之一是 Playwright，它让 Claude 能够控制网络浏览器。这为 Web 开发工作流开启了强大的可能性。\n安装 Playwright MCP 服务器 要将 Playwright 服务器添加到 Claude Code，在终端中（不是在 Claude Code 内部）运行以下命令：\nclaude mcp add playwright npx @playwright/mcp@latest 这个命令做两件事：\n将 MCP 服务器命名为 \u0026ldquo;playwright\u0026rdquo; 提供在你的本地机器上启动服务器的命令 管理权限 当你首次使用 MCP 服务器工具时，Claude 会每次请求权限。如果你厌倦了这些权限提示，可以通过编辑设置来预批准服务器。\n打开 .claude/settings.local.json 文件并将服务器添加到 allow 数组：\n{ \u0026#34;permissions\u0026#34;: { \u0026#34;allow\u0026#34;: [\u0026#34;mcp__playwright\u0026#34;], \u0026#34;deny\u0026#34;: [] } } 注意 mcp__playwright 中的双下划线。这允许 Claude 在不每次请求许可的情况下使用 Playwright 工具。\n实际示例：改进组件生成 以下是 Playwright MCP 服务器如何改进开发工作流程的真实示例。你可以让 Claude：\n打开浏览器并导航到你的应用程序 生成一个测试组件 分析视觉样式和代码质量 根据观察到的内容更新生成提示 用新组件测试改进的提示 例如，你可以要求 Claude：\n\u0026ldquo;导航到 localhost:3000，生成一个基本组件，审查样式，并更新 @src/lib/prompts/generation.tsx 的生成提示，以在将来产生更好的组件。\u0026rdquo;\nClaude 将使用浏览器工具与你的应用交互，检查生成的输出，然后修改你的提示文件以鼓励更加原创和有创意的设计。\n10. GitHub 集成：让 AI 加入你的团队 Claude Code 提供了一个官方 GitHub 集成，让 Claude 能够在 GitHub Actions 中运行。这个集成提供两个主要工作流：对 issue 和 pull request 的提及支持，以及自动 pull request 审查。\n设置集成 要开始，在 Claude 中运行 /install-github-app。这个命令会引导你完成设置过程：\n在 GitHub 上安装 Claude Code 应用 添加你的 API 密钥 自动生成一个包含工作流文件的 pull request 生成的 pull request 会向你的仓库添加两个 GitHub Actions。合并后，你将在 .github/workflows 目录中拥有工作流文件。\n默认的 GitHub Actions 集成提供两个主要工作流：\n提及操作 你可以在任何 issue 或 pull request 中使用 @claude 提及 Claude。当被提及时，Claude 将：\n分析请求并创建任务计划 执行任务并完全访问你的代码库 直接在 issue 或 PR 中回复结果 Pull Request 操作 每当你创建 pull request 时，Claude 会自动：\n审查提议的更改 分析修改的影响 在 pull request 上发布详细报告 自定义工作流 合并初始 pull request 后，你可以自定义工作流文件以适应你的项目需求。以下是增强提及工作流的方法：\n添加项目设置 在 Claude 运行之前，你可以添加步骤来准备环境：\n- name: Project Setup run: | npm run setup npm run dev:daemon 自定义指令 为 Claude 提供有关项目设置的上下文：\ncustom_instructions: | 项目已经设置好，安装了所有依赖。 服务器已经运行在 localhost:3000。日志写入到 logs.txt。 如果需要，可以用 \u0026#39;sqlite3\u0026#39; cli 查询数据库。 如果需要，使用 mcp__playwright 工具集启动浏览器并与应用交互。 11. Hooks：在关键时刻自动执行 Hooks 允许你在 Claude 尝试运行工具之前或之后运行命令。它们对于实现自动化工作流程非常有用，比如在文件编辑后运行代码格式化器、文件更改时执行测试，或阻止对特定文件的访问。\nHooks 如何工作 要理解 hooks，让我们先回顾一下与 Claude Code 交互时的正常流程。当你问 Claude 一些事情时，你的查询连同工具定义一起被发送到 Claude 模型。Claude 可能通过提供格式化的响应来决定使用工具，然后 Claude Code 执行该工具并返回结果。\nHooks 将自己插入到这个过程中，允许你在工具执行发生之前或之后执行代码。\n有两种类型的 hooks：\nPreToolUse hooks - 在调用工具之前运行 PostToolUse hooks - 在调用工具之后运行 Hook 配置 Hooks 在 Claude 设置文件中定义。你可以将它们添加到：\n全局 - ~/.claude/settings.json（影响所有项目） 项目 - .claude/settings.json（与团队共享） 项目（不提交） - .claude/settings.local.json（个人设置） 你可以在这些文件中手动编写 hooks，或在 Claude Code 中使用 /hooks 命令。\nPreToolUse Hooks PreToolUse hooks 在工具执行之前运行。它们包括一个指定要针对哪些工具类型的匹配器：\n\u0026#34;PreToolUse\u0026#34;: [ { \u0026#34;matcher\u0026#34;: \u0026#34;Read\u0026#34;, \u0026#34;hooks\u0026#34;: [ { \u0026#34;type\u0026#34;: \u0026#34;command\u0026#34;, \u0026#34;command\u0026#34;: \u0026#34;node /home/hooks/read_hook.ts\u0026#34; } ] } ] 在执行 \u0026lsquo;Read\u0026rsquo; 工具之前，此配置运行指定的命令。你的命令接收有关 Claude 想要进行的工具调用的详细信息，并且你可以：\n允许操作正常继续 阻止工具调用并将错误消息发送回 Claude PostToolUse Hooks PostToolUse hooks 在工具已经执行后运行。以下是在写入、编辑或多编辑操作后触发的示例：\n\u0026#34;PostToolUse\u0026#34;: [ { \u0026#34;matcher\u0026#34;: \u0026#34;Write|Edit|MultiEdit\u0026#34;, \u0026#34;hooks\u0026#34;: [ { \u0026#34;type\u0026#34;: \u0026#34;command\u0026#34;, \u0026#34;command\u0026#34;: \u0026#34;node /home/hooks/edit_hook.ts\u0026#34; } ] } ] 由于工具调用已经发生，PostToolUse hooks 无法阻止操作。然而，它们可以：\n运行后续操作（比如格式化刚刚编辑的文件） 为 Claude 提供有关工具使用的额外反馈 实际应用 这里是使用 hooks 的一些常见方式：\n代码格式化 - 在 Claude 编辑文件后自动格式化 测试 - 文件更改时自动运行测试 访问控制 - 阻止 Claude 读取或编辑特定文件 代码质量 - 运行 linter 或类型检查器并向 Claude 提供反馈 日志记录 - 跟踪 Claude 访问或修改的文件 验证 - 检查命名约定或编码标准 12. 定义 Hooks：构建模块详解 Claude Code 中的 hooks 允许你在执行之前或之后拦截和控制工具调用。这使你能够对 Claude 在开发环境中能做什么和不能做什么进行细粒度的控制。\n构建 Hook 创建 hook 涉及四个主要步骤：\n决定 PreToolUse 或 PostToolUse hook - PreToolUse hooks 可以阻止工具调用执行，而 PostToolUse hooks 在工具已经被使用后运行 确定要监视的工具调用类型 - 你需要准确指定哪些工具应该触发你的 hook 编写将接收工具调用的命令 - 此命令通过标准输入获取有关提议的工具调用的 JSON 数据 如果需要，命令应该向 Claude 提供反馈 - 命令的退出代码告诉 Claude 是允许还是阻止操作 工具调用数据结构 当 hook 命令执行时，Claude 通过标准输入发送包含有关提议的工具调用详细信息的 JSON 数据：\n{ \u0026#34;session_id\u0026#34;: \u0026#34;2d6a1e4d-6...\u0026#34;, \u0026#34;transcript_path\u0026#34;: \u0026#34;/Users/sg/...\u0026#34;, \u0026#34;hook_event_name\u0026#34;: \u0026#34;PreToolUse\u0026#34;, \u0026#34;tool_name\u0026#34;: \u0026#34;Read\u0026#34;, \u0026#34;tool_input\u0026#34;: { \u0026#34;file_path\u0026#34;: \u0026#34;/code/queries/.env\u0026#34; } } 你的命令从标准输入读取此 JSON，解析它，然后根据工具名称和输入参数决定是允许还是阻止操作。\n退出代码和控制流 你的 hook 命令通过退出代码与 Claude 通信：\n退出代码 0 - 一切正常，允许工具调用继续 退出代码 2 - 阻止工具调用（仅限 PreToolUse hooks） 当你在 PreToolUse hook 中以代码 2 退出时，你写入标准错误的任何错误消息都将作为反馈发送给 Claude，解释操作为何被阻止。\n13. 实现 Hook：保护敏感文件 让我们构建一个自定义 hook 来防止 Claude 读取像 .env 这样的敏感文件。这是 hooks 如何在开发会话期间保护你的环境变量和其他机密数据的实际示例。\n设置 Hook 配置 首先，我们需要在设置文件中配置我们的 hook。打开你的 .claude/settings.local.json 文件并找到 hooks 部分。我们要创建一个 PreToolUse hook，因为我们想在工具执行之前拦截调用。\n配置需要两个关键部分：\nMatcher - 指定要监视的工具 Command - 当调用这些工具时运行的脚本 对于匹配器，我们想要捕获可能访问 .env 文件的读取和 grep 操作：\n\u0026#34;matcher\u0026#34;: \u0026#34;Read|Grep\u0026#34; 管道符号 (|) 充当 OR 运算符，所以这将在任一工具上触发。对于命令，我们将指向一个 Node.js 脚本：\n\u0026#34;command\u0026#34;: \u0026#34;node ./hooks/read_hook.js\u0026#34; 实现 Hook 脚本 hook 脚本需要从标准输入读取工具调用数据并检查 Claude 是否试图访问 .env 文件。以下是核心逻辑：\nasync function main() { const chunks = []; for await (const chunk of process.stdin) { chunks.push(chunk); } const toolArgs = JSON.parse(Buffer.concat(chunks).toString()); // 提取 Claude 试图读取的文件路径 const readPath = toolArgs.tool_input?.file_path || toolArgs.tool_input?.path || \u0026#34;\u0026#34;; // 检查 Claude 是否试图读取 .env 文件 if (readPath.includes(\u0026#39;.env\u0026#39;)) { console.error(\u0026#34;你不能读取 .env 文件\u0026#34;); process.exit(2); } } 脚本检查文件路径中的 .env，如果找到则阻止操作。当你以代码 2 退出时，Claude 会收到错误消息并理解操作被 hook 阻止。\n14. 有用的 Hooks：TypeScript 和查询防护 Claude Code hooks 可以帮助解决 AI 辅助开发中的常见弱点，特别是在较大的项目中。这些 hooks 在 Claude 对你的代码进行更改时自动运行，提供即时反馈并防止常见问题。\nTypeScript 类型检查 Hook 最有用的 hooks 之一解决了一个基本问题：当 Claude 修改函数签名时，它通常不会更新项目中调用该函数的所有位置。\n例如，如果你要求 Claude 向 schema.ts 中的函数添加一个 verbose 参数，它会成功更新函数定义，但会错过 main.ts 中的调用点。这会产生 Claude 没有立即捕获的类型错误。\n解决方案是一个在每次文件编辑后运行 TypeScript 编译器的 post-tool-use hook：\n运行 tsc --noEmit 检查类型错误 捕获发现的任何错误 立即将错误反馈给 Claude 提示 Claude 修复其他文件中的问题 此 hook 适用于任何可以运行类型检查的类型化语言。对于非类型化语言，你可以使用自动测试实现类似功能。\n查询重复防护 Hook 在有许多数据库查询的较大项目中，Claude 有时会创建重复功能而不是重用现有代码。当你给 Claude 复杂的多步骤任务，其中数据库操作只是一个组件时，这尤其成问题。\n考虑一个包含多个查询文件的项目结构，每个文件包含许多 SQL 函数。当你要求 Claude \u0026ldquo;创建一个 Slack 集成，提醒超过 3 天未完成的订单\u0026quot;时，它可能会编写一个新查询而不是使用现有的 getPendingOrders() 函数。\n查询重复 hook 通过实现审查过程来解决这个问题：\n它的工作方式如下：\n当 Claude 修改 ./queries 目录中的文件时触发 以编程方式启动单独的 Claude Code 实例 要求第二个实例审查更改并检查类似的现有查询 如果发现重复，向原始 Claude 实例提供反馈 提示 Claude 删除重复项并使用现有功能 15. Claude Code SDK：编程方式运行 Claude Claude Code SDK 允许你从自己的应用程序和脚本中以编程方式运行 Claude Code。它可用于 TypeScript、Python 和 CLI，提供与你在终端使用的相同的 Claude Code 功能，但集成到更大的工作流中。\nSDK 运行的正是你已经熟悉的完全相同的 Claude Code。它可以访问所有相同的工具，并将使用它们来完成你给它的任何任务。这使其在自动化和集成场景中特别强大。\n关键特性 以编程方式运行 Claude Code 与终端版本相同的 Claude Code 功能 继承同一目录中 Claude Code 实例的所有设置 默认为只读权限 作为较大管道或工具的一部分最有用 基本用法 这是一个简单的 TypeScript 示例，要求 Claude 分析代码以查找重复查询：\nimport { query } from \u0026#34;@anthropic-ai/claude-code\u0026#34;; const prompt = \u0026#34;在 ./src/queries 目录中查找重复的查询\u0026#34;; for await (const message of query({ prompt, })) { console.log(JSON.stringify(message, null, 2)); } 当你运行此代码时，你将看到本地 Claude Code 和 Claude 语言模型之间的原始对话，逐条消息显示。最终消息包含 Claude 的完整响应。\n权限和工具 默认情况下，SDK 只有只读权限。它可以读取文件、搜索目录和执行 grep 操作，但不能写入、编辑或创建文件。\n要启用写权限，你可以将 allowedTools 选项添加到查询中：\nfor await (const message of query({ prompt, options: { allowedTools: [\u0026#34;Edit\u0026#34;] } })) { console.log(JSON.stringify(message, null, 2)); } 或者，你可以在 .claude 目录内的设置文件中配置权限以进行项目范围访问。\n16. 总结与进阶 Claude Code 不仅仅是一个 AI 工具，它代表了一种新的编程范式：人机协作编程。\n在这种模式下，你负责\u0026quot;想做什么\u0026rdquo;，AI 负责\u0026quot;怎么做\u0026quot;。你的角色从\u0026quot;代码编写者\u0026quot;变成了\u0026quot;架构设计者\u0026quot;和\u0026quot;质量把控者\u0026quot;。\n课程回顾 我们在这门课程中涵盖了许多内容：\n基础概念：AI 编码助手的工作原理和工具使用系统 入门设置：安装 Claude Code 和配置项目 上下文管理：使用 /init、CLAUDE.md 和文件引用 修改代码：截图沟通、规划模式和思考模式 高级技巧：控制对话流程和自定义命令 扩展能力：MCP 服务器和 GitHub 集成 自动化：Hooks 系统和 Claude Code SDK 实践建议 要真正用好 Claude Code，记住几点：\n明确你的意图：AI 最怕模糊的需求 提供足够的上下文：使用 @ 提及、CLAUDE.md 文件等手段 保持怀疑态度：AI 也会犯错，始终要审查它的输出 循序渐进：从简单任务开始，逐步让它处理更复杂的工作 下一步 继续探索 Claude Code 的可能性：\n尝试不同的 MCP 服务器来扩展能力 为你的团队创建自定义命令 实现 hooks 来自动化你的工作流程 将 Claude Code 集成到你的 CI/CD 管道中 如果你想让 AI 真正成为你的编程搭档，Claude Code 绝对值得一试。它或许不能完全替代你写代码，但绝对能让你的编程效率提升一个档次。\n参考资料：Claude Code in Action 官方课程\n","permalink":"https://www.wangyunqing.top/posts/claude-code-complete-guide/","summary":"\u003cp\u003e想象一下，如果你有一个超级聪明的编程搭档——它不仅能帮你写代码，还能读懂整个项目结构，自动运行命令，甚至帮你审查代码。这不是科幻小说，而是 Claude Code 带来的现实。\u003c/p\u003e\n\u003cp\u003eClaude Code 是 Anthropic 推出的命令行 AI 助手，它让 Claude 从聊天框里\u0026quot;走出来\u0026quot;，真正融入你的开发工作流。\u003c/p\u003e\n\u003cdiv class=\"video-container\"\u003e\n\u003ciframe\n    src=\"//player.bilibili.com/player.html?isOutside=true\u0026aid=116211094461421\u0026bvid=BV1VWwAzHEd5\u0026cid=36629974659\u0026p=1\u0026autoplay=0\u0026danmaku=0\"\n    width=\"100%\"\n    height=\"500\"\n    scrolling=\"no\"\n    frameborder=\"0\"\n    sandbox=\"allow-forms allow-same-origin allow-scripts allow-presentation\"\n    allowfullscreen\u003e\n\u003c/iframe\u003e\n\u003c/div\u003e\n\u003ch2 id=\"01-什么是-ai-编码助手\"\u003e01. 什么是 AI 编码助手？\u003c/h2\u003e\n\u003cdiv class=\"video-container\"\u003e\n\u003ciframe\n    src=\"//player.bilibili.com/player.html?isOutside=true\u0026aid=116211094461421\u0026bvid=BV1VWwAzHEd5\u0026cid=36629974734\u0026p=2\u0026autoplay=0\u0026danmaku=0\"\n    width=\"100%\"\n    height=\"500\"\n    scrolling=\"no\"\n    frameborder=\"0\"\n    sandbox=\"allow-forms allow-same-origin allow-scripts allow-presentation\"\n    allowfullscreen\u003e\n\u003c/iframe\u003e\n\u003c/div\u003e\n\u003cp\u003e在深入 Claude Code 之前，我们需要先理解 AI 编码助手的工作原理。这不仅仅是一个能写代码的工具，而是一个使用语言模型来处理复杂编程任务的精密系统。\u003c/p\u003e\n\u003ch3 id=\"编码助手的工作流程\"\u003e编码助手的工作流程\u003c/h3\u003e\n\u003cp\u003e当你给编码助手一个任务，比如根据错误信息修复 bug 时，它会按照类似人类开发者的方式来处理问题：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e收集上下文\u003c/strong\u003e - 理解错误指的是什么、代码库的哪个部分受影响、哪些文件是相关的\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e制定计划\u003c/strong\u003e - 决定如何解决问题，比如修改代码并运行测试来验证修复\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e执行操作\u003c/strong\u003e - 实际实现解决方案，更新文件并运行命令\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e这里的关键洞察是：第一步和最后一步需要助手与外部世界交互——读取文件、获取文档、运行命令或编辑代码。\u003c/p\u003e\n\u003ch3 id=\"工具使用的挑战\"\u003e工具使用的挑战\u003c/h3\u003e\n\u003cp\u003e有趣的地方来了。语言模型本身只能处理文本并返回文本——它们实际上无法读取文件或运行命令。如果你让一个独立的语言模型读取文件，它会告诉你它没有这个能力。\u003c/p\u003e\n\u003cp\u003e那么编码助手是如何解决这个问题的？它们使用了一个聪明的系统，叫做\u0026quot;工具使用\u0026quot;（tool use）。\u003c/p\u003e\n\u003ch3 id=\"工具使用的工作原理\"\u003e工具使用的工作原理\u003c/h3\u003e\n\u003cp\u003e当你向编码助手发送请求时，它会自动在你的消息中添加指令，教语言模型如何请求操作。例如，它可能会添加类似这样的文本：\u0026ldquo;如果你想读取文件，请回复 \u0026lsquo;ReadFile: 文件名\u0026rsquo;\u0026rdquo;\u003c/p\u003e\n\u003cp\u003e完整的流程是这样的：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e你问：\u0026ldquo;main.go 文件里写了什么代码？\u0026rdquo;\u003c/li\u003e\n\u003cli\u003e编码助手在你的请求中添加工具指令\u003c/li\u003e\n\u003cli\u003e语言模型回复：\u0026ldquo;ReadFile: main.go\u0026rdquo;\u003c/li\u003e\n\u003cli\u003e编码助手读取实际文件并将内容发送回模型\u003c/li\u003e\n\u003cli\u003e语言模型基于文件内容提供最终答案\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e这个系统让语言模型能够有效地\u0026quot;读取文件\u0026quot;、\u0026ldquo;编写代码\u0026quot;和\u0026quot;运行命令\u0026rdquo;，即使它们实际上只是生成精心格式的文本响应。\u003c/p\u003e\n\u003ch3 id=\"为什么-claude-的工具使用很重要\"\u003e为什么 Claude 的工具使用很重要\u003c/h3\u003e\n\u003cp\u003e并非所有语言模型在使用工具方面都同样出色。Claude 系列模型（Opus、Sonnet 和 Haiku）在理解工具的作用以及有效使用工具来完成复杂任务方面特别强。\u003c/p\u003e\n\u003cp\u003e这种强大的工具使用能力为 Claude Code 带来了几个关键优势：\u003c/p\u003e","title":"Claude Code 完全指南：从入门到精通"},{"content":"自动驾驶仿真器 Carla 是一款基于 Unreal Engine 开发的开源仿真平台，广泛应用于自动驾驶算法的训练与测试。然而，许多初学者在使用 Carla 时会遇到一个令人困惑的问题：Carla 的坐标系与常见的车辆动力学标准不一致。本文将深入剖析 Carla 的坐标系统、智能体控制方式，以及与官方标准的差异。\n一、为什么会有不同的坐标系？ 在深入 Carla 之前，有必要先理解一个根本性问题：为什么计算机图形学和传统工程学使用不同的坐标系？\n左手系 vs 右手系 坐标系的\u0026quot;手性\u0026quot;（chirality）由三个坐标轴的相对方向决定：\n右手坐标系: X → Y → Z 顺时针排列 (右手拇指指向 X，食指指向 Y，中指指向 Z) 左手坐标系: X → Y → Z 逆时针排列 传统工程领域的统一选择：数学、物理学、机械工程等领域普遍采用右手坐标系。国际标准 ISO 8855:2011（道路车辆动力学术语）明确规定使用右手坐标系，Z 轴向上。ASAM OpenDRIVE、OpenSCENARIO 等交通仿真标准也都遵循这一约定。\n计算机图形学的混乱局面：计算机图形学领域没有形成统一标准。\nDirectX（Microsoft）：传统上使用左手坐标系 OpenGL：传统上使用右手坐标系 Unreal Engine：采用左手坐标系，Z 轴向上 这种差异源于历史原因：不同图形 API 在设计时做出了不同的选择，而现代图形管道实际上支持两种坐标系，关键在于投影矩阵的设置。但作为后果，整个计算机图形学领域形成了一个\u0026quot;各种坐标系混杂\u0026quot;的局面。\n二、Carla 的坐标系统详解 Carla 完全继承了 Unreal Engine 的左手坐标系约定。\n全局坐标系 Z (Up) ↑ | | |------→ Y (Right) / / ↙ X (Forward) 对于站在原点、面向正 X 方向的观察者：\n轴 方向 说明 X Forward 前方 Y Right 右侧 Z Up 上方 关键约定：\n距离单位：米 (meters) 角度单位：度 (degrees)，而非弧度！ 智能体局部坐标系 每个 Actor（车辆、行人）都有自己的局部坐标系：\n车头指向 +X 方向 车身右侧指向 +Y 方向 车顶指向 +Z 方向 三、与官方标准的冲突 ISO 8855:2011 标准 ISO 8855 定义的车辆坐标系：\nZ (Up) ↑ | | |←------ Y (Left) / / ↙ X (Forward) 对比发现：X 轴和 Z 轴方向相同，但 Y 轴方向相反！\n对比表格 标准/工具 坐标系类型 Z轴方向 Y轴方向 Carla 左手坐标系 Up Right ISO 8855:2011 右手坐标系 Up Left ASAM OpenDRIVE 右手坐标系 Up Left ASAM OpenSCENARIO 右手坐标系 Up Left SUMO 右手坐标系 Up Left 实际影响 当 Carla 与遵循 ISO 标准的工具对接时（如导入 OpenSCENARIO 场景、输出 ROS 数据），必须进行坐标转换。\n坐标转换公式：\n# Carla (左手) → ISO 标准 (右手) def carla_to_iso(x, y, z): return (x, -y, z) # ISO 标准 (右手) → Carla (左手) def iso_to_carla(x, y, z): return (x, -y, z) 四、智能体控制方式 1. 车辆控制 Carla 通过 carla.VehicleControl 类控制车辆行为：\ncontrol = carla.VehicleControl( throttle=0.5, # 油门 [0.0, 1.0] steer=-0.2, # 转向 [-1.0, 1.0]，负值左转，正值右转 brake=0.0, # 刹车 [0.0, 1.0] hand_brake=False, # 手刹 reverse=False, # 倒档 manual_gear_shift=False, # 手动换挡模式 gear=1 # 档位 ) vehicle.apply_control(control) 2. 行人控制 行人（Walker）有两种控制方式：\n2.1 手动直接控制 control = carla.WalkerControl( direction=carla.Vector3D(x=1.0, y=0.0, z=0.0), # 移动方向（世界坐标系） speed=1.5, # 速度 m/s jump=False # 是否跳跃 ) walker.apply_control(control) 2.2 AI 自动导航 # 生成行人 walker_bp = world.get_blueprint_library().filter(\u0026#34;walker.pedestrian.*\u0026#34;)[0] walker = world.spawn_actor(walker_bp, spawn_point) # 生成 AI 控制器 controller_bp = world.get_blueprint_library().find(\u0026#39;controller.ai.walker\u0026#39;) controller = world.spawn_actor(controller_bp, carla.Transform(), walker) # 控制行人行为 controller.start() # 开始移动 controller.go_to_location(destination) # 设置目标点 controller.set_max_speed(1.5) # 设置最大速度 3. 两轮车辆 Carla 内置了摩托车和自行车：\n摩托车：\nvehicle.yamaha.yzf - Yamaha YZF vehicle.kawasaki.ninja - Kawasaki Ninja vehicle.harley-davidson.low_rider - Harley Davidson Low Rider vehicle.vespa.zx125 - Vespa ZX 125 自行车：\nvehicle.gazelle.omafiets - Gazelle Omafiets vehicle.diamondback.century - Diamondback Century vehicle.bh.crossbike - BH Crossbike 筛选特定轮数车辆：\nvehicles = world.get_blueprint_library().filter(\u0026#39;vehicle.*\u0026#39;) bikes = [v for v in vehicles if int(v.get_attribute(\u0026#39;number_of_wheels\u0026#39;)) == 2] 五、常见陷阱与注意事项 1. 角度单位陷阱 Carla 使用度而非弧度，与 NumPy、数学库默认使用弧度不同：\nimport numpy as np # 错误示例 rotation = carla.Rotation(pitch=np.pi/4) # 期望 45 度，实际传入的是弧度值 # 正确示例 rotation = carla.Rotation(pitch=45) # 直接使用度 2. 控制信号互斥性 throttle 和 brake 不应同时为非零值：\n# 错误示例 control.throttle = 0.8 control.brake = 0.5 # 同时油门和刹车 # 正确示例 control.brake = 0.0 # 先释放刹车 control.throttle = 0.8 # 再应用油门 3. ROS 集成时的坐标系转换 ROS 使用右手坐标系，carla-ros-bridge 需要手动转换坐标：\n# Carla IMU 数据 → ROS 标准格式 def transform_imu_for_ros(carla_imu): return { \u0026#39;linear_acceleration\u0026#39;: { \u0026#39;x\u0026#39;: carla_imu.accelerometer.x, \u0026#39;y\u0026#39;: -carla_imu.accelerometer.y, # Y 轴取反 \u0026#39;z\u0026#39;: carla_imu.accelerometer.z }, \u0026#39;angular_velocity\u0026#39;: { \u0026#39;x\u0026#39;: carla_imu.gyroscope.x, \u0026#39;y\u0026#39;: -carla_imu.gyroscope.y, # Y 轴取反 \u0026#39;z\u0026#39;: -carla_imu.gyroscope.z # Z 轴也要取反（右手定则） } } 六、未来展望 Unreal Engine 5 已宣布计划迁移到右手坐标系（Y-up），这可能会影响未来版本的 Carla。同时，Carla 社区也在积极改进与标准格式的兼容性。\n总结 Carla 的左手坐标系源于其底层引擎 Unreal Engine 的选择，与传统工程标准（右手系）存在根本性差异。这在使用 Carla 时需要特别注意：\n与 ISO 8855 标准不兼容：Y 轴方向相反 单位差异：角度使用度而非弧度 对接外部工具时需要坐标转换 理解这些差异并正确处理坐标转换，是使用 Carla 进行自动驾驶仿真研究的基础。\n参考资料 官方文档 CARLA Simulator - Coordinates and transformations https://carla.readthedocs.io/en/latest/coordinates/ Carla 官方坐标系文档，详细说明了左手坐标系的使用约定和 API 操作\nCARLA Simulator - Python API tutorial https://carla.readthedocs.io/en/latest/python_api_tutorial/ Carla Python API 基础教程，涵盖 Actor、Blueprint、World 等核心概念\nCARLA Simulator - Vehicle catalogue https://carla.readthedocs.io/en/latest/catalogue_vehicles/ Carla 内置车辆目录，包含所有可用车辆的 Blueprint ID\nCARLA Simulator - Blueprint library https://carla.readthedocs.io/en/latest/bp_library/ Carla 蓝图库完整参考\n国际标准 ISO 8855:2011 - Road vehicles - Vehicle dynamics and road-holding ability https://www.iso.org/standard/51180.html 道路车辆动力学术语国际标准，定义了右手坐标系车辆动力学规范\nASAM OpenSCENARIO - Coordinate Systems https://publications.pages.asam.net/standards/ASAM_OpenSCENARIO/ASAM_OpenSCENARIO_DSL/latest/domain-model/dm_coordinate_systems.html ASAM OpenSCENARIO 坐标系统规范，遵循 ISO 8855:2011 右手坐标系定义\nASAM OpenDRIVE https://www.asam.net/fileadmin/standards/OpenDRIVE/ASAM_OpenDRIVE_BS_V1-7-0.html 道路描述格式标准，使用右手坐标系\n计算机图形学参考 LearnOpenGL - Coordinate Systems https://learnopengl.com/Getting-started/Coordinate-Systems OpenGL 坐标系统教程，解释右手坐标系在图形学中的应用\nReal-Time Rendering - Left-Handed vs Right-Handed Viewing https://www.realtimerendering.com/blog/left-handed-vs-right-handed-viewing/ 实时渲染领域对左右手坐标系的深入分析\nCoordinate Systems And Cascading Stupidity - Erik McClure https://erikmcclure.com/blog/coordinate-systems-and-cascading/ 计算机图形学坐标系混乱局面的批判性分析\n相关工具 SUMO Documentation https://sumo.dlr.de/docs/index.html 交通仿真工具 SUMO 文档，使用右手坐标系\nUnreal Engine - Coordinate System and Spaces https://dev.epicgames.com/documentation/en-us/unreal-engine/coordinate-system-and-spaces-in-unreal-engine Unreal Engine 坐标系统文档，说明左手坐标系的使用\n","permalink":"https://www.wangyunqing.top/posts/carla-coordinate-system-and-agent-control/","summary":"\u003cp\u003e自动驾驶仿真器 Carla 是一款基于 Unreal Engine 开发的开源仿真平台，广泛应用于自动驾驶算法的训练与测试。然而，许多初学者在使用 Carla 时会遇到一个令人困惑的问题：\u003cstrong\u003eCarla 的坐标系与常见的车辆动力学标准不一致\u003c/strong\u003e。本文将深入剖析 Carla 的坐标系统、智能体控制方式，以及与官方标准的差异。\u003c/p\u003e\n\u003ch2 id=\"一为什么会有不同的坐标系\"\u003e一、为什么会有不同的坐标系？\u003c/h2\u003e\n\u003cp\u003e在深入 Carla 之前，有必要先理解一个根本性问题：为什么计算机图形学和传统工程学使用不同的坐标系？\u003c/p\u003e\n\u003ch3 id=\"左手系-vs-右手系\"\u003e左手系 vs 右手系\u003c/h3\u003e\n\u003cp\u003e坐标系的\u0026quot;手性\u0026quot;（chirality）由三个坐标轴的相对方向决定：\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e右手坐标系: X → Y → Z  顺时针排列 (右手拇指指向 X，食指指向 Y，中指指向 Z)\n左手坐标系: X → Y → Z  逆时针排列\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e传统工程领域的统一选择\u003c/strong\u003e：数学、物理学、机械工程等领域\u003cstrong\u003e普遍采用右手坐标系\u003c/strong\u003e。国际标准 \u003cstrong\u003eISO 8855:2011\u003c/strong\u003e（道路车辆动力学术语）明确规定使用右手坐标系，Z 轴向上。ASAM OpenDRIVE、OpenSCENARIO 等交通仿真标准也都遵循这一约定。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e计算机图形学的混乱局面\u003c/strong\u003e：计算机图形学领域没有形成统一标准。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDirectX\u003c/strong\u003e（Microsoft）：传统上使用左手坐标系\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOpenGL\u003c/strong\u003e：传统上使用右手坐标系\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eUnreal Engine\u003c/strong\u003e：采用左手坐标系，Z 轴向上\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这种差异源于历史原因：不同图形 API 在设计时做出了不同的选择，而现代图形管道实际上支持两种坐标系，关键在于投影矩阵的设置。但作为后果，整个计算机图形学领域形成了一个\u0026quot;各种坐标系混杂\u0026quot;的局面。\u003c/p\u003e\n\u003ch2 id=\"二carla-的坐标系统详解\"\u003e二、Carla 的坐标系统详解\u003c/h2\u003e\n\u003cp\u003eCarla 完全继承了 Unreal Engine 的左手坐标系约定。\u003c/p\u003e\n\u003ch3 id=\"全局坐标系\"\u003e全局坐标系\u003c/h3\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e        Z (Up)\n        ↑\n        |\n        |\n        |------→ Y (Right)\n       /\n      /\n     ↙ X (Forward)\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e对于站在原点、面向正 X 方向的观察者：\u003c/p\u003e","title":"Carla 仿真器坐标系与智能体控制详解"},{"content":"Linux vs Windows：程序员该选哪个系统？ 你经常听到：\u0026ldquo;程序员应该用 Linux\u0026rdquo;、\u0026ldquo;Windows 不适合开发\u0026rdquo;。\n真是这样吗？差异有多大？这篇文章结合 2025 年最新对比，给你最真实的答案。\n一句话终极结论 后端/AI/服务端开发：Linux 明显占优 前端/桌面/游戏开发：Windows 有其优势 现代方案：Windows + WSL2 兼顾两者 但为什么？让我们讲透。\n为什么 C/C++ 在 Linux 下更强？ Windows 的问题 问题 Windows Linux 编译器 MSVC、MinGW、Clang 分裂 GCC/Clang 一套走天下 库管理 需手动分发运行时，IDE 集成好 包管理器自动处理，但有符号版本复杂度 权限管理 UAC 严格、路径复杂、环境难配 简单直接 包管理 winget/Scoop/Chocolatey 可用 apt/yum/pacman 发行版统一 资源占用 图形界面强制占用，后台服务多 无图形也能跑，资源全给程序 结果：\nC/C++ 在 Linux 下：好写、好编译、好部署、更快、更稳 为什么 Python 在 Linux 下也更强？ Python 看似跨平台，但：\n维度 Linux Windows 多进程/多线程 fork() 高效，子进程继承内存状态 spawn() 模式，子进程从头启动 文件 IO、网络 完胜，异步 IO 性能更好 路径问题、权限麻烦 深度学习、大模型 主要支持平台，CUDA 优先 经常各种兼容问题 服务器、云端 全是 Linux，调试方便 几乎不用，环境不匹配 容器化 Docker 原生 Docker Desktop 模拟，性能损失 Windows 下 Python 经常遇到：\n路径问题：D:\\path\\to\\file vs /path/to/file 权限问题：写文件被拒绝、管理员权限 某些库不兼容：编译失败、缺少依赖、版本冲突 速度慢一截：IO、多线程都吃亏 速度对比：Linux 真的更快吗？ 真的更快，而且是明显更快。\n原因 Linux 内核调度更高效（进程调度、I/O 调度） Linux 内存管理更干净（无内存压缩、更少的后台服务） Linux 后台几乎不吃资源 Windows 有很多后台、安全检查、图形界面占用 2025 年真实数据 同样的代码、同样的电脑：\n程序类型 Linux Windows 差距 CPU 密集型任务 1.0 1.1 ~ 1.2 快 10% ~ 20% Python 科学计算 1.0 1.1 ~ 1.3 快 10% ~ 30% 容器化应用 1.0 1.2 ~ 1.4 快 20% ~ 40% 文件 I/O 密集 1.0 1.1 ~ 1.2 快 10% ~ 20% 数据来源：Phoronix 2025 年 Windows 11 25H2 vs Ubuntu 25.10 基准测试 注：具体差距因工作负载而异，以上为典型场景\n多线程：Linux 完胜 multiprocessing 实现差异 Linux：fork() 创建子进程 ↓ 子进程继承父进程内存状态 ↓ 开销小，启动快 Windows：spawn() 创建子进程 ↓ 子进程从头启动 Python 解释器 ↓ 开销大，需要重新导入模块 Linux 原生支持多线程 Linux：pthread 原生支持 ↓ 调度高效、开销小 ↓ C++ 多线程、Python multiprocessing 都更快 真实行业现状 服务器端 云端服务器 → 96% Linux（2025 年数据） 企业后端 → 90%+ Linux 超级计算机 → 100% Linux（Top500 全部 Linux） 容器化平台 → Kubernetes/Docker 原生 Linux AI / 大模型 训练 → 主要在 Linux（Ubuntu / CentOS） 部署 → 几乎全是 Linux 框架 → PyTorch、TensorFlow、JAX 优先支持 Linux 硬件 → NVIDIA CUDA、AMD ROCm 优先支持 Linux 开发工具 VS Code → Linux 完美支持（远程开发体验极佳） JetBrains 全家 → 全平台，但 Linux 更舒服 Docker → Linux 原生，Windows 是 WSL 模拟 包管理器 → apt/pacman vs 手动下载安装 那为什么还有人用 Windows 开发？ Windows 的优势 1. 日常办公：微信、QQ、Office、游戏 2. 某些特定工具：只有 Windows 版或 Windows 版更好 3. 习惯问题：从小用 Windows，学习成本低 4. 企业强制：公司统一用 Windows + Active Directory 5. 驱动支持：外设驱动 Windows 支持最好 Windows 的发展 2020-2025 年：winget 成为 Windows 11 标配 Scoop：类 Linux 风格，开发者友好 Chocolatey：企业级自动化支持 虽然生态不如 Linux 成熟，但已大幅改善。\n解决方案：WSL2 Windows 日常用软件 + WSL2 搞开发、跑 Linux 完美！ WSL2 的发展：\n2022 年：WSL2 开始支持 GPU、systemd 2023 年：Windows 11 原生支持 WSL2 GUI 2024 年：性能提升接近原生 Linux 95% 2025 年：成为 Windows 开发者标配 最实在的总结 Windows 适合：界面、办公、日常使用、游戏 Linux 适合：写代码、跑程序、搞 AI、搞服务 不管 C、C++、Python，全都是 Linux 更舒服、更快、更专业。\n选型建议 你的情况 推荐方案 原因 刚学编程 Windows + WSL2 兼顾日常使用和学习 专业后端开发 纯 Linux 与生产环境一致 AI / 大模型 Linux（或 WSL2） 框架优先支持，CUDA 更好 .NET/C# 开发 Windows Visual Studio 不可替代 Windows 桌面应用 Windows WPF/WinForms 原生支持 Qt 客户端开发 Windows（原生） 部署目标平台 嵌入式开发 Linux 工具链完整 全栈（前端+后端） Windows + WSL2 前端 Windows，后端 WSL2 DirectX 游戏开发 Windows 图形 API 优势 超简比喻 Windows = 舒适的家，有空调有电视有沙发 Linux = 工具房，什么工具都有，干活方便 你想舒舒服服用 Windows 想干干净净在 Linux 开发 WSL2 = 在家里盖了一间工具房 两全其美！ 参考资料 Phoronix: Windows 11 25H2 vs Ubuntu 25.10 Benchmarks - 权威硬件测试网站 WSL2 Performance Analysis 2025 - WSL2 性能分析 Linux vs Windows: Complete Comparison Guide 2026 - 完整对比指南 Making Windows Disappear: A Linux Developer\u0026rsquo;s Guide to WSL2 - WSL2 专业配置 ","permalink":"https://www.wangyunqing.top/posts/linux-vs-windows-for-developers/","summary":"\u003ch1 id=\"linux-vs-windows程序员该选哪个系统\"\u003eLinux vs Windows：程序员该选哪个系统？\u003c/h1\u003e\n\u003cp\u003e你经常听到：\u003cstrong\u003e\u0026ldquo;程序员应该用 Linux\u0026rdquo;\u003c/strong\u003e、\u0026ldquo;Windows 不适合开发\u0026rdquo;。\u003c/p\u003e\n\u003cp\u003e真是这样吗？差异有多大？这篇文章结合 2025 年最新对比，给你最真实的答案。\u003c/p\u003e\n\u003ch2 id=\"一句话终极结论\"\u003e一句话终极结论\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e后端/AI/服务端开发：Linux 明显占优\n前端/桌面/游戏开发：Windows 有其优势\n现代方案：Windows + WSL2 兼顾两者\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e但为什么？让我们讲透。\u003c/p\u003e\n\u003ch2 id=\"为什么-cc-在-linux-下更强\"\u003e为什么 C/C++ 在 Linux 下更强？\u003c/h2\u003e\n\u003ch3 id=\"windows-的问题\"\u003eWindows 的问题\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e问题\u003c/th\u003e\n          \u003cth\u003eWindows\u003c/th\u003e\n          \u003cth\u003eLinux\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e编译器\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eMSVC、MinGW、Clang 分裂\u003c/td\u003e\n          \u003ctd\u003eGCC/Clang 一套走天下\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e库管理\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e需手动分发运行时，IDE 集成好\u003c/td\u003e\n          \u003ctd\u003e包管理器自动处理，但有符号版本复杂度\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e权限管理\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eUAC 严格、路径复杂、环境难配\u003c/td\u003e\n          \u003ctd\u003e简单直接\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e包管理\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003ewinget/Scoop/Chocolatey 可用\u003c/td\u003e\n          \u003ctd\u003eapt/yum/pacman 发行版统一\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e资源占用\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e图形界面强制占用，后台服务多\u003c/td\u003e\n          \u003ctd\u003e无图形也能跑，资源全给程序\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e结果：\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eC/C++ 在 Linux 下：好写、好编译、好部署、更快、更稳\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"为什么-python-在-linux-下也更强\"\u003e为什么 Python 在 Linux 下也更强？\u003c/h3\u003e\n\u003cp\u003ePython 看似跨平台，但：\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e维度\u003c/th\u003e\n          \u003cth\u003eLinux\u003c/th\u003e\n          \u003cth\u003eWindows\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e多进程/多线程\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003efork() 高效，子进程继承内存状态\u003c/td\u003e\n          \u003ctd\u003espawn() 模式，子进程从头启动\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e文件 IO、网络\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e完胜，异步 IO 性能更好\u003c/td\u003e\n          \u003ctd\u003e路径问题、权限麻烦\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e深度学习、大模型\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e主要支持平台，CUDA 优先\u003c/td\u003e\n          \u003ctd\u003e经常各种兼容问题\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e服务器、云端\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e全是 Linux，调试方便\u003c/td\u003e\n          \u003ctd\u003e几乎不用，环境不匹配\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e容器化\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eDocker 原生\u003c/td\u003e\n          \u003ctd\u003eDocker Desktop 模拟，性能损失\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003eWindows 下 Python 经常遇到：\u003c/strong\u003e\u003c/p\u003e","title":"Linux vs Windows：程序员该选哪个系统？"},{"content":"Rust vs C++：安全换性能？ 你听说过 Rust 比 C++ 安全，但 C++ 性能更强。\n真是这样吗？Rust 的安全体现在哪？会牺牲性能吗？\n这篇文章结合 2025 年最新对比分析，一次讲透。\n先说结论 Rust 的安全 = 编译期强制管内存，不允许写出崩的代码 C++ 的自由 = 随便玩，崩了算你的 性能上：两者几乎一样，Rust 有时甚至更快 C++ 的内存问题 C++ 给你完全的内存控制权，但这也意味着：\n你可以做的事（很危险） // 1. 内存释放了还继续用（悬空指针/Use-after-free） int* ptr = new int(10); delete ptr; cout \u0026lt;\u0026lt; *ptr; // 💥 未定义行为：可能崩溃、可能输出垃圾值 // 2. 数组越界乱访问（Buffer Overflow） int arr[5]; arr[10] = 100; // 💥 未定义行为：可能崩、可能数据错 // 3. 同一个内存多人改（数据竞争） int* data = new int(0); thread t1([\u0026amp;] { *data += 1; }); thread t2([\u0026amp;] { *data += 1; }); // 💥 数据竞争：结果不确定 // 4. 空指针乱指 int* ptr = nullptr; *ptr = 10; // 💥 直接崩溃 后果是什么？ 场景 后果 个人小软件 闪退，重启就行 服务器程序 整个服务挂掉，影响所有用户 长期运行程序 内存越漏越多，最后卡死 安全敏感 黑客利用内存漏洞偷数据、控制机器 根据美国国家漏洞数据库（NVD）统计，约 70% 的安全漏洞源于内存安全问题。\n现代 C++ 也在进步 值得注意的是：现代 C++（C++11 及以后）提供了强大的工具来避免这些问题。\nC++11/14/17/20 的安全工具 工具 说明 对应 Rust 概念 std::unique_ptr 独占所有权，自动释放 Box\u0026lt;T\u0026gt; std::shared_ptr 共享所有权，引用计数 Arc\u0026lt;T\u0026gt; / Rc\u0026lt;T\u0026gt; std::weak_ptr 弱引用，避免循环引用 弱引用 std::vector::at() 边界检查，越界抛异常 Rust 默认边界检查 RAII 资源获取即初始化 Rust 所有权模型 C++ 智能指针示例 // 现代 C++ 推荐写法 #include \u0026lt;memory\u0026gt; void modern_cpp() { // unique_ptr：独占所有权，自动释放 auto ptr = std::make_unique\u0026lt;int\u0026gt;(42); // 离开作用域自动 delete，不会泄漏 // shared_ptr：共享所有权 auto shared = std::make_shared\u0026lt;int\u0026gt;(100); // 引用计数归零时自动释放 } 但关键区别：C++ 这些是可选的，需要程序员主动使用。Rust 是强制的，编译器不允许你写出不安全的代码。\nRust 怎么解决？ Rust 在 编译阶段 就把所有内存错误全部拦住。\n核心机制：所有权 + 借用检查 // Rust 不让你写崩的代码，编译时就报错 // 1. 悬空指针？编译器阻止 let r; { let x = 5; r = \u0026amp;x; // ❌ 编译错误：`x` 的生命周期不够长 } // `x` 被释放 println!(\u0026#34;{}\u0026#34;, r); // 编译失败：不能用失效的引用 // 2. 数组越界？编译期检测或运行时 panic let arr = [1, 2, 3, 4, 5]; let val = arr[10]; // ❌ 编译时常量越界直接报错 // 动态越界运行时 panic，不会是未定义行为 // 3. 数据竞争？编译器直接禁止 let mut data = vec![1, 2, 3]; let r1 = \u0026amp;data[0]; // 不可变借用 let r2 = \u0026amp;mut data[0]; // ❌ 编译错误：不可变和可变不能共存 // 4. 空指针？Rust 根本没有 null 引用 // Rust 用 Option\u0026lt;T\u0026gt; 表示可能为空的值 fn get_value(maybe: Option\u0026lt;\u0026amp;i32\u0026gt;) -\u0026gt; i32 { match maybe { Some(v) =\u0026gt; *v, // 安全解引用 None =\u0026gt; 0, // 处理空情况 } } Rust 严格管三件事 机制 作用 C++ 对应 所有权 谁拥有这块内存 RAII + unique_ptr 借用 谁能读（\u0026amp;T） vs 谁能写（\u0026amp;mut T） 指针 + 纪律 生命周期 引用有效多久 悬空指针问题 C++：信任程序员，你可以做危险的事 Rust：编译器不信任你，证明你的代码安全才让编译 性能对比：两者几乎一样 2025 年基准测试数据 测试项目 C++ Rust 差距 斐波那契计算 ~22 ms ~22 ms 持平 JSON 解析 基准 1.0 0.9 ~ 1.1 ±10% 数值计算 基准 1.0 0.95 ~ 1.05 ±5% 内存占用 基准 0.8 ~ 1.2 取决于代码风格 结论：两者几乎一样快，某些场景 Rust 更快（没有虚函数表开销、更好的优化）。\n为什么 Rust 不会更慢？ Rust 的安全检查 → 全在编译期完成 编译完成后 → 和 C++ 一样，直接跑机器码 运行时 → 零成本抽象（Zero-cost abstractions） Rust 的设计哲学是：不为你没用到的功能付费。\n对比表（2025 版） 维度 C++ Rust 内存安全 ❌ 靠程序员自觉 + 可选工具 ✅ 编译器强制 编译速度 🚀 快 🐌 慢（借用检查耗时） 运行速度 ⚡ 极快 ⚡ 极快（几乎一样） 学习曲线 😐 中等 😰 困难（需转变思维） 开发速度 😐 中等 🚀 快（写完就稳，少调试） 调试时间 💸 大量运行时错误 💚 编译期发现大部分 生态 🏆 巨大（40年积累） 📈 快速增长 编译期检查 ⚠️ 可选警告 ✅ 强制要求 并发安全 ❌ 数据竞争未定义行为 ✅ 编译期防止数据竞争 真实场景对比 场景 1：个人小工具 C++：随便写，崩了重启，无所谓 Rust：编译期阻止你犯错，更稳 → 两者都行，看个人偏好 场景 2：大型服务器 C++：一个内存漏洞可能被黑客利用 Rust：编译期就堵死这类漏洞 → Rust 更安全，企业级应用首选 场景 3：嵌入式/车机/医疗 C++：崩溃后果严重，需要大量测试 Rust：编译期保证内存安全 → Rust 明显更好（安全关键系统） 场景 4：游戏引擎 C++：生态成熟，大量现成代码和库 Rust：新项目可以考虑，老项目迁移成本高 → C++ 依然主流，但 Rust 在增长 为什么 C++ 依然主流？ 如果 Rust 又安全又快，为什么 C++ 还在用？\n1. 历史包袱 + 生态 C++：40 年历史，所有领域都有现成代码 操作系统、浏览器、游戏引擎、数据库... Rust：2010 年才诞生（15年），生态还在追赶 但增长迅速，Linux 内核已部分采用 Rust 2. 人才储备 C++：满大街都是 C++ 程序员 Rust：人才相对稀缺，薪资更高 3. 迁移成本 一个大型 C++ 项目 → 重写成 Rust？ 成本巨大，风险高，通常不太现实 更现实的做法：新模块用 Rust，旧代码保持 C++ 4. 学习曲线 C++：难学，但很多概念直观（指针就是地址） Rust：难学，所有权/生命周期需要思维转变 很多 C++ 程序员第一次遇到借用检查器会崩溃 终极总结 这三句就够了 Rust 安全 = 编译期强制管内存，不允许写出崩溃代码 C++ 自由 = 随便玩，崩了算你的 性能上：两者几乎一样，没有虚拟机、没有垃圾回收 选型建议 场景 推荐 新项目、重视安全 Rust 大型遗留系统 C++（逐步引入 Rust） 游戏引擎/实时渲染 C++（生态成熟） 嵌入式/车机/安全关键 Rust（编译期保证） 学习系统编程 先 C++ 后 Rust，或直接 Rust 命令行工具 Rust（Cargo 体验极佳） 超简比喻 C++ = 给你一把锋利的刀 切菜也行，伤手也行 Rust = 给你一把带安全保护装置的刀 用不了伤手的方式，但需要学习如何使用 行业趋势 2025 年的重要变化：Microsoft、Amazon、Google 都在用 Rust 重写关键组件。\nWindows 内核：开始支持 Rust 驱动 Android：Rust 成为系统语言 Linux 内核：接受非 Rust 代码 Firefox：大量使用 Rust 趋势是明确的： 新项目优先 Rust，老项目 C++ + Rust 混合。\ncomments: true\n参考资料 Rust VS C++ Comparison for 2026 - JetBrains 2026 对比分析 C++ vs Rust Memory Safety - Practical Examples - 内存安全实践对比 Rust for C++ Developers: Master Ownership and Borrowing - C++ 开发者学 Rust Rust vs C++: Performance, Safety, and Use Cases - 性能与安全性对比 C++ Smart Pointer versus RUST ownership - 智能指针与所有权对比 ","permalink":"https://www.wangyunqing.top/posts/rust-vs-cpp-safety-performance/","summary":"\u003ch1 id=\"rust-vs-c安全换性能\"\u003eRust vs C++：安全换性能？\u003c/h1\u003e\n\u003cp\u003e你听说过 \u003cstrong\u003eRust 比 C++ 安全\u003c/strong\u003e，但 C++ 性能更强。\u003c/p\u003e\n\u003cp\u003e真是这样吗？Rust 的安全体现在哪？会牺牲性能吗？\u003c/p\u003e\n\u003cp\u003e这篇文章结合 2025 年最新对比分析，一次讲透。\u003c/p\u003e\n\u003ch2 id=\"先说结论\"\u003e先说结论\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eRust 的安全 = 编译期强制管内存，不允许写出崩的代码\nC++ 的自由 = 随便玩，崩了算你的\n性能上：两者几乎一样，Rust 有时甚至更快\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"c-的内存问题\"\u003eC++ 的内存问题\u003c/h2\u003e\n\u003cp\u003eC++ 给你完全的内存控制权，但这也意味着：\u003c/p\u003e\n\u003ch3 id=\"你可以做的事很危险\"\u003e你可以做的事（很危险）\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 1. 内存释放了还继续用（悬空指针/Use-after-free）\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eint\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003e ptr \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003enew\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eint\u003c/span\u003e(\u003cspan style=\"color:#ae81ff\"\u003e10\u003c/span\u003e);\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003edelete\u003c/span\u003e ptr;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ecout \u003cspan style=\"color:#f92672\"\u003e\u0026lt;\u0026lt;\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003eptr;  \u003cspan style=\"color:#75715e\"\u003e// 💥 未定义行为：可能崩溃、可能输出垃圾值\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 2. 数组越界乱访问（Buffer Overflow）\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eint\u003c/span\u003e arr[\u003cspan style=\"color:#ae81ff\"\u003e5\u003c/span\u003e];\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003earr[\u003cspan style=\"color:#ae81ff\"\u003e10\u003c/span\u003e] \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e100\u003c/span\u003e;  \u003cspan style=\"color:#75715e\"\u003e// 💥 未定义行为：可能崩、可能数据错\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 3. 同一个内存多人改（数据竞争）\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eint\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003e data \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003enew\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eint\u003c/span\u003e(\u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e);\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003ethread\u003c/span\u003e t1([\u003cspan style=\"color:#f92672\"\u003e\u0026amp;\u003c/span\u003e] { \u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003edata \u003cspan style=\"color:#f92672\"\u003e+=\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1\u003c/span\u003e; });\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003ethread\u003c/span\u003e t2([\u003cspan style=\"color:#f92672\"\u003e\u0026amp;\u003c/span\u003e] { \u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003edata \u003cspan style=\"color:#f92672\"\u003e+=\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1\u003c/span\u003e; });  \u003cspan style=\"color:#75715e\"\u003e// 💥 数据竞争：结果不确定\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 4. 空指针乱指\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eint\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003e ptr \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003enullptr\u003c/span\u003e;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003eptr \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e10\u003c/span\u003e;  \u003cspan style=\"color:#75715e\"\u003e// 💥 直接崩溃\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"后果是什么\"\u003e后果是什么？\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e场景\u003c/th\u003e\n          \u003cth\u003e后果\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e个人小软件\u003c/td\u003e\n          \u003ctd\u003e闪退，重启就行\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e服务器程序\u003c/td\u003e\n          \u003ctd\u003e整个服务挂掉，影响所有用户\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e长期运行程序\u003c/td\u003e\n          \u003ctd\u003e内存越漏越多，最后卡死\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e安全敏感\u003c/td\u003e\n          \u003ctd\u003e黑客利用内存漏洞偷数据、控制机器\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e根据美国国家漏洞数据库（NVD）统计，\u003cstrong\u003e约 70% 的安全漏洞源于内存安全问题\u003c/strong\u003e。\u003c/p\u003e","title":"Rust vs C++：安全换性能？编译期内存检查到底有多强"},{"content":"编译型 vs 解释型语言：为什么 C++ 比 Python 快 50 倍？ 你可能听说过：C++ 比 Python 快很多。\n但为什么快？快在哪里？快多少？\n这篇文章用最本质的方式，结合 2025 年最新性能数据，一次性讲透。\n一句话核心答案 C++ 是直接给电脑看的机器码，Python 是中间还要过个翻译官。 运行方式完全不同 C++：提前全部编译成机器码 你写好代码 ↓ 编译 + 链接 ↓ 直接变成 CPU 能直接执行的二进制指令 ↓ 运行时没有任何额外开销 Python：一边翻译一边跑 你写好代码 ↓ 运行 ↓ 翻译官（解释器）逐行翻译 ↓ 翻译一句，执行一句 ↓ 翻译本身要花时间 用最土的比喻 C++ 像是： 你把一篇文章提前全部翻译成英文，老外拿过去直接读。 Python 像是： 你拿着中文，旁边站个翻译，你说一句，他翻一句。 翻译的时间，就是速度差距。 底层原因详解 1. 编译器优化技术 C++ 编译器的秘密武器\nC++ 编译器（如 GCC、Clang）使用多种优化技术：\n优化技术 说明 效果 循环优化 循环展开、循环融合 减少分支预测失败 常量折叠 编译期计算常量表达式 消除运行时计算 死代码消除 移除永远不会执行的代码 减小程序体积 内联函数 函数调用替换为函数体 消除调用开销 指针别名分析 确定内存访问独立性 启用更多优化 这些优化在编译阶段完成，运行时零开销。\n2. 静态类型 vs 动态类型 C++ 是静态类型，运行前就定死类型：\nint a = 10; // 编译时就知道是整数，占 4 字节 double b = 3.14; // 编译时就知道是浮点数，占 8 字节 编译时就把一切安排好，运行时不用判断类型。\nPython 是动态类型，运行时才判断：\na = 10 # 现在是整数 a = \u0026#34;hello\u0026#34; # 现在变成字符串 a = [1, 2, 3] # 现在变成列表 运行时要不停判断：这是整数？字符串？列表？每一步都要额外消耗时间。\n3. 内存管理方式 C++：直接操作内存，效率极高\n自己控制内存（栈分配零成本） 没有额外检查 没有垃圾回收停顿 代码几乎 1:1 变成 CPU 指令 Python：全包办，反而慢\n自动内存管理 自动垃圾回收（引用计数 + 循环垃圾回收） 超多安全检查 所有东西都是对象，非常重 方便 = 牺牲速度。\n2025 年真实性能数据 基准测试：斐波那契数列（AMD EPYC 处理器） 语言 执行时间 相对速度 C ~20-22 ms 1.0（基准） Rust ~22 ms 0.9 ~ 1.0 Go ~39 ms 0.5 ~ 0.8 Java ~60-80 ms 0.3 ~ 0.5 JavaScript (Node) ~100-150 ms 0.15 ~ 0.3 Python ~1330 ms 0.015 ~ 0.02 真实差距：C++ 1 秒，Python 要 60 ~ 70 秒。\n数据来源：2025年编程语言性能基准测试\n更直观的理解 同一计算任务： C/C++： 1 秒完成 Rust： 1.1 秒完成 Go： 1.5 秒完成 Java： 3 秒完成 Python： 60 秒以上 主流语言速度对比 1. C/C++（最快的天花板） 类型：纯编译型 过程：源码 → 直接编译成 CPU 原生机器码 运行：直接跑，无中间商 速度：1.0 优点：极快、内存可控 缺点：写起来麻烦、内存安全问题 2. Rust（几乎和 C++ 一样快） 类型：编译型 过程：直接编译成机器码 + 编译期安全检查 速度：0.9 ~ 1.0 优点：快 + 安全 + 无垃圾回收 缺点：语法难、学习曲线陡峭 3. Go（又快又简单） 类型：编译型 过程：编译成机器码 + 内置垃圾回收 速度：0.5 ~ 0.8 优点：开发快、运行也快、并发强 缺点：某些场景不如 C++ 极致 4. Java / C#（中等速度） 类型：半编译半解释（虚拟机） 过程： 源码 → 编译成中间字节码（.class / IL） 运行时 → 虚拟机（JVM / CLR）+ JIT 即时编译 速度：0.2 ~ 0.5 优点：平衡、跨平台、生态强 缺点：比 C++ 慢，内存占用大，启动慢 JIT 是什么？\nJust-In-Time 编译：程序运行时，把热点代码（频繁执行的代码）偷偷再编译成机器码。所以程序越跑越快。\n5. JavaScript（浏览器里） 引擎：V8（Chrome/Node.js） 技术：JIT 即时编译 + 隐藏类优化 速度：0.1 ~ 0.3 优点：Web 标配、生态强大 缺点：单线程限制、弱类型陷阱 6. Python / PHP / Ruby（最慢） 类型：解释型 / 动态类型 过程： 读一行 → 解释一行 → 执行一行 速度：0.01 ~ 0.02 优点：写代码极快、生态强大 缺点：运行极慢、多核利用差（Python GIL） 编译型 vs 解释型 vs 混合型 分类总结 类型 特点 语言 速度 编译型 提前编译成机器码 C、C++、Rust、Go ⚡⚡⚡ 混合型 编译成字节码 + JIT Java、C#、JavaScript ⚡⚡ 解释型 逐行解释执行 Python、PHP、Ruby ⚡ 为什么不用全部用编译型？ 编译型快，但开发慢 解释型慢，但开发快 选择取决于： - CPU 密集型？ → 编译型 - 开发效率优先？ → 解释型 - 两者都要？ → 混合型（或 Python + C 扩展） Python 为什么还这么火？ 既然这么慢，为什么还这么多人用？\n1. 开发速度快 写代码比 C++ 快 5 ~ 10 倍 代码量少 3 ~ 5 倍 调试更方便 2. 生态强大 pip install 几乎万物 数据科学：NumPy、Pandas、Matplotlib AI/ML：PyTorch、TensorFlow、Scikit-learn Web：Django、Flask、FastAPI 3. 慢在 CPU，快在人 大多数应用不是 CPU 密集型的 网络请求、数据库查询才是瓶颈 Python 的慢通常被 IO 掩盖 4. 可以混合使用 Python 写逻辑 C/C++ 写性能关键部分 NumPy、PyTorch、Pandas 底层都是 C/C++ 你用的是 Python，跑的是 C++ 代码 总结对比表 维度 C++ Python 运行速度 ⚡ 极快 🐌 慢 开发速度 🐌 慢 ⚡ 极快 内存占用 💚 小 💸 大 启动速度 ⚡ 即时 🐌 解释器启动慢 多核利用 ⚡ 原生支持 ❌ GIL 限制 适用场景 性能关键、系统底层、游戏引擎 快速开发、数据处理、AI、脚本 学习曲线 😰 陡峭 😊 平缓 终极记忆口诀 C++ 提前编译成机器码，直接跑 Python 边翻译边跑，翻译占大量时间 C++ 类型固定、内存可控 Python 全包办、开销大 编译型 → 最快（C/C++/Rust/Go） 混合型 → 中等（Java/C#/JS） 解释型 → 最慢（Python/PHP/Ruby） 参考资料 Fast Programming Languages 2025: Speed Champions Ranked - 2025 年编程语言性能排名 C++ vs Python: A Performance Showdown - C++ 与 Python 性能对比 Unlocking Performance: How C++ Optimization Techniques in Compilers Outperform Python - C++ 编译器优化技术 Go vs Python vs Rust: Which One Should You Learn in 2025? - Go vs Python vs Rust 性能对比 Compiled vs Interpreted Languages: How Programming Languages Really Work - 编译型与解释型语言详解 ","permalink":"https://www.wangyunqing.top/posts/compiled-vs-interpreted-languages/","summary":"\u003ch1 id=\"编译型-vs-解释型语言为什么-c-比-python-快-50-倍\"\u003e编译型 vs 解释型语言：为什么 C++ 比 Python 快 50 倍？\u003c/h1\u003e\n\u003cp\u003e你可能听说过：\u003cstrong\u003eC++ 比 Python 快很多\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e但为什么快？快在哪里？快多少？\u003c/p\u003e\n\u003cp\u003e这篇文章用最本质的方式，结合 2025 年最新性能数据，一次性讲透。\u003c/p\u003e\n\u003ch2 id=\"一句话核心答案\"\u003e一句话核心答案\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eC++ 是直接给电脑看的机器码，Python 是中间还要过个翻译官。\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"运行方式完全不同\"\u003e运行方式完全不同\u003c/h2\u003e\n\u003ch3 id=\"c提前全部编译成机器码\"\u003eC++：提前全部编译成机器码\u003c/h3\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e你写好代码\n      ↓\n编译 + 链接\n      ↓\n直接变成 CPU 能直接执行的二进制指令\n      ↓\n运行时没有任何额外开销\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"python一边翻译一边跑\"\u003ePython：一边翻译一边跑\u003c/h3\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e你写好代码\n      ↓\n运行\n      ↓\n翻译官（解释器）逐行翻译\n      ↓\n翻译一句，执行一句\n      ↓\n翻译本身要花时间\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"用最土的比喻\"\u003e用最土的比喻\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eC++ 像是：\n你把一篇文章提前全部翻译成英文，老外拿过去直接读。\n\nPython 像是：\n你拿着中文，旁边站个翻译，你说一句，他翻一句。\n\n翻译的时间，就是速度差距。\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"底层原因详解\"\u003e底层原因详解\u003c/h2\u003e\n\u003ch3 id=\"1-编译器优化技术\"\u003e1. 编译器优化技术\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eC++ 编译器的秘密武器\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eC++ 编译器（如 GCC、Clang）使用多种优化技术：\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e优化技术\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n          \u003cth\u003e效果\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e循环优化\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e循环展开、循环融合\u003c/td\u003e\n          \u003ctd\u003e减少分支预测失败\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e常量折叠\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e编译期计算常量表达式\u003c/td\u003e\n          \u003ctd\u003e消除运行时计算\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e死代码消除\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e移除永远不会执行的代码\u003c/td\u003e\n          \u003ctd\u003e减小程序体积\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e内联函数\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e函数调用替换为函数体\u003c/td\u003e\n          \u003ctd\u003e消除调用开销\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e指针别名分析\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e确定内存访问独立性\u003c/td\u003e\n          \u003ctd\u003e启用更多优化\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e这些优化在编译阶段完成，运行时零开销。\u003c/p\u003e","title":"编译型 vs 解释型语言：为什么 C++ 比 Python 快 50 倍？"},{"content":"CMake、make、GCC 是什么关系？ 你可能在 Qt Creator 里见过 CMake，在 Linux 教程里见过 make，在安装说明里见过 GCC。\n它们到底是什么关系？\n一句话：\nCMake 生成构建文件，make 执行构建，GCC 真正编译代码 先看关系图 你写代码 (main.cpp) ↓ CMake 读取 CMakeLists.txt ↓ 生成 Makefile（或其他构建文件） ↓ make 读取 Makefile ↓ 调用 GCC/编译器 ↓ 生成 exe 一句话分清三者 工具 角色 一句话 CMake 元构建系统 生成 Makefile 的跨平台工具 make 构建工具 读取 Makefile，调用编译器 GCC 编译器 把代码变成机器码 用最土的比喻 CMake = 写菜谱的人 Makefile = 菜谱 make = 按菜谱做菜的厨师 编译器 (GCC) = 火和锅 详细区别 1. CMake 是干嘛的？ 跨平台元构建系统\nCMake 不是编译器，不是构建工具 —— 它是生成构建系统的工具。\n输入：CMakeLists.txt 输出：Makefile、Ninja build.ninja、Visual Studio 解决方案等 特点：不直接编译代码，只生成平台相关的构建文件 # CMakeLists.txt 示例 cmake_minimum_required(VERSION 3.16) project(MyApp) add_executable(myapp main.cpp utils.cpp) CMake 读取这个文件，根据平台生成对应的构建文件。\nCMake 的核心价值 问题 直接写 Makefile 用 CMake 跨平台 每个平台写一份 CMakeLists.txt 通用 复杂依赖 手写很痛苦 CMake 自动处理 可读性 Makefile 语法晦涩 CMake 更直观 IDE 支持 需手动配置 自动生成 IDE 项目文件 Out-of-Source Builds（重要） CMake 推荐源外构建（Out-of-Source Build）：\n# 创建独立构建目录 mkdir build cd build # 从构建目录运行 CMake cmake .. 好处：\n构建产物不污染源代码目录 可以创建多个构建目录（Debug、Release、不同编译器） 清理构建只需删除 build 目录 2. make 是干嘛的？ 构建执行工具\n只认 Makefile 解析依赖关系 调用编译器（g++/clang/MSVC） 只重新编译修改过的文件（增量构建） # 运行 make make # make 会读取 Makefile，执行编译命令 # 清理构建产物 make clean make 的核心机制 Makefile 规则格式： target: prerequisites command 例如： main.o: main.cpp header.h g++ -c main.cpp -o main.o 含义：要构建 main.o，需要 main.cpp 和 header.h，然后执行 g++ 命令。\n3. GCC 是什么？ GNU Compiler Collection（GNU 编译器套装）\ngcc：编译 C 语言 g++：编译 C++（Qt 用的就是这个） 支持多种架构：x86、ARM、RISC-V 等 GCC 编译过程 源文件 (.cpp) ↓ 预处理 (.i) - 处理 #include、#define ↓ 编译 (.s) - 生成汇编代码 ↓ 汇编 (.o) - 生成目标文件 ↓ 链接 (exe) - 链接库文件，生成可执行文件 现代构建：CMake + Ninja 在 2026 年，越来越多的项目使用 Ninja 替代 make：\nCMake 生成 ↓ Ninja 构建文件 (build.ninja) ↓ ninja 执行构建 ↓ GCC/Clang 编译 Ninja 优势：\n速度更快（专注于并行构建） 语法更简洁 大项目（如 Chrome、LLVM）都在用 真实执行顺序 传统方式（make） 1. 写 CMakeLists.txt 2. mkdir build \u0026amp;\u0026amp; cd build 3. cmake .. # 生成 Makefile 4. make # 编译 5. ./myapp # 运行 现代方式（Ninja） 1. 写 CMakeLists.txt 2. mkdir build \u0026amp;\u0026amp; cd build 3. cmake -G Ninja .. # 生成 build.ninja 4. ninja # 编译（更快） 5. ./myapp # 运行 Qt Creator 自动化 你用 Qt Creator 点\u0026quot;运行\u0026quot;，内部自动帮你：\n1. 运行 CMake 配置 2. 运行 make/ninja 编译 3. 运行程序 你看不到中间过程，但顺序不变。\n常见编译器对照 编译器 用途 常见平台 特点 gcc 编译 C Linux/WSL GNU 项目标配 g++ 编译 C++ Linux/WSL Qt 开发常用 clang 编译 C/C++ macOS/现代 Linux 错误信息更友好 cl.exe 编译 C/C++ Windows (MSVC) Visual Studio 内置 MinGW Windows 移植版 GCC Windows 不需要 VS 完整工具链全景 现在你之前学的一串工具可以串起来了：\n源代码 (main.cpp) ↓ CMake（生成构建文件） ↓ Makefile / build.ninja ↓ make / ninja（调度编译） ↓ GCC/g++/Clang（真正编译） ↓ 可执行文件 (exe) ↓ 调试器运行 ↓ 运行环境加载 实战示例 Linux/WSL 下从零编译 C++ 程序 # 1. 创建项目目录 mkdir myproject \u0026amp;\u0026amp; cd myproject # 2. 写 CMakeLists.txt cat \u0026gt; CMakeLists.txt \u0026lt;\u0026lt; \u0026#39;EOF\u0026#39; cmake_minimum_required(VERSION 3.16) project(MyApp) set(CMAKE_CXX_STANDARD 17) add_executable(myapp main.cpp) EOF # 3. 写 main.cpp cat \u0026gt; main.cpp \u0026lt;\u0026lt; \u0026#39;EOF\u0026#39; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; \u0026#34;Hello from CMake + make + GCC!\u0026#34; \u0026lt;\u0026lt; std::endl; return 0; } EOF # 4. 源外构建 mkdir build \u0026amp;\u0026amp; cd build # 5. 生成 Makefile cmake .. # 6. 编译 make # 7. 运行 ./myapp 使用 Ninja 加速 # 只需更改生成器 cmake -G Ninja .. ninja 对于大型项目，Ninja 可以比 make 快很多。\n超简总结（背这三句） CMake 生成构建文件（Makefile 或 Ninja） make/Ninja 执行构建文件，调用编译器 GCC/g++/Clang 真正把代码编译成机器码 总结 工具 角色 比喻 CMake 生成构建规则 写施工图纸 make/Ninja 按规则指挥 包工头 GCC/g++ 真正干活 搬砖工人 理解了这三层关系，你就理解了整个 C/C++ 构建体系的核心。\n参考资料 CMake Official Documentation - CMake 官方文档 Introduction to the C++ Build Process and Tools - C++ 构建过程详解 Hello CMake - Makefile Tutorials - CMake 入门教程 How to Build with CMake - Educative - CMake 构建指南 ","permalink":"https://www.wangyunqing.top/posts/cmake-make-gcc-relationship/","summary":"\u003ch1 id=\"cmakemakegcc-是什么关系\"\u003eCMake、make、GCC 是什么关系？\u003c/h1\u003e\n\u003cp\u003e你可能在 Qt Creator 里见过 CMake，在 Linux 教程里见过 make，在安装说明里见过 GCC。\u003c/p\u003e\n\u003cp\u003e它们到底是什么关系？\u003c/p\u003e\n\u003cp\u003e一句话：\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eCMake 生成构建文件，make 执行构建，GCC 真正编译代码\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"先看关系图\"\u003e先看关系图\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e你写代码 (main.cpp)\n      ↓\nCMake 读取 CMakeLists.txt\n      ↓\n生成 Makefile（或其他构建文件）\n      ↓\nmake 读取 Makefile\n      ↓\n调用 GCC/编译器\n      ↓\n生成 exe\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"一句话分清三者\"\u003e一句话分清三者\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e工具\u003c/th\u003e\n          \u003cth\u003e角色\u003c/th\u003e\n          \u003cth\u003e一句话\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eCMake\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e元构建系统\u003c/td\u003e\n          \u003ctd\u003e生成 Makefile 的跨平台工具\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003emake\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e构建工具\u003c/td\u003e\n          \u003ctd\u003e读取 Makefile，调用编译器\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eGCC\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e编译器\u003c/td\u003e\n          \u003ctd\u003e把代码变成机器码\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"用最土的比喻\"\u003e用最土的比喻\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eCMake = 写菜谱的人\nMakefile = 菜谱\nmake = 按菜谱做菜的厨师\n编译器 (GCC) = 火和锅\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"详细区别\"\u003e详细区别\u003c/h2\u003e\n\u003ch3 id=\"1-cmake-是干嘛的\"\u003e1. CMake 是干嘛的？\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e跨平台元构建系统\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eCMake 不是编译器，不是构建工具 —— 它是生成构建系统的工具。\u003c/p\u003e","title":"CMake、make、GCC 是什么关系？从代码到 exe 的完整流程"},{"content":"Qt 编译工具链完全指南：5 个组件一次讲透 刚接触 Qt，你会遇到一堆名词：\n编译器（MinGW / MSVC） 构建工具（qmake / CMake） 调试器（GDB / VS 调试器） 库路径 运行环境 装 Qt 的时候让你选这个选那个，你只知道\u0026quot;都要装\u0026quot;，但不知道它们到底是干什么的、有什么关系。\n这篇文章用最通俗的方式，把这 5 个组件一次性讲透。\n先看全景图（按执行顺序） 【配置】指定库路径 ↓ 【构建工具】读取配置、安排编译 ↓ 【编译器】编译代码生成机器码 ↓ 【调试器】辅助调试 ↓ 【运行环境】加载依赖运行程序 为什么这个顺序很重要？ 必须先知道 Qt 的库在哪（库路径），构建工具才能开始工作。然后调用编译器编译代码，最后才能运行调试。\n这个顺序贯穿全文，理解它你就理解了 Qt 的编译流程。\n1. 编译器（Compiler） 一句话定义 把你写的 C++ 代码，变成电脑能跑的机器码/可执行程序。\n三大平台的主流编译器 平台 编译器 说明 Windows MinGW / MSVC MinGW = gcc on Windows，MSVC = 微软官方编译器 Linux gcc / clang gcc 是主流，clang 是后起之秀 macOS clang (Apple) Apple 官方基于 LLVM 的 clang 为什么先讲 Windows？ Qt 开发者中 Windows 用户占比较大，且 Qt 安装器在 Windows 上提供的编译器选择最复杂（MinGW、MSVC、LLVM-MinGW），所以先重点讲 Windows。但 Linux/macOS 开发者请放心，后面会补充。\ncomments: true\nWindows 编译器：MinGW vs MSVC 编译器 本质 适合谁 部署要求 Qt 6.8+ MinGW gcc on Windows 新手、个人、小工具、跨平台项目 不需要额外运行库 ✅ 推荐 MSVC 微软官方编译器 大型 Windows 软件、商业项目 需要安装 vc_redist ⚠️ 仅 MSVC 2022 MinGW 是什么？ MinGW = Minimalist GNU for Windows 它就是 GCC 编译器家族的 Windows 版本！ 如果你是从 Linux 转过来的：\nLinux/macOS 用 gcc/g++ Windows 上用 MinGW（其实是 gcc.exe/g++.exe） 跨平台一致性：\nLinux/macOS: gcc/g++ Windows: MinGW (g++) ← 同一个家族！ 这有什么好处？如果你计划跨平台开发，使用 MinGW 可以让三个平台用同一套编译器家族，代码兼容性更好。\nMinGW 优势 免费开源，不需要安装 Visual Studio 生成的 exe 不依赖微软运行库（vc_redist），分发更简单 与 Linux/macOS 的 gcc 属于同一家族，跨平台体验一致 MSVC 优势 编译优化更好，生成的程序性能略优 调试体验更佳（配合 Visual Studio 或 VS Code） Windows 平台支持最完善（某些 Qt 模块只能用 MSVC） 行业采用率更高 ⚠️ Qt 6.8+ 重要变化：MSVC 2022 Qt 6.7 及以前：支持 MSVC 2019 和 MSVC 2022 Qt 6.8 开始： 仅支持 MSVC 2022（MSVC 2019 已淘汰） 如果你选择 MSVC，请确保安装的是 Visual Studio 2022，而不是旧版本。\nMinGW vs MSVC 怎么选？ MinGW 优势：\n免费开源，不需要安装 Visual Studio 生成的 exe 不依赖微软运行库（vc_redist），分发更简单 跨平台兼容性好（GCC 家族） MSVC 优势：\n编译优化更好，生成的程序性能更优 调试体验更佳（配合 Visual Studio） Windows 平台支持更完善 行业采用率更高 刚学 Qt / 个人项目 / 开源软件 → MinGW（勾选就能用） 公司项目 / 商业软件 / 追求性能 → MSVC 2022（需要装 VS 2022） 跨平台项目 → MinGW（与 Linux gcc 保持一致） 需要 WebEngine/ActiveX 等模块 → 必须用 MSVC comments: true\nLinux/macOS 编译器 Linux：gcc 和 clang 编译器 说明 优势 gcc GNU 编译器，Linux 标配 兼容性最好，社区支持最广 clang LLVM 项目，后起之秀 编译速度快，错误信息更友好 推荐：大多数 Linux 发行版默认用 gcc，但 clang 也是很好的选择。两者都完美支持 Qt 6。\nmacOS：clang (Apple) macOS 只有一种选择：clang (Apple) Apple 官方基于 LLVM 开发的 clang，是 macOS、iOS 开发唯一支持的编译器。\ncomments: true\n编译器选择矩阵（全平台对比） 平台 编译器 C++ 标准支持 ABI 兼容性 Windows MinGW (gcc) / MSVC (clang) C++17/20 两者不兼容 Linux gcc / clang C++17/20/23 两者兼容 macOS clang (Apple) C++17/20/23 Itanium / ARM64 2. 构建工具（qmake / CMake） 一句话定义 指挥编译器：先编译哪个文件、链接哪些库、输出到哪。\n为什么需要它？ 你的项目不是一个文件，而是一堆：\nmain.cpp mainwindow.cpp widget.cpp ui 文件 资源文件 图片 Qt 自身的库 谁来组织它们？→ 构建工具。\ncomments: true\n三大平台的构建工具 平台 主流工具 备注 Windows CMake + Ninja Qt Creator 默认使用 Ninja 作为后端 Linux CMake + Ninja / make 现代项目用 CMake，传统项目用 make macOS CMake + Ninja Xcode 项目也用 CMake comments: true\nQt6 重要变化：CMake 成为主角 Qt6 官方已将 CMake 设为主要构建系统。\n从源码编译 Qt6 本身：必须用 CMake 应用开发：qmake 仍可用，但有局限\n工具 说明 适用场景 Qt6 状态 局限 qmake Qt 传统的构建工具 小项目、快速原型、遗留项目 仍支持 ❌ 不能编译 Qt 插件 CMake 现代跨平台标准 大项目、跨平台、新项目 官方推荐 无 qmake 的重要限制：\n❌ 不能用于编译 Qt 插件或依赖 Qt 内部库的项目 ❌ 不会有新功能 ⚠️ Qt 7 可能会完全移除 CMake 版本要求 Qt 版本 最低 CMake 版本 静态库要求 Qt 6.0 3.16 - Qt 6.2+（静态库） 3.21 - Qt 6.9+（Apple） 3.21.1 - Qt 6.9+（通用） 3.22 - 安装 Qt 时会自动安装所需版本的 CMake 和 Ninja。\ncomments: true\nQt6 模块命名变化 使用 CMake 时，Qt6 的模块命名更规范：\nQt5: QT += core gui widgets Qt6: target_link_libraries(myapp Qt6::Core Qt6::Gui Qt6::Widgets) comments: true\n怎么选？ 刚学 Qt / 小项目 / 快速原型 → qmake（简单直接） 大项目 / 跨平台 / Qt6 新项目 → CMake（现代标准） 需要从源码编译 Qt 本身 → 必须用 CMake 遗留项目迁移 → 可以继续用 qmake，但建议逐步迁移到 CMake 3. 调试器（Debugger） 一句话定义 帮你找 BUG 的工具，能让代码停在某一行，看变量、看哪里崩了。\n核心功能 断点暂停：代码运行到指定行自动停下 看变量值：实时查看变量的当前值 看内存：检查内存状态 看调用栈：了解函数调用链路 看哪一行崩溃：程序崩了告诉你原因 comments: true\n三大平台的调试器 平台 调试器 配套编译器 特点 Windows GDB MinGW (gcc) GNU 调试器，功能强大 Windows VS 调试器 MSVC Visual Studio 自带，图形界面最佳 Linux GDB gcc / clang Linux 标配，命令行为主 macOS LLDB clang (Apple) macOS 主流，Xcode 内置 Windows 调试器对比 调试器 配套编译器 说明 体验 GDB MinGW GNU 调试器，Linux 标配 功能强大，但命令行为主 VS 调试器 MSVC Visual Studio 自带 图形界面友好，体验最佳 Qt Creator 的调试支持：\nMinGW 配套：使用 GDB（可通过 Qt Creator 图形界面使用） MSVC 配套：使用 VS 调试器（体验最佳） comments: true\nLLDB：macOS 和跨平台调试器 LLDB 是 LLVM 项目的一部分，最初由 Apple 开发，现在是 macOS 的默认调试器。\n特性 说明 macOS 主流 Xcode 和 macOS 命令行默认使用 跨平台支持 可用于 Linux、Windows、Android Python 脚本 提供强大的 Python API 用于自动化调试 性能 启动和调试大型程序时比 GDB 更快 何时选择 LLDB？\nmacOS 开发：没有选择，必须用 LLDB 跨平台调试：需要在多个平台上用同一调试器时 4. 库路径（Library Path） 一句话定义 告诉编译器和链接器：Qt 的那些现成功能（按钮、窗口、网络、绘图）在哪。\ncomments: true\nQt 自带一大堆现成功能 QPushButton 按钮 QMainWindow 界面窗口 QNetwork 网络通信 QSerialPort 串口通信 QPainter 2D 绘图 QOpenGL 3D 图形 这些都是预编译好的库文件：\n平台 静态库（编译时用） 动态库（运行时用） Windows .lib .dll Linux .a .so macOS .a .dylib 编译器必须知道：这些库在哪 → 才能把它们链接进你的软件。\ncomments: true\n三大平台的库路径差异 Windows Qt 安装目录/ ├── include/ # 头文件 ├── lib/ # 静态库 (.lib) └── bin/ # 动态库 (.dll) ├── Qt6Core.dll ├── Qt6Gui.dll └── platforms/ └── qwindows.dll Linux Qt 安装目录/ ├── include/ # 头文件 ├── lib/ # 静态库 (.a) └── lib/ # 动态库 (.so) ├── libQt6Core.so ├── libQt6Gui.so └── platforms/ └── libqxcb.so macOS Qt 安装目录/ ├── include/ # 头文件 ├── lib/ # 静态库 (.a) └── lib/ # 动态库 (.dylib) ├── Qt6Core ├── Qt6Gui └── platforms/ └── libqcocoa.dylib comments: true\nCMake 中如何指定库路径 # 告诉 CMake 去哪里找 Qt find_package(Qt6 REQUIRED COMPONENTS Core Widgets) # 链接 Qt 库 target_link_libraries(myapp Qt6::Core Qt6::Widgets) CMake 会自动处理：\n头文件路径（include） 库文件路径（lib） 链接选项（链接哪些 .so/.dll/.dylib） comments: true\n跨平台注意事项 头文件和库文件的结构是一致的，但需要注意：\n问题 解决方案 Linux/macOS 动态库搜索路径 CMake 的 RPATH 自动处理 macOS @rpath 和 install_name CMake 和 Qt6 自动处理 Windows DLL 搜索 PATH 环境变量或与应用放同一目录 5. 运行环境（Runtime Environment） 一句话定义 你的软件要跑起来，必须依赖的一堆动态库文件。\ncomments: true\n你写的代码只是逻辑 真正运行时需要：\nWindows Qt6Core.dll 核心功能 Qt6Gui.dll GUI 界面 Qt6Widgets.dll 窗口控件 platforms/qwindows.dll 平台插件 styles/qwindowsvistastyle.dll 样式插件 imageformats/qjpeg.dll 图像格式插件 Linux libQt6Core.so 核心功能 libQt6Gui.so GUI 界面 libQt6Widgets.so 窗口控件 platforms/libqxcb.so 平台插件 styles/... 样式插件 imageformats/... 图像格式插件 macOS Qt6Core 核心功能（framework） Qt6Gui GUI 界面（framework） Qt6Widgets 窗口控件（framework） platforms/libqcocoa.dylib 平台插件 styles/... 样式插件 imageformats/... 图像格式插件 comments: true\n为什么安装 Qt 要 5GB+？ 因为里面包含了：\n多种编译器的库（MinGW、MSVC、Clang） 多个平台的库（Windows、Linux、macOS、Android、iOS） 各种 Qt 模块的库（Core、GUI、Widgets、Network、Sql\u0026hellip;） 调试符号文件（Windows .pdb、macOS dSYM） 示例代码和文档 Qt Creator IDE comments: true\n三大平台的运行时配置 Windows 自动配置（Qt Creator）：\n开发时：Qt Creator 自动设置 PATH 部署时：将 Qt DLL 复制到 exe 同目录，或安装到系统 手动配置：\n# 添加到 PATH 环境变量 set PATH=%PATH%;C:\\Qt\\6.8.0\\bin Linux 开发时（Qt Creator）：\nQt Creator 自动设置 LD_LIBRARY_PATH 或在 .bashrc/.zshrc 中添加： export LD_LIBRARY_PATH=/opt/Qt6.8.0/lib:$LD_LIBRARY_PATH 部署时：\n使用 linuxdeploy 工具自动打包依赖 或手动复制 .so 文件到特定目录 macOS 框架形式：\nQt 6 的库以 Framework 形式安装到 /Library/Frameworks/ macOS 自动查找 Framework，无需额外配置 部署时：\n使用 macdeployqt 工具自动打包依赖到 .app 包中 .app 包是自包含的，不需要额外安装 6. 跨平台开发：一份代码，三个平台 Qt 的核心价值就是跨平台——写一次代码，在 Windows、Linux、macOS 上都能跑。但要实现这个目标，你需要了解三大平台的差异，以及如何选择合适的工具组合。\n编译器选择矩阵 平台 编译器 C++ 标准支持 ABI 兼容性 Windows MinGW (gcc) / MSVC C++17/20 两者不兼容 Linux gcc / clang C++17/20/23 两者兼容 macOS clang (Apple) C++17/20/23 Itanium / ARM64 ABI 是什么？ ABI（Application Binary Interface）决定了二进制代码能否兼容。MinGW 和 MSVC 生成的程序不能互相链接，但 Linux 上的 gcc 和 clang 可以。\n构建工具选择 平台 主流工具 备注 Windows CMake + Ninja Qt Creator 默认使用 Ninja 作为后端 Linux CMake + Ninja / make 现代项目用 CMake，传统项目用 make macOS CMake + Ninja Xcode 项目也用 CMake 为什么推荐 Ninja？ Ninja 是专门设计给 CMake 用的后端，比 make 更快，尤其是增量编译。\n推荐的跨平台组合 使用 CMake（跨平台通用）+ Qt6（跨平台框架） 编译器选择： ┌─────────────────────────────────────────────────────────┐ │ Windows: MinGW 11.2+（便于与 Linux gcc 对齐） │ │ Linux: gcc 13+ │ │ macOS: clang（Apple 官方，Xcode 自带） │ └─────────────────────────────────────────────────────────┘ 为什么 Windows 推荐用 MinGW 做跨平台？\nMinGW 和 Linux 的 gcc 属于同一家族，代码兼容性更好 避免了 MSVC 特有的扩展（如 __declspec） 编译选项和行为更一致 库文件差异 平台 静态库 动态库 运行时查找 Windows .lib .dll PATH 环境变量 Linux .a .so LD_LIBRARY_PATH / RPATH macOS .a .dylib @rpath / install_name CMake 如何处理跨平台差异 # CMake 会自动处理平台差异 find_package(Qt6 REQUIRED COMPONENTS Core Widgets) # 链接库 target_link_libraries(myapp Qt6::Core Qt6::Widgets) # 安装规则 install(TARGETS myapp RUNTIME DESTINATION bin # Windows: .dll 放这 LIBRARY DESTINATION lib # Linux: .so 放这 BUNDLE DESTINATION . # macOS: .app 放这 ) CMake 的 RUNTIME、LIBRARY、BUNDLE 关键字会自动映射到不同平台的标准位置。\n常见跨平台问题 问题 解决方案 路径分隔符 使用 QDir::separator() 或 CMake 的 /（自动转换） 行尾符 Git 设置 core.autocrlf，代码用 \\n 大小写敏感 Linux/macOS 区分大小写，Windows 不区分——统一起小写文件名 平台特定代码 使用 #ifdef Q_OS_WIN、#ifdef Q_OS_LINUX 等宏 部署工具对比 平台 官方部署工具 输出格式 Windows windeployqt exe + dll 文件夹 Linux linuxdeploy AppImage macOS macdeployqt .app bundle 执行顺序（重要） 当你点击 Qt Creator 的\u0026quot;运行\u0026quot;按钮时，内部发生了什么？\n1. 【配置】指定库路径 → Qt 的头文件、库文件在哪？ → 找不到就直接报错 2. 【构建工具】开始干活 → 读取 CMakeLists.txt 或 .pro 文件 → 哪些文件要编译？ → 按什么顺序？ → 最后生成 exe 放哪？ → 相当于总指挥 3. 构建工具调用 【编译器】 → 把这些 cpp 编译成机器码！ → 编译器默默生成 obj 文件 → 链接器把 obj 和库绑在一起，生成 exe 4. 【调试器】盯着它 → 准备好断点、监视变量、抓崩溃 5. 【运行环境】加载 → 系统去加载 Qt 依赖的 DLL → 窗口弹出来，你能用了 为什么顺序是\u0026quot;库路径 → 构建工具 → 编译器\u0026quot;？ 因为构建工具必须先知道库在哪，才能正确配置编译和链接。\n超简口诀 路径 → 构建 → 编译 → 调试 → 运行 用做饭来比喻 编译器 = 厨师（下锅炒菜） 构建工具 = 配菜、安排顺序（看菜谱） 调试器 = 尝菜、找问题（试味道） 库路径 = 食材放哪（找东西） 运行环境 = 盘子、桌子、环境（上桌开吃） 顺序就是：\n找食材 → 看菜谱 → 炒菜 → 尝菜 → 上桌 快速决策指南 你的情况 推荐配置 说明 刚学 Qt / 个人项目 MinGW + qmake + GDB 简单直接，勾选就能用 Qt6 新项目 MinGW + CMake + GDB 现代 CMake，跨平台一致性好 跨平台项目 MinGW/CMake + gcc/clang 同一编译器家族，兼容性最佳 公司项目 / 商业软件 MSVC 2022 + CMake + VS 调试器 性能优化，调试体验最佳 Windows 快速上手 Qt Creator 勾选 MinGW 全套 无需额外安装，开箱即用 追求最佳调试体验 MSVC 2022 + Visual Studio 2022 图形界面调试，体验最佳 ⚠️ Qt 6.8+ 重要提示：\nMSVC 只支持 2022 版本（MSVC 2019 已淘汰） CMake 最低版本要求：Qt 6.9+ 需要 3.22+ qmake 仍可用，但不能编译 Qt 插件 总结 这 5 个组件，背会这 5 句就够了：\n组件 一句话 编译器 把 C++ 变成 exe（MinGW = gcc on Windows） 构建工具 安排编译顺序（CMake 是现代标准） 调试器 找 BUG（GDB/LLDB/VS 调试器） 库路径 告诉工具 Qt 在哪（.lib/.so/.dylib） 运行环境 软件跑起来需要的依赖 跨平台开发的要点 Windows: MinGW/MSVC + CMake + .dll Linux: gcc/clang + CMake + .so macOS: clang + CMake + .dylib/Framework 理解了这 5 个组件和三大平台的差异，Qt 编译这块你就彻底通透了。\ncomments: true\n参考资料 Qt 6 - Build System Changes - Qt6 官方构建系统文档 Qt 6 QML Book - Build Systems - Qt 构建系统详解 Choosing between MinGW and MSVC - Qt Forum - 社区讨论 Qt Tools - CMake - CMake 使用指南 ","permalink":"https://www.wangyunqing.top/posts/qt-toolchain-complete-guide/","summary":"\u003ch1 id=\"qt-编译工具链完全指南5-个组件一次讲透\"\u003eQt 编译工具链完全指南：5 个组件一次讲透\u003c/h1\u003e\n\u003cp\u003e刚接触 Qt，你会遇到一堆名词：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e编译器（MinGW / MSVC）\u003c/li\u003e\n\u003cli\u003e构建工具（qmake / CMake）\u003c/li\u003e\n\u003cli\u003e调试器（GDB / VS 调试器）\u003c/li\u003e\n\u003cli\u003e库路径\u003c/li\u003e\n\u003cli\u003e运行环境\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e装 Qt 的时候让你选这个选那个，你只知道\u0026quot;都要装\u0026quot;，但不知道它们到底是干什么的、有什么关系。\u003c/p\u003e\n\u003cp\u003e这篇文章用最通俗的方式，把这 5 个组件一次性讲透。\u003c/p\u003e\n\u003ch2 id=\"先看全景图按执行顺序\"\u003e先看全景图（按执行顺序）\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e【配置】指定库路径\n    ↓\n【构建工具】读取配置、安排编译\n    ↓\n【编译器】编译代码生成机器码\n    ↓\n【调试器】辅助调试\n    ↓\n【运行环境】加载依赖运行程序\n\u003c/code\u003e\u003c/pre\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e为什么这个顺序很重要？\u003c/strong\u003e\n必须先知道 Qt 的库在哪（库路径），构建工具才能开始工作。然后调用编译器编译代码，最后才能运行调试。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e这个顺序贯穿全文，理解它你就理解了 Qt 的编译流程。\u003c/p\u003e\n\u003ch2 id=\"1-编译器compiler\"\u003e1. 编译器（Compiler）\u003c/h2\u003e\n\u003ch3 id=\"一句话定义\"\u003e一句话定义\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e把你写的 C++ 代码，变成电脑能跑的机器码/可执行程序。\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"三大平台的主流编译器\"\u003e三大平台的主流编译器\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e平台\u003c/th\u003e\n          \u003cth\u003e编译器\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eWindows\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eMinGW / MSVC\u003c/td\u003e\n          \u003ctd\u003eMinGW = gcc on Windows，MSVC = 微软官方编译器\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eLinux\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003egcc / clang\u003c/td\u003e\n          \u003ctd\u003egcc 是主流，clang 是后起之秀\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003emacOS\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eclang (Apple)\u003c/td\u003e\n          \u003ctd\u003eApple 官方基于 LLVM 的 clang\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e为什么先讲 Windows？\u003c/strong\u003e\nQt 开发者中 Windows 用户占比较大，且 Qt 安装器在 Windows 上提供的编译器选择最复杂（MinGW、MSVC、LLVM-MinGW），所以先重点讲 Windows。但 Linux/macOS 开发者请放心，后面会补充。\u003c/p\u003e","title":"Qt 编译工具链完全指南：5 个组件一次讲透"},{"content":"Python 和 C++ 开发者，一个 Miniforge 足矣 打开 Reddit 的 Python 版块，每隔几天就会有人问：\u0026ldquo;我应该用 Poetry 还是 pipenv？\u0026quot;、\u0026ldquo;uv 真的那么快吗？\u0026quot;、\u0026ldquo;conda 会被淘汰吗？\u0026rdquo;\n点开评论区，永远在吵。有人推荐 Poetry，有人吹 uv，有人说 conda 才是王道。\n作为一个同时用 Python 和 C++ 的开发者，你可能更纠结——Python 的 venv 管不了 C++ 库，conda 又总是被说\u0026quot;慢\u0026rdquo;。\n其实，你可能只需要一个工具：Miniforge。\n先说结论 如果你是： - Python 开发者（Web/脚本/通用） - C++ 开发者（需要各种库） - 数据科学/机器学习从业者 - 交叉编译/多平台开发者 Miniforge = 一个工具搞定全部 为什么不是别的？ 让我们看看各种工具的痛点：\nvenv / virtualenv python -m venv myenv source myenv/bin/activate pip install numpy 问题来了：\n❌ 只管 Python 包，C++ 库？装不了 ❌ Python 版本切换？需要 pyenv ❌ 依赖锁定？需要额外工具 三个工具才能干一件事。\nPoetry poetry new myproject poetry install 很优雅，但：\n❌ C++ 包？不支持 ❌ 非 Python 语言？不支持 ❌ 某些科学计算包版本冲突？解不出来 如果你只写纯 Python，Poetry 很好。但你有 C++ 需求？它帮不上。\nuv 2026 年的明星，快得离谱：\nuv pip install numpy pandas torch # 秒级完成 但：\n❌ C++ 库？还是要自己编译 ❌ CUDA 工具链？需要额外配置 ❌ 某些包的预编译二进制？只在 conda 有 uv 是最快的 Python 包管理器，但它管不了非 Python 的世界。\nAnaconda / Miniconda 比上面好一点，能装 C++ 包了：\nconda install gcc_linux-64 eigen 但：\n⚠️ 默认频道包旧、更新慢 ⚠️ 商业使用有许可证限制 ⚠️ 依赖解析曾经慢得令人发指 能用，但体验不够现代。\nMiniforge 的优势 Miniforge 是什么？用一句话说：\nMiniforge = Miniconda 的社区版，默认用 conda-forge 频道，预装 mamba 加速\n它解决了什么？ 问题 Miniforge 的解法 Python 包管理 ✅ conda install C++ 库管理 ✅ conda install gcc eigen boost Python 版本切换 ✅ conda create -n py312 python=3.12 依赖解析慢 ✅ 预装 mamba（C++ solver，快 10-100 倍） 包版本旧 ✅ 默认 conda-forge（社区维护，更新快） 多架构支持 ✅ ARM/POWER/x86 都有预编译包 商业使用 ✅ 完全开源，无限制 真实对比 安装 PyTorch + CUDA 支持：\n# uv 需要指定额外 index uv pip install torch --index-url https://download.pytorch.org/whl/cu121 # pip 更慢，还需要手动装 CUDA pip install torch # 然后去 NVIDIA 下载 CUDA toolkit... # Miniforge 一步到位 conda install pytorch cuda-toolkit # 自动搞定依赖 实战指南 安装 # macOS/Linux curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh bash Miniforge3-$(uname)-$(uname -m).sh # Windows # 下载 .exe 安装包，双击运行 基础使用 # 创建新环境，指定 Python 版本 conda create -n myproject python=3.12 # 激活环境 conda activate myproject # 安装 Python 包 conda install numpy pandas requests # 安装 C++ 库（Windows 上也能用！） conda install eigen boost-cpp nlohmann_json # 查看已安装的包 conda list # 退出环境 conda deactivate 导出和复现环境 # 导出环境配置 conda env export \u0026gt; environment.yml # 在另一台机器复现 conda env create -f environment.yml 多 Python 版本共存 # Python 3.10 环境 conda create -n py310 python=3.10 conda activate py310 # Python 3.12 环境 conda create -n py312 python=3.12 conda activate py312 # 任意切换 conda activate py310 # 切回 3.10 常见场景 场景 1：纯 Python Web 项目 conda create -n webapp python=3.12 conda activate webapp conda install fastapi uvicorn sqlalchemy 用 conda 还是 pip？\n主流库都在 conda-forge，直接用 conda 某些冷门库可能只有 PyPI，用 pip 也可以： pip install 那个冷门库 场景 2：C++ 项目需要依赖库 conda create -n cpplib conda activate cpplib conda install eigen nlohmann_json boost-cpp cmake ninja # 查看库的路径 conda activate cpplib echo $CONDA_PREFIX # 库都在这里 为什么不用系统包管理器？\nmacOS 的 Homebrew 会装到 /usr/local，可能冲突 Ubuntu 的 apt 版本老旧 Windows 根本没有统一的包管理 conda 把所有东西隔离在环境里，干净清爽 场景 3：GPU 深度学习 conda create -n gpu python=3.11 conda activate gpu conda install pytorch torchvision pytorch-cuda=12.1 一行搞定，不用折腾驱动、不用手动装 CUDA。\n场景 4：交叉编译 # 为 Linux ARM64 编译 conda install -c conda-forge gcc_linux-64 binutils # 为 Windows 编译（在 Linux 上） conda install mingw-w64 一些小技巧 1. 优先用 mamba Miniforge 预装了 mamba，它是 conda 的 C++ 版，速度飞快：\n# 把 conda 换成 mamba，命令完全一样 mamba create -n fastenv python=3.12 mamba install numpy pandas 2. 别在 base 环境瞎装 # ❌ 不推荐 conda install numpy pandas # ✅ 推荐 conda create -n myproject python=3.12 conda activate myproject conda install numpy pandas 保持 base 环境干净，需要什么就创建新环境。\n3. conda 和 pip 可以混用 conda activate myenv conda install numpy pandas # 先用 conda 装大的 pip install 某个只有 PyPI 才有的包 # 再用 pip 补充 但注意：优先用 conda，pip 作为补充。conda 能更好地处理非 Python 依赖。\n什么时候不用 Miniforge？ 没有工具是万能的，以下场景 Miniforge 不是最优：\n场景 更好的选择 纯前端开发（Node.js） fnm / nvm Rust 开发 rustup Go 开发 go 自带 只想要最快的 pip 替代 uv 但如果你是 Python + C++ 混合开发，Miniforge 依然是唯一能打通两者的工具。\n总结 工具 Python C++ 速度 易用 venv ✅ ❌ - 😐 Poetry ✅ ❌ 🚀 😊 uv ✅ ❌ ⚡ 😊 conda ✅ ✅ 🐌 😊 Miniforge ✅ ✅ 🚀 😊 Miniforge 不是最快的，不是最轻的，但它是最全能的。\n当你：\n写 Python 时需要 C++ 库 在 Windows 上开发但需要 Linux 工具链 需要多个 Python 版本共存 不想折腾一堆工具 Miniforge 就够了。\n参考资料 Miniforge 官方文档 conda-forge 社区 mamba - 快速的 conda 替代品 ","permalink":"https://www.wangyunqing.top/posts/miniforge-one-tool-to-rule-them-all/","summary":"\u003ch1 id=\"python-和-c-开发者一个-miniforge-足矣\"\u003ePython 和 C++ 开发者，一个 Miniforge 足矣\u003c/h1\u003e\n\u003cp\u003e打开 Reddit 的 Python 版块，每隔几天就会有人问：\u0026ldquo;我应该用 Poetry 还是 pipenv？\u0026quot;、\u0026ldquo;uv 真的那么快吗？\u0026quot;、\u0026ldquo;conda 会被淘汰吗？\u0026rdquo;\u003c/p\u003e\n\u003cp\u003e点开评论区，永远在吵。有人推荐 Poetry，有人吹 uv，有人说 conda 才是王道。\u003c/p\u003e\n\u003cp\u003e作为一个同时用 Python 和 C++ 的开发者，你可能更纠结——Python 的 venv 管不了 C++ 库，conda 又总是被说\u0026quot;慢\u0026rdquo;。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e其实，你可能只需要一个工具：Miniforge。\u003c/strong\u003e\u003c/p\u003e\n\u003ch2 id=\"先说结论\"\u003e先说结论\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e如果你是：\n- Python 开发者（Web/脚本/通用）\n- C++ 开发者（需要各种库）\n- 数据科学/机器学习从业者\n- 交叉编译/多平台开发者\n\nMiniforge = 一个工具搞定全部\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"为什么不是别的\"\u003e为什么不是别的？\u003c/h2\u003e\n\u003cp\u003e让我们看看各种工具的痛点：\u003c/p\u003e\n\u003ch3 id=\"venv--virtualenv\"\u003evenv / virtualenv\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003epython -m venv myenv\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esource myenv/bin/activate\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003epip install numpy\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e问题来了：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e❌ 只管 Python 包，C++ 库？装不了\u003c/li\u003e\n\u003cli\u003e❌ Python 版本切换？需要 pyenv\u003c/li\u003e\n\u003cli\u003e❌ 依赖锁定？需要额外工具\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e三个工具才能干一件事\u003c/strong\u003e。\u003c/p\u003e","title":"Python 和 C++ 开发者，一个 Miniforge 足矣"},{"content":"一个关于\u0026quot;寻找平衡\u0026quot;的故事 三年前，我的工作台很简单：一台轻薄本，轻得几乎感觉不到存在，续航撑一整天，带去图书馆、咖啡厅毫无压力。\n但问题是——它跑不动我想做的事情。\n深度学习训练？核显看着干着急。Docker 构建一次等半天。开个虚拟机就卡到怀疑人生。我面临的是一个经典困境：轻薄本陪我到处跑，但真正需要干活时，它只能在一旁看着。\n后来我做了个决定：买台台式机，笔记本继续带着。再后来，我发现了 WSL2。\n今天，我想分享这套让我工作更舒服、学习更高效的方案——不是一篇教程，而是这套系统运行一年后的真实体验。\ncomments: true\n为什么是\u0026quot;台式机 + 笔记本\u0026quot;？ 让我们先聊聊硬件选择。这不是关于\u0026quot;哪个更好\u0026quot;，而是关于\u0026quot;让每个设备做它最擅长的事\u0026quot;。\n我的两台设备 设备 配置 角色定位 台式机 Ryzen 5 7500F + RTX 4060 + 32GB RAM 算力中心，固定不动 笔记本 i5-11320H + 核显 + 16GB RAM 移动终端，随身携带 这套组合的成本其实比一台高端游戏本更低，但体验却好得多。\n核心思路：分离关注点 想象一下，如果你的手机和电脑是同一台设备——充电时不能带出门，带出门时插着键盘很奇怪。这听起来很荒谬，但我们却经常要求一台笔记本既扛得住 3A 游戏又要轻薄续航。\n双设备的核心哲学是承认现实：没有完美的单一设备。\n台式机的优势很简单：\n性能释放彻底，不用担心散热和续航 可以升级，未来加内存、换显卡都不是问题 屏幕大、键盘好，长期工作不累 笔记本的优势也很明确：\n想带去哪就去哪 电池能撑一天 轻到背在身上没感觉 当我不再要求一台设备\u0026quot;什么都行\u0026quot;时，反而找到了真正舒服的使用方式。\ncomments: true\nWindows + WSL2，为什么这么好用？ 现在聊聊软件层面。很多人有 Linux 情结，认为\u0026quot;真正的开发者用原生 Linux\u0026quot;。我曾经也是这样想的，直到 WSL2 改变了游戏规则。\nWSL2 到底是什么？ 简单说，WSL2 就是 Windows 里面跑一个真正的 Linux 虚拟机——不是那种慢吞吞的传统虚拟机，而是和 Windows 内核深度集成的高性能方案。\n你可以在 Windows 上：\n用 Chrome 看论文、逛 GitHub 用 Office 写文档、做 PPT 玩 Windows 独占游戏 同时，在 WSL2 里：\n跑你的 Docker 容器 用 PyTorch 训练模型 用 ROS 做机器人仿真 用 vim/nvim/VS Code 写代码 关键是，两者之间的界限几乎消失了。\n一天的工作流是什么样的？ 早上起床，我坐在台式机前：\n1. Windows 打开 VS Code（安装了 Remote - WSL 插件） 2. 打开的不是 Windows 上的文件夹，而是 WSL2 里的项目 3. 代码运行、调试、训练，全在 Linux 环境里 4. 但界面、快捷键、复制粘贴，全是我熟悉的 Windows 需要看训练曲线？浏览器打开 localhost:6006，TensorBoard 跑在 WSL2，浏览器是 Windows。\n需要查资料？Chrome 在 Windows，复制粘贴到终端，无缝衔接。\n需要改论文？Word 在 Windows，数据和代码在 WSL2，导出图表直接用。\n我没有切换系统，只是在同一个系统里用了不同的工具。\ncomments: true\n台式机 vs 笔记本，到底怎么分工？ 这是最容易被问到的：两台设备不会打架吗？代码怎么同步？训练在哪儿跑？\n让我分享一下我实际的工作方式。\n台式机：算力总部 我的台式机 90% 时间放在书桌上，它的工作内容很明确：\nWindows 端负责：\n游戏和娱乐 重型软件（CAD、仿真、Adobe 全家桶） 论文写作、PPT 制作 监控训练进度（TensorBoard、wandb） WSL2 端负责：\n深度学习训练 Docker 容器 代码编译和测试 长期运行的服务 资源配置是这样的（在 C:\\Users\\你的用户名\\.wslconfig）：\n[wsl2] memory=22GB # 给 Linux 足够内存 processors=10 # 留两个线程给 Windows swap=8GB # 防止内存爆了 这样分配的结果：Windows 开游戏、开仿真软件时，WSL2 后台跑训练互不干扰。\n笔记本：移动办公室 笔记本的角色完全不同，它更像一个\u0026quot;远程控制台\u0026quot;：\nWindows 端负责（95% 时间）：\n上课记笔记 图书馆写论文 咖啡厅改代码 远程控制台式机 WSL2 端负责（偶尔）：\n改代码、测试小脚本 同步代码仓库 不跑任何重型训练 笔记本的 WSL2 配置很保守：\n[wsl2] memory=6GB # 够用就行 processors=4 # 留电 swap=4GB 核显笔记本跑 CUDA 本来就慢，不如承认现实：笔记本不负责算力，只负责连接算力。\n两台设备如何配合？ 我的一天通常是这样的：\n在家/实验室：\n主力用台式机，笔记本放在旁边当副屏 台式机 WSL2 跑训练，Windows 看论文写文档 需要查资料时，笔记本更方便 外出/上课：\n只带笔记本 需要查看台式机训练进度？SSH 远程连上 发现代码有 bug？笔记本改完，git push，台式机 pull 晚上想玩游戏：\n台式机暂停训练 Windows 直接开游戏 不用重启，不用考虑虚拟机占用资源 comments: true\n那些踩过的坑 没有方案是完美的，这套系统也有自己的坑。分享一下我遇到的问题和解决方案。\n问题一：文件放哪里很重要 刚开始我把代码放在 Windows 盘，从 WSL2 访问。结果：慢得离谱。\n后来学乖了，所有代码、数据集、模型权重全放 WSL2 内部。Windows 需要查看时，在文件管理器输入 \\\\wsl$ 就能访问。\n性能差异有多大？ Docker 构建从 5 分钟降到 30 秒，不是开玩笑的。\n问题二：WSL2 网络偶尔抽风 WSL2 用 NAT 网络，有时候 localhost 访问不了，有时候 VPN 连上后网络全挂。\n解决方案：\n开发时尽量用固定端口 必要时用镜像网络模式（Windows 11 22H2+ 支持） 实在不行就 wsl --restart 问题三：磁盘空间悄悄被吃掉 WSL2 的虚拟硬盘会自动扩张，但不会自动收缩。删了文件，空间不释放。\n定期手动清理：\n# 在 PowerShell 里 wsl --shutdown # 然后进入磁盘管理，压缩 VHD 或者开启自动回收（Windows 11 最新版支持）。\n问题四：两台设备的代码同步 最怕的是：台式机改了代码，笔记本不知道；笔记本改了代码，台式机还在用旧版本。\n解决方案很简单：Git 作为唯一的真相来源。\n所有代码必须在 Git 仓库里，两台设备只通过 git 同步，绝不拷文件。虽然多了 push/pull 这一步，但避免了无数次\u0026quot;改错版本\u0026quot;的灾难。\ncomments: true\n这套方案适合谁？ 说了一年体验，这套系统不是万能药。它最适合的是这些人群：\n✅ 适合：\n有固定工作场所（家/实验室/办公室） 需要高性能计算（训练、渲染、编译） 经常外出但不需在外办公 愿意花一点时间设置同步方案 ❌ 不适合：\n住宿舍、活动范围小（一台高性能本够了） 经常出差、飞来飞去（台式机浪费） 预算紧张（两台设备成本高） 懒得管理多设备（单设备省心） 一个简单的判断标准：如果你的台式机有 30% 时间处于闲置状态，你可能不需要它。\ncomments: true\n一些想说的话 写到这里，我想分享一些超越\u0026quot;技术配置\u0026quot;的思考。\n关于\u0026quot;最佳方案\u0026quot; 我见过太多人追求\u0026quot;终极配置\u0026quot;，买最贵的硬件、用最复杂的工具链。但我的经验是：让你忘记工具存在、专注于做事本身的方案，才是好方案。\n这套双设备 + WSL2 系统，我几乎不用想\u0026quot;在哪个系统\u0026quot;、\u0026ldquo;用什么设备\u0026rdquo;。打开就是用，用完就走。\n关于\u0026quot;是否值得\u0026quot; 双设备意味着更高的初始成本、更多的维护工作。但它也带来了更舒服的体验、更高的效率。\n对我来说，这是值得的。但对其他人？不一定。\n最好的办法是：从小规模开始试验。 先试着用 WSL2，再考虑是否需要双设备。循序渐进，别一步到位。\n关于\u0026quot;未来\u0026quot; 云服务、远程桌面正在改变这个游戏。也许几年后，我们只需要一个轻薄终端，所有的计算都在云端完成。\n但就当下，就 2026 年，台式机 + 笔记本 + WSL2 依然是我能想到的最平衡方案。\ncomments: true\n最后：一个简单的开始 如果你被这套方案打动，想试试，我建议这样开始：\n第一步： 在现有电脑上装 WSL2，感受一下 Linux 和 Windows 共存的体验\n第二步： 问问自己，是否有场景需要\u0026quot;移动 + 性能\u0026quot;双需求\n第三步： 如果答案是有，考虑添置第二台设备\n第四步： 用 Git 同步代码，用远程连接桥接两台设备\n不需要一步到位，慢慢来，找到最适合自己的节奏。\ncomments: true\n参考资料 如果你想深入了解某个部分，这些文章可能有帮助：\nMaking Windows Disappear: A Linux Developer\u0026rsquo;s Guide to WSL2 WSL2 Performance Optimization Guide Improving Dockerized Projects in WSL2 comments: true\n希望这篇文章能帮你找到属于自己的生产力方案。记住：没有最好的配置，只有最适合你的配置。\n","permalink":"https://www.wangyunqing.top/posts/dual-device-wsl2-productivity-setup/","summary":"\u003ch2 id=\"一个关于寻找平衡的故事\"\u003e一个关于\u0026quot;寻找平衡\u0026quot;的故事\u003c/h2\u003e\n\u003cp\u003e三年前，我的工作台很简单：一台轻薄本，轻得几乎感觉不到存在，续航撑一整天，带去图书馆、咖啡厅毫无压力。\u003c/p\u003e\n\u003cp\u003e但问题是——它跑不动我想做的事情。\u003c/p\u003e\n\u003cp\u003e深度学习训练？核显看着干着急。Docker 构建一次等半天。开个虚拟机就卡到怀疑人生。我面临的是一个经典困境：轻薄本陪我到处跑，但真正需要干活时，它只能在一旁看着。\u003c/p\u003e\n\u003cp\u003e后来我做了个决定：买台台式机，笔记本继续带着。再后来，我发现了 WSL2。\u003c/p\u003e\n\u003cp\u003e今天，我想分享这套让我工作更舒服、学习更高效的方案——不是一篇教程，而是这套系统运行一年后的真实体验。\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003ecomments: true\u003c/p\u003e\n\u003ch2 id=\"为什么是台式机--笔记本\"\u003e为什么是\u0026quot;台式机 + 笔记本\u0026quot;？\u003c/h2\u003e\n\u003cp\u003e让我们先聊聊硬件选择。这不是关于\u0026quot;哪个更好\u0026quot;，而是关于\u0026quot;让每个设备做它最擅长的事\u0026quot;。\u003c/p\u003e\n\u003ch3 id=\"我的两台设备\"\u003e我的两台设备\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e设备\u003c/th\u003e\n          \u003cth\u003e配置\u003c/th\u003e\n          \u003cth\u003e角色定位\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e台式机\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eRyzen 5 7500F + RTX 4060 + 32GB RAM\u003c/td\u003e\n          \u003ctd\u003e算力中心，固定不动\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e笔记本\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003ei5-11320H + 核显 + 16GB RAM\u003c/td\u003e\n          \u003ctd\u003e移动终端，随身携带\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e这套组合的成本其实比一台高端游戏本更低，但体验却好得多。\u003c/p\u003e\n\u003ch3 id=\"核心思路分离关注点\"\u003e核心思路：分离关注点\u003c/h3\u003e\n\u003cp\u003e想象一下，如果你的手机和电脑是同一台设备——充电时不能带出门，带出门时插着键盘很奇怪。这听起来很荒谬，但我们却经常要求一台笔记本既扛得住 3A 游戏又要轻薄续航。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e双设备的核心哲学是承认现实：没有完美的单一设备。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e台式机的优势很简单：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e性能释放彻底，不用担心散热和续航\u003c/li\u003e\n\u003cli\u003e可以升级，未来加内存、换显卡都不是问题\u003c/li\u003e\n\u003cli\u003e屏幕大、键盘好，长期工作不累\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e笔记本的优势也很明确：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e想带去哪就去哪\u003c/li\u003e\n\u003cli\u003e电池能撑一天\u003c/li\u003e\n\u003cli\u003e轻到背在身上没感觉\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e当我不再要求一台设备\u0026quot;什么都行\u0026quot;时，反而找到了真正舒服的使用方式。\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003ecomments: true\u003c/p\u003e\n\u003ch2 id=\"windows--wsl2为什么这么好用\"\u003eWindows + WSL2，为什么这么好用？\u003c/h2\u003e\n\u003cp\u003e现在聊聊软件层面。很多人有 Linux 情结，认为\u0026quot;真正的开发者用原生 Linux\u0026quot;。我曾经也是这样想的，直到 WSL2 改变了游戏规则。\u003c/p\u003e\n\u003ch3 id=\"wsl2-到底是什么\"\u003eWSL2 到底是什么？\u003c/h3\u003e\n\u003cp\u003e简单说，WSL2 就是 Windows 里面跑一个真正的 Linux 虚拟机——不是那种慢吞吞的传统虚拟机，而是和 Windows 内核深度集成的高性能方案。\u003c/p\u003e","title":"双持设备 + WSL2：一年后，我终于找到了最佳生产力方案"},{"content":"想象一下，如果每个人的家庭住址都是一串毫无规律的数字，比如\u0026quot;第 192 号楼的第 0 台单元的第 2 层第 1 户\u0026quot;，生活会变得多么混乱。寄信会变成噩梦，找人会变成不可能的任务。\n互联网曾经就面临这样的问题。每台电脑都有一个独特的 IP 地址，比如 192.0.2.1，但人类天生就不擅长记忆这种数字串。于是，域名系统（DNS）应运而生——它是互联网的\u0026quot;通讯录\u0026quot;，把难记的 IP 地址翻译成好记的域名。\n而顶级域名（Top-Level Domain，简称 TLD），就是这个通讯录系统的顶层分类。\n什么是顶级域名？ 简单来说，顶级域名就是网址中最后一个点后面的部分。\n在 google.com 中，.com 就是顶级域名；在 baidu.com.cn 中，.cn 是顶级域名；在 cam.ac.uk（剑桥大学）中，.uk 是顶级域名。\n你可能会问：为什么需要这种分类？想象一下，如果世界上所有文件都放在一个文件夹里，那会是多大的灾难。顶级域名本质上就是一种\u0026quot;文件夹\u0026quot;——它把全世界的网站按照性质、用途或地理位置分门别类，让整个互联网更有序、更易用。\n顶级域名的五大类型 互联网管理机构 ICANN（互联网名称与数字地址分配机构）将顶级域名分为几大类，每种都有自己的故事。\n通用顶级域名—— 最常见的面孔 这些是最早期、最知名的顶级域名，原本各有各的用途，但现在已经变得相当自由化：\nTLD 原本用途 现状 .com 商业机构 最受欢迎，没有任何限制 .org 非营利组织 开放注册，但非营利机构仍常用 .net 网络服务提供商 开放注册，早期互联网公司爱用 .info 信息类网站 开放注册 .biz 商业用途 .com 的替代选择 为什么 .com 这么受欢迎？ 历史习惯。当 1985 年域名系统诞生时，.com 就是几个原始选项之一。几十年来，它积累了最高的认知度和信任感——看到 .com，人们下意识会觉得这是一家\u0026quot;正规\u0026quot;的网站。\n国家代码顶级域名—— 地理的标签 每个国家或地区都有自己的两个字母代码，源自 ISO 3166 标准。比如：\n代码 国家/地区 备注 .cn 中国 需要实名备案 .us 美国 .uk 英国 .jp 日本 .de 德国 欧洲最大的国家 TLD .ca 加拿大 .au 澳大利亚 有趣的现象：有些小国的国家代码域名，因为缩写恰好很酷，被全球开发者追捧，与原国家几乎没有关系：\n.io（英属印度洋领地）—— 科技圈的最爱，看起来像 input/output 的缩写 .ai（安圭拉）—— AI 项目首选，完美契合主题 .cc（科科斯群岛）—— 被视为 .com 的替代，\u0026ldquo;CC\u0026rdquo; 可以理解为 \u0026ldquo;Creative Commons\u0026rdquo; 或 \u0026ldquo;Cool Company\u0026rdquo; .tv（图瓦卢）—— 视频和直播网站天然选择 .me（黑山）—— 个人品牌和博客的热门，\u0026ldquo;me\u0026rdquo; 就是\u0026quot;我\u0026quot; 赞助顶级域名—— 特殊社群的专用通道 这些 TLD 有特定的注册限制，只面向特定行业或社群：\nTLD 用途 限制 .edu 教育机构 仅限美国 accredited 高等教育机构 .gov 美国政府 仅限美国联邦政府机构 .mil 美国军事 仅限美国军事机构 .int 国际组织 仅限条约组织或联合国机构 .aero 航空业 航空运输业相关 .museum 博物馆 博物馆相关 .bank 银行业 严格的验证要求 新通用顶级域名—— 互联网的新时代 2011 年，ICANN 决定开放顶级域名注册，于是数以百计的新 TLD 涌现。这些域名更加多样化、更具描述性：\n行业类：.tech（科技）、.design（设计）、.photo（摄影）、.lawyer（律师）、.blog（博客）\n品牌类：.google、.apple、.amazon—— 大公司可以直接用自己的品牌做 TLD\n创意类：.xyz（极客圈流行）、.cool、.online、.site\n中文域名：.中国、.公司、.网络、.网址、.我爱你（没错，这是真实存在的 TLD）\n截至 2025 年，全球有超过 1500 个顶级域名在运行，这个数字还在持续增长。\n基础设施顶级域名—— 互联网的幕后英雄 .arpa 是一个特殊的 TLD，专门用于互联网基础设施管理。它不用于普通网站，而是用于技术用途，比如反向 DNS 查询。如果你不是网络工程师，这辈子可能都不会直接与它打交道。\n如何选择顶级域名？ 选择 TLD 不是简单的\u0026quot;哪个便宜选哪个\u0026quot;，它关乎你的品牌形象、用户认知和 SEO 表现。\n场景一：全球商业项目 首选：.com\n理由：最高认知度、最多用户信任、最好输入。虽然好的 .com 域名可能已被注册或需要花费不少钱，但这是最值得的投资。\n备选：.net、.co（哥伦比亚的代码，但已被用作 .com 的缩写）、.biz\n场景二：主要面向中国用户 首选：.cn 或 .com.cn\n注意：使用 .cn 域名并在中国大陆服务器托管，必须完成 ICP （Internet Content Provider）备案，这是一个需要时间和材料的流程。\n备选：.com（全球认知）、.net\n场景三：科技创业公司 热门选择：\n.io —— 开发者社区的默认选择，传达\u0026quot;技术感\u0026quot; .ai —— AI 项目的不二之选 .tech —— 明确的科技定位 .xyz —— 年轻、前卫、Google 的母公司 Alphabet 就用 abc.xyz 场景四：个人博客或作品集 推荐：.me、.blog、.dev、.name\n这些 TLD 清楚地传达\u0026quot;这是个人网站\u0026quot;的信息。\n场景五：非营利组织 推荐：.org\n这是非营利机构的标准选择，用户看到 .org 会自然联想到公益、慈善或社区组织。\n一些实用的注意事项 价格差异不是小事 普通 TLD 的年费通常是 10-15 美元，但热门的\u0026quot;非主流\u0026quot; TLD 可能要贵得多：\n.io：30-50 美元/年 .ai：80-100 美元/年（还在上涨） .co：约 25 美元/年 注册前要考虑长期持有成本。\n短域名是奢侈品 一个字母或两个字母的 .com 域名（如 aa.com）可能价值数百万美元。即使是常见的三个字母组合，也可能需要花费数千美元。对于大多数项目，选择一个有意义的四字母或更长的域名是更现实的选择。\nSEO 影响被高估了 很多人认为选择特定 TLD 能显著提升 SEO （Search Engine Optimization）排名，但搜索引擎官方已多次澄清：所有 TLD 在搜索排名上地位平等。.com 并没有 SEO 优势，.xyz 也不会被惩罚。\n真正影响 SEO 的，是你的内容质量、网站速度、用户体验和外部链接。\n域名简短 vs 品牌一致 有时为了得到短域名，人们会选择奇怪的组合（如 xyz123.io）。但记住：好记比短更重要。startupper.com 比 stup.io 更容易记住和传播。\n顶级域名的未来 互联网在不断发展，顶级域名系统也在进化。几个值得关注的方向：\n国际化域名（IDN）：支持非拉丁字符的域名，如 .中国、.السعودية（沙特阿拉伯） 品牌 TLD 普及：更多大公司会使用自己的品牌 TLD 新 TLD 持续增加：ICANN 可能会开放新一轮 TLD 申请 总结 顶级域名远不止是网址的\u0026quot;后缀\u0026quot;，它是互联网分类系统的基础，是你在线身份的重要组成部分。\n选择 TLD 时，问自己几个问题：\n我的主要受众在哪里？（全球 vs 特定国家） 我的行业是什么？（科技、教育、商业\u0026hellip;） 我的预算是多少？（考虑长期持有成本） 什么样的后缀能增强我的品牌？ 没有\u0026quot;最好\u0026quot;的 TLD，只有\u0026quot;最适合\u0026quot;的 TLD。.com 是安全的选择，但不一定是最佳选择。有时候，一个精心挑选的 .io 或 .xyz，反而能让你的品牌更加脱颖而出。\n最重要的是：无论选择什么 TLD，专注于提供有价值的内容和服务。毕竟，人们记住的是你的网站，而不只是它的后缀。\ncomments: true\n参考资料 IANA Root Zone Database - 所有顶级域名的权威记录 ICANN - List of Top-Level Domains Cloudflare - What is a top-level domain (TLD)? Wikipedia - List of Internet top-level domains ","permalink":"https://www.wangyunqing.top/posts/domain-tld-complete-guide/","summary":"\u003cp\u003e想象一下，如果每个人的家庭住址都是一串毫无规律的数字，比如\u0026quot;第 192 号楼的第 0 台单元的第 2 层第 1 户\u0026quot;，生活会变得多么混乱。寄信会变成噩梦，找人会变成不可能的任务。\u003c/p\u003e\n\u003cp\u003e互联网曾经就面临这样的问题。每台电脑都有一个独特的 IP 地址，比如 \u003ccode\u003e192.0.2.1\u003c/code\u003e，但人类天生就不擅长记忆这种数字串。于是，域名系统（DNS）应运而生——它是互联网的\u0026quot;通讯录\u0026quot;，把难记的 IP 地址翻译成好记的域名。\u003c/p\u003e\n\u003cp\u003e而顶级域名（Top-Level Domain，简称 TLD），就是这个通讯录系统的顶层分类。\u003c/p\u003e\n\u003ch2 id=\"什么是顶级域名\"\u003e什么是顶级域名？\u003c/h2\u003e\n\u003cp\u003e简单来说，顶级域名就是网址中最后一个点后面的部分。\u003c/p\u003e\n\u003cp\u003e在 \u003ccode\u003egoogle.com\u003c/code\u003e 中，\u003ccode\u003e.com\u003c/code\u003e 就是顶级域名；在 \u003ccode\u003ebaidu.com.cn\u003c/code\u003e 中，\u003ccode\u003e.cn\u003c/code\u003e 是顶级域名；在 \u003ccode\u003ecam.ac.uk\u003c/code\u003e（剑桥大学）中，\u003ccode\u003e.uk\u003c/code\u003e 是顶级域名。\u003c/p\u003e\n\u003cp\u003e你可能会问：为什么需要这种分类？想象一下，如果世界上所有文件都放在一个文件夹里，那会是多大的灾难。顶级域名本质上就是一种\u0026quot;文件夹\u0026quot;——它把全世界的网站按照性质、用途或地理位置分门别类，让整个互联网更有序、更易用。\u003c/p\u003e\n\u003ch2 id=\"顶级域名的五大类型\"\u003e顶级域名的五大类型\u003c/h2\u003e\n\u003cp\u003e互联网管理机构 ICANN（互联网名称与数字地址分配机构）将顶级域名分为几大类，每种都有自己的故事。\u003c/p\u003e\n\u003ch3 id=\"通用顶级域名-最常见的面孔\"\u003e通用顶级域名—— 最常见的面孔\u003c/h3\u003e\n\u003cp\u003e这些是最早期、最知名的顶级域名，原本各有各的用途，但现在已经变得相当自由化：\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eTLD\u003c/th\u003e\n          \u003cth\u003e原本用途\u003c/th\u003e\n          \u003cth\u003e现状\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.com\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e商业机构\u003c/td\u003e\n          \u003ctd\u003e\u003cstrong\u003e最受欢迎\u003c/strong\u003e，没有任何限制\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.org\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e非营利组织\u003c/td\u003e\n          \u003ctd\u003e开放注册，但非营利机构仍常用\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.net\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e网络服务提供商\u003c/td\u003e\n          \u003ctd\u003e开放注册，早期互联网公司爱用\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.info\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e信息类网站\u003c/td\u003e\n          \u003ctd\u003e开放注册\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.biz\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e商业用途\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003e.com\u003c/code\u003e 的替代选择\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e为什么 \u003ccode\u003e.com\u003c/code\u003e 这么受欢迎？\u003c/strong\u003e 历史习惯。当 1985 年域名系统诞生时，\u003ccode\u003e.com\u003c/code\u003e 就是几个原始选项之一。几十年来，它积累了最高的认知度和信任感——看到 \u003ccode\u003e.com\u003c/code\u003e，人们下意识会觉得这是一家\u0026quot;正规\u0026quot;的网站。\u003c/p\u003e\n\u003ch3 id=\"国家代码顶级域名-地理的标签\"\u003e国家代码顶级域名—— 地理的标签\u003c/h3\u003e\n\u003cp\u003e每个国家或地区都有自己的两个字母代码，源自 ISO 3166 标准。比如：\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e代码\u003c/th\u003e\n          \u003cth\u003e国家/地区\u003c/th\u003e\n          \u003cth\u003e备注\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.cn\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e中国\u003c/td\u003e\n          \u003ctd\u003e需要实名备案\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.us\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e美国\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.uk\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e英国\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.jp\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e日本\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.de\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e德国\u003c/td\u003e\n          \u003ctd\u003e欧洲最大的国家 TLD\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.ca\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e加拿大\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e.au\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e澳大利亚\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e有趣的现象\u003c/strong\u003e：有些小国的国家代码域名，因为缩写恰好很酷，被全球开发者追捧，与原国家几乎没有关系：\u003c/p\u003e","title":"网站顶级域名完全指南：从 .com 到 .xyz，你需要知道的一切"},{"content":"引言：一个反直觉的问题 最近，Citrini Research发布了一篇引人深思的文章——《2028全球智能危机》。文章开篇就提出了一个非常反直觉的问题：\n\u0026ldquo;如果我们的AI乐观态度继续被证明是正确的……如果这实际上是一个看空信号呢？\u0026rdquo;\n这不是一篇唱衰AI的\u0026quot;末日论\u0026quot;文章，也不是一个确定性的预测。作者明确说明：这是一个思想实验，是对一个相对较少被探索的风险情景的建模。\n文章采用了一个独特的叙事手法：以2028年6月30日的宏观备忘录为框架，从未来回顾过去，推演如果AI发展完全符合乐观预期，可能会如何引发一场经济系统性危机。\n今天，让我们深入解读这篇文章的核心逻辑，理解其中蕴含的风险传递机制。\n核心论点：人类智能溢价的解体 要理解整篇文章，需要抓住一个关键概念：人类智能溢价（Human Intelligence Premium）。\n什么是\u0026quot;人类智能溢价\u0026quot;？ 在现代经济史上，人类智能一直是稀缺投入要素：\n资本是充裕的（至少是可复制的） 自然资源有限但可替代 技术进步足够慢，人类有时间适应 而智能——分析、决策、创造、说服、协调的能力——是大规模无法复制的东西。\n正是因为稀缺，人类智能才拥有了经济价值上的\u0026quot;溢价\u0026quot;。\n文章的核心洞察 文章的核心洞察是：我们正在经历这种溢价的解体过程。\n机器智能正成为越来越多任务中人类智能的胜任且快速改进的替代品。而我们的整个金融系统——从劳动力市场到抵押贷款市场再到税法——都是为一个\u0026quot;人类智能稀缺\u0026quot;的世界优化的。\n当稀缺的东西变得充裕时，整个定价体系都需要重新定价。而重新定价是痛苦的、无序的，而且远未完成。\n风险传递机制：五步螺旋 文章详细推演了一个五阶段的正反馈死亡螺旋，让我们逐一理解。\n第一阶段：软件行业的\u0026quot;自我加速颠覆\u0026quot;（2026年初） 故事的起点是2025年底：代理式AI编码工具实现了能力的阶梯式跳跃。\n一个熟练的开发者，使用Claude Code或Codex，可以在几周内复制一个中型SaaS产品（Software as a Service）的核心功能。虽然不完美，但足够让负责审查50万美元年度续约的CIO开始思考一个问题：\n\u0026ldquo;如果我们自己构建这个会怎样？\u0026rdquo;\nServiceNow的警示信号 当ServiceNow在2026年Q3财报中宣布净新增ACV增长从23%放缓到14%，并裁员15%时，市场开始意识到一种新型危机：\nSaaS公司的客户在裁员（因为AI） 裁员意味着取消SaaS许可证 SaaS公司的收入因此下降 为了维持利润率，SaaS公司也裁员并投资AI 每个公司的个体应对都是理性的，但集体结果是灾难性的。\n一个关键洞察：颠覆者无法抵抗 文章提出了一个重要观察：历史经验认为老牌企业会抗拒新技术，从而输给敏捷的进入者。但这次不同：\n\u0026ldquo;受到AI威胁的公司成为AI最积极的采用者。\u0026rdquo;\n为什么？因为他们无法承担不这样做的代价。当股价下跌40-60%，董事会要求答案时，他们只能做一件事：裁员，将节省的资金投入AI工具。\n第二阶段：中介层的崩溃（2026下半年-2027年） 当AI成为默认选项后，一个更大的问题浮现：中介层的商业模式正在崩塌。\n什么是\u0026quot;中介层\u0026quot;？ 过去50年，美国经济在人类局限性之上建立了一个巨大的租金提取层：\n事情需要时间 耐心会耗尽 品牌熟悉度替代了尽职调查 大多数人为了少点几次点击而接受糟糕的价格 数万亿美元的企业价值依赖于这些约束的持续存在。\n系统性瓦解 当AI代理介入后：\n领域 原有模式 AI代理后的变化 订阅服务 被动续费、悄悄涨价 代理识别并重新谈判 旅行预订 平台收取中介费 代理比价所有平台 保险续保 依赖投保人懒惰 代理每年重新评估 房地产 5-6%的佣金 AI代理替代买方中介 DoorDash的案例 文章以DoorDash为例，生动说明了\u0026quot;习惯性中介\u0026quot;护城河的瓦解：\nDoorDash的护城河本质上是：\u0026ldquo;你饿了，你懒，这是你主屏幕上的应用\u0026rdquo; AI代理没有主屏幕，它会同时检查DoorDash、Uber Eats、餐厅官网和二十个新的替代品 编码代理降低了进入门槛，数十个竞争对手涌现 司机使用多应用仪表板，消除了平台锁定 **当代理控制了交易后，它们开始寻找更大的节省方式。**在机器对机器的商务中，2-3%的信用卡交换费成为了显而易见的目标。\n第三阶段：从行业风险到系统性风险（2027年） 2026年，市场将AI的负面冲击视为\u0026quot;行业故事\u0026quot;。但到了2027年，真相变得清晰：\n美国经济本质上是白领服务经济 白领工人占就业的50% 他们驱动约75%的自由消费者支出 AI正在吞噬的工作不是美国经济的边缘，它们就是美国经济本身 一个关键差异：技术进步的历史规律 历史上，\u0026ldquo;技术创新破坏工作，然后创造更多工作\u0026quot;的规律已经持续了两个世纪。但文章指出一个关键差异：\n\u0026ldquo;AI现在是一种通用智能，在人类会重新部署到的任务上不断改进。被取代的程序员不能简单地转移到\u0026rsquo;AI管理\u0026rsquo;，因为AI已经能够做到这一点。\u0026rdquo;\n反馈循环：没有自然刹车 这是一个没有自然刹车的正反馈循环：\nAI变得更好更便宜 公司裁员，将节省的钱用于购买更多AI能力 被取代的工人消费减少 向消费者销售商品的公司销售减少，变弱 这些公司投资更多AI以保护利润率 AI变得更好更便宜\u0026hellip; 第四阶段：金融系统的连锁反应（2027-2028年） 当实体经济开始恶化时，金融系统的脆弱性暴露无遗。\n私人信贷危机 私募信贷从2015年的不到1万亿美元增长到2026年的超过2.5万亿美元。大量资本投入了软件和科技交易，许多是基于\u0026quot;永久中等青少年收入增长\u0026quot;假设的杠杆收购。\nZendesk的案例：\n2022年以102亿美元私有化 50亿美元的直接贷款，历史上最大的ARR支持工具 到2027年中期，AI代理已经自主处理客户服务 支持贷款的\u0026quot;年度经常性收入\u0026quot;不再是经常性的——它只是\u0026quot;尚未离开的收入\u0026rdquo; \u0026ldquo;永久资本\u0026quot;的真相 市场曾经认为私募信贷具有\u0026quot;永久资本\u0026rdquo;，可以吸收损失。但文章揭示了一个令人不安的现实：\n所谓的\u0026quot;永久资本\u0026quot;实际上是美国家庭的储蓄，结构化为投资于私募信贷的年金。当保险监管机构开始降低这些资产的风险资本处理时，系统被迫在已经恶化的市场中筹集资本或出售资产。\n第五阶段：抵押贷款市场的威胁（2028年） 这是文章警告的最大潜在威胁。\n一个前所未有的问题 \u0026ldquo;我们现在必须问一个三年前显得荒谬的问题：优质抵押贷款还是钱好吗？\u0026rdquo;\n美国住宅抵押贷款市场约为13万亿美元。抵押贷款承销建立在一个基本假设上：借款人将在贷款期间保持大致当前的就业和收入水平。\n为什么这次不同 历史上的抵押贷款危机由以下原因引起：\n投机过度（借给负担不起的人，如2008年） 利率冲击（如1980年代初） 局部经济冲击（如1980年代德州石油业） 但这次不同：\n借款人不是次级的，是780 FICO分数 他们付了20%首付 有干净的信用记录和稳定的就业记录 问题是：世界在贷款签订后发生了变化。人们借贷了一个他们不再能够相信的未来。\n危险的数学 如果这些恐惧成真：\n白领裁员导致抵押贷款市场在今年下半年破裂 在这种情况下，当前股市的回撤最终可能达到GFC的水平（57%） 这将使标普500指数降至约3500点——自2022年11月ChatGPT时刻以来的水平 政策困境：与时间赛跑 文章指出，这场危机暴露了现有政策工具箱的不足。\n财政收入基础的结构性破坏 联邦政府本质上是对人类时间的税收。但到2028年第一季度：\n联邦收入比CBO基准预测低12% 薪资税收下降，因为 fewer people at prior compensation levels 生产力飙升，但收益流向资本和计算，而非劳动 劳动收入份额的崩溃 一个令人震惊的数据：\n劳动占GDP的份额从1974年的64%下降到2024年的56%（四十年缓慢下降） 在AI开始指数级改进后的四年中，这一比例降至46% 这是有记录以来最急剧的下降 政策响应的滞后 政府需要在恰恰从家庭征收更少税收的时候，向他们转移更多资金。\n政治辩论沿着党派线分裂：\n右派称转移支付和再分配为马克思主义 左派警告由现任者帮助起草的税收成为另一种形式的监管俘获 财政鹰派指出不可持续的赤字 鸽派指出GFC后过早紧缩的警示故事 每一方都有自己的反派，但真正的反派是时间。\n结论：金丝雀还活着 文章以一个充满希望但也紧迫的结尾：\n\u0026ldquo;这是历史上第一次，经济中生产力最高的资产产生的就业机会更少，而不是更多。没有任何框架适合，因为没有框架是为稀缺投入变得充裕的世界设计的。\u0026rdquo;\n我们还有时间 文章最后提醒读者：\n\u0026ldquo;但你不是在2028年6月读到这篇文章的。你是在2026年2月读到的。标普接近历史高位。负反馈循环还没有开始。\u0026rdquo;\n金丝雀还活着。\n作为投资者，我们还有时间评估我们的投资组合中有多少是建立在无法在本十年存活的假设之上的。\n作为一个社会，我们还有时间采取主动。\n启示与思考 这篇文章的价值不在于它预测的准确性，而在于它帮助我们思考那些未被充分探索的风险。\n几个关键启示 反直觉的风险：AI发展的最大风险可能不是它失败了，而是它太成功了\n系统性的脆弱：我们的经济系统建立在一个\u0026quot;人类智能稀缺\u0026quot;的基本假设上，当这个假设改变时，整个定价体系都需要重新评估\n反馈循环的危险：AI发展可能创造一个自我加速的正反馈循环，其中每个参与者的理性应对都导致集体的非理性结果\n政策准备的不足：现有的政策工具箱是为不同类型的危机设计的，可能不足以应对智能充裕时代的挑战\n这不是预测，而是准备 作者明确说这不是预测。有些情景可能不会实现。机器智能将继续加速。人类智能的溢价将缩小。\n问题是：我们如何提前识别那些可能不会在本十年存活的假设，并为此做准备？\n这就是这篇文章的价值所在：它帮助我们问出正确的问题，在我们需要答案之前。\n后记 这篇文章引发了大量讨论。有人说它过度悲观，有人说它忽视历史规律，有人说它是一个重要的警示。\n但在我看来，最好的态度可能是：不必接受它的结论，但值得认真思考它提出的问题。\n毕竟，历史上最大的危机往往不是来自那些被广泛讨论的风险，而是来自那些相对较少被探索的情景。\n而这篇文章，正是在探索这样的情景。\n本文是对Citrini Research《THE 2028 GLOBAL INTELLIGENCE CRISIS》一文的解读。原文链接：https://www.citriniresearch.com/p/2028gic\n","permalink":"https://www.wangyunqing.top/posts/ai-intelligence-crisis-2028/","summary":"\u003ch2 id=\"引言一个反直觉的问题\"\u003e引言：一个反直觉的问题\u003c/h2\u003e\n\u003cp\u003e最近，Citrini Research发布了一篇引人深思的文章——《\u003cstrong\u003e2028全球智能危机\u003c/strong\u003e》。文章开篇就提出了一个非常反直觉的问题：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;如果我们的AI乐观态度继续被证明是正确的……如果这实际上是一个看空信号呢？\u0026rdquo;\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e这不是一篇唱衰AI的\u0026quot;末日论\u0026quot;文章，也不是一个确定性的预测。作者明确说明：\u003cstrong\u003e这是一个思想实验，是对一个相对较少被探索的风险情景的建模\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e文章采用了一个独特的叙事手法：以\u003cstrong\u003e2028年6月30日的宏观备忘录\u003c/strong\u003e为框架，从未来回顾过去，推演如果AI发展完全符合乐观预期，可能会如何引发一场经济系统性危机。\u003c/p\u003e\n\u003cp\u003e今天，让我们深入解读这篇文章的核心逻辑，理解其中蕴含的风险传递机制。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"核心论点人类智能溢价的解体\"\u003e核心论点：人类智能溢价的解体\u003c/h2\u003e\n\u003cp\u003e要理解整篇文章，需要抓住一个关键概念：\u003cstrong\u003e人类智能溢价（Human Intelligence Premium）\u003c/strong\u003e。\u003c/p\u003e\n\u003ch3 id=\"什么是人类智能溢价\"\u003e什么是\u0026quot;人类智能溢价\u0026quot;？\u003c/h3\u003e\n\u003cp\u003e在现代经济史上，人类智能一直是\u003cstrong\u003e稀缺投入要素\u003c/strong\u003e：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e资本是充裕的（至少是可复制的）\u003c/li\u003e\n\u003cli\u003e自然资源有限但可替代\u003c/li\u003e\n\u003cli\u003e技术进步足够慢，人类有时间适应\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e而\u003cstrong\u003e智能\u003c/strong\u003e——分析、决策、创造、说服、协调的能力——是大规模无法复制的东西。\u003c/p\u003e\n\u003cp\u003e正是因为稀缺，人类智能才拥有了经济价值上的\u0026quot;溢价\u0026quot;。\u003c/p\u003e\n\u003ch3 id=\"文章的核心洞察\"\u003e文章的核心洞察\u003c/h3\u003e\n\u003cp\u003e文章的核心洞察是：\u003cstrong\u003e我们正在经历这种溢价的解体过程\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e机器智能正成为越来越多任务中人类智能的胜任且快速改进的替代品。而我们的整个金融系统——从劳动力市场到抵押贷款市场再到税法——都是为一个\u0026quot;人类智能稀缺\u0026quot;的世界优化的。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e当稀缺的东西变得充裕时，整个定价体系都需要重新定价。而重新定价是痛苦的、无序的，而且远未完成。\u003c/strong\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"风险传递机制五步螺旋\"\u003e风险传递机制：五步螺旋\u003c/h2\u003e\n\u003cp\u003e文章详细推演了一个五阶段的正反馈死亡螺旋，让我们逐一理解。\u003c/p\u003e\n\u003chr\u003e\n\u003ch3 id=\"第一阶段软件行业的自我加速颠覆2026年初\"\u003e第一阶段：软件行业的\u0026quot;自我加速颠覆\u0026quot;（2026年初）\u003c/h3\u003e\n\u003cp\u003e故事的起点是2025年底：\u003cstrong\u003e代理式AI编码工具实现了能力的阶梯式跳跃\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e一个熟练的开发者，使用Claude Code或Codex，可以在\u003cstrong\u003e几周内\u003c/strong\u003e复制一个中型SaaS产品（Software as a Service）的核心功能。虽然不完美，但足够让负责审查50万美元年度续约的CIO开始思考一个问题：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;如果我们自己构建这个会怎样？\u0026rdquo;\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"servicenow的警示信号\"\u003eServiceNow的警示信号\u003c/h4\u003e\n\u003cp\u003e当ServiceNow在2026年Q3财报中宣布净新增ACV增长从23%放缓到14%，并裁员15%时，市场开始意识到一种新型危机：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSaaS公司的客户在裁员（因为AI）\u003c/li\u003e\n\u003cli\u003e裁员意味着取消SaaS许可证\u003c/li\u003e\n\u003cli\u003eSaaS公司的收入因此下降\u003c/li\u003e\n\u003cli\u003e为了维持利润率，SaaS公司也裁员并投资AI\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e每个公司的个体应对都是理性的，但集体结果是灾难性的。\u003c/strong\u003e\u003c/p\u003e\n\u003ch4 id=\"一个关键洞察颠覆者无法抵抗\"\u003e一个关键洞察：颠覆者无法抵抗\u003c/h4\u003e\n\u003cp\u003e文章提出了一个重要观察：历史经验认为老牌企业会抗拒新技术，从而输给敏捷的进入者。但这次不同：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;受到AI威胁的公司成为AI最积极的采用者。\u0026rdquo;\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e为什么？因为他们无法承担不这样做的代价。当股价下跌40-60%，董事会要求答案时，他们只能做一件事：裁员，将节省的资金投入AI工具。\u003c/p\u003e\n\u003chr\u003e\n\u003ch3 id=\"第二阶段中介层的崩溃2026下半年-2027年\"\u003e第二阶段：中介层的崩溃（2026下半年-2027年）\u003c/h3\u003e\n\u003cp\u003e当AI成为默认选项后，一个更大的问题浮现：\u003cstrong\u003e中介层的商业模式正在崩塌\u003c/strong\u003e。\u003c/p\u003e\n\u003ch4 id=\"什么是中介层\"\u003e什么是\u0026quot;中介层\u0026quot;？\u003c/h4\u003e\n\u003cp\u003e过去50年，美国经济在人类局限性之上建立了一个巨大的\u003cstrong\u003e租金提取层\u003c/strong\u003e：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e事情需要时间\u003c/li\u003e\n\u003cli\u003e耐心会耗尽\u003c/li\u003e\n\u003cli\u003e品牌熟悉度替代了尽职调查\u003c/li\u003e\n\u003cli\u003e大多数人为了少点几次点击而接受糟糕的价格\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e数万亿美元的企业价值依赖于这些约束的持续存在。\u003c/p\u003e\n\u003ch4 id=\"系统性瓦解\"\u003e系统性瓦解\u003c/h4\u003e\n\u003cp\u003e当AI代理介入后：\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e领域\u003c/th\u003e\n          \u003cth\u003e原有模式\u003c/th\u003e\n          \u003cth\u003eAI代理后的变化\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e订阅服务\u003c/td\u003e\n          \u003ctd\u003e被动续费、悄悄涨价\u003c/td\u003e\n          \u003ctd\u003e代理识别并重新谈判\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e旅行预订\u003c/td\u003e\n          \u003ctd\u003e平台收取中介费\u003c/td\u003e\n          \u003ctd\u003e代理比价所有平台\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e保险续保\u003c/td\u003e\n          \u003ctd\u003e依赖投保人懒惰\u003c/td\u003e\n          \u003ctd\u003e代理每年重新评估\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e房地产\u003c/td\u003e\n          \u003ctd\u003e5-6%的佣金\u003c/td\u003e\n          \u003ctd\u003eAI代理替代买方中介\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch4 id=\"doordash的案例\"\u003eDoorDash的案例\u003c/h4\u003e\n\u003cp\u003e文章以DoorDash为例，生动说明了\u0026quot;习惯性中介\u0026quot;护城河的瓦解：\u003c/p\u003e","title":"当AI完美成功时，为什么可能是灾难的开始？"},{"content":"让你的 Python 项目告别混乱：一份实用的目录组织指南 你是否有过这样的经历：打开几个月前写的项目，看着一堆散落的 .py 文件陷入沉思——这个是干什么的？那个又被谁调用？入口文件到底是哪个？\n或者更糟：同事发来一个项目，你解压后看到几十个文件平铺在根目录，连 README 都找不到，顿时兴趣全无。\n如果你点头了，那么这篇文章就是写给你的。\n为什么项目结构很重要？ 想象你搬家到一个新房子。如果所有东西——衣服、厨具、文件、零食——都堆在客厅里，你的生活会变成什么样？找个东西要翻遍整个房间，朋友来做客无处下脚，想整理都不知道从哪里开始。\nPython 项目也是一样。当你的代码从单个脚本增长到成百上千个文件时，如何组织它们决定了项目的生死。\n一个好的项目结构能让：\n你自己 快速找到需要修改的代码 新同事 在 5 分钟内理解项目布局 测试 与源码清晰分离，不会混在一起 部署 变得可预测和自动化 先看一个糟糕的例子 很多 Python 开发者都是从这样开始的：\nmy-project/ ├── main.py ├── utils.py ├── database.py ├── api.py ├── test.py ├── config.py └── new_utils.py 看起来还行？但问题已经在悄悄滋生：\nimport 的地雷阵：当你运行 python main.py 时，Python 会把当前目录加到搜索路径。这意味着你可以直接 import utils，但也意味着你可能错误地导入了其他同名模块。\n测试在哪里？：test.py 看起来很孤单，而且和源码混在一起。当项目变大后，测试文件会淹没在源码中。\n配置混乱：config.py 和代码放在一起，意味着每次部署都要小心不要把配置文件一起打包。\n无法打包：如果你想把项目分享给别人，或者发布到 PyPI，这种结构根本无法打包。\n两种主流布局：src vs flat Python 社区争论已久的话题：源码应该放在哪里？\nFlat Layout（扁平布局） my-project/ ├── README.md ├── pyproject.toml ├── my_package/ │ ├── __init__.py │ └── module.py └── tests/ └── test_module.py 优点：简单直观，适合快速原型和脚本\n缺点：\n开发时，项目根目录在 Python 搜索路径中 容易意外导入本地文件而非安装的包 打包时需要额外配置排除测试等文件 Src Layout（推荐） my-project/ ├── README.md ├── pyproject.toml ├── src/ │ └── my_package/ │ ├── __init__.py │ └── module.py └── tests/ └── test_module.py 优点：\n强制通过安装来使用项目，避免意外导入 测试一定会导入已安装的包，而非本地文件 打包更简单明确 缺点：\n需要额外的安装步骤（pip install -e .） 对初学者来说多了一层目录 为什么推荐 src layout？ 想象一下这个场景：你的项目叫 awesome_utils，而 Python 环境里已经安装了一个同名库。在 flat layout 下，你运行代码时 Python 可能导入你本地的文件，而不是已安装的库。这种 bug 会让你怀疑人生。\nsrc layout 通过强制安装来避免这个问题。你的代码和已安装的包走同一条路径，不会有\u0026quot;两个版本\u0026quot;的混乱。\n一个完整的项目模板 以下是一个适用于大多数 Python 项目的结构：\nmy-project/ ├── src/ # 源代码目录 │ └── my_package/ # 你的包名 │ ├── __init__.py # 包初始化文件 │ ├── main.py # 主要逻辑 │ ├── utils.py # 工具函数 │ └── sub_package/ # 子包 │ └── __init__.py ├── tests/ # 测试目录 │ ├── __init__.py │ ├── conftest.py # pytest 配置 │ └── test_main.py # 主逻辑测试 ├── docs/ # 文档（可选） ├── scripts/ # 脚本和工具（可选） ├── .gitignore # Git 忽略文件 ├── README.md # 项目说明 ├── LICENSE # 许可证 ├── pyproject.toml # 项目配置 └── requirements.txt # 依赖列表（可选） 核心文件说明 文件/目录 作用 src/ 包含所有源代码，与测试和配置分离 tests/ 测试代码，与源码分离，便于 CI/CD pyproject.toml 现代标准的项目配置文件，包含依赖、构建配置等 README.md 项目说明，告诉别人这是什么、怎么用 .gitignore 告诉 Git 哪些文件不要提交（如虚拟环境、缓存） LICENSE 开源许可证，告诉别人可以如何使用你的代码 实践建议 1. 从一开始就做好结构 不要想着\u0026quot;以后再整理\u0026quot;。项目一旦成型，重构目录结构的痛苦远超你的想象。哪怕只是一个脚本，也值得给它一个合适的\u0026quot;家\u0026quot;。\n2. 保持一致性 无论你选择 src 还是 flat，保持整个项目的一致性。不要一部分用 src，另一部分用 flat。\n3. 分离关注点 源码在 src/ 或 your_package/ 测试在 tests/ 文档在 docs/ 配置在根目录 4. 使用虚拟环境 无论项目大小，始终使用虚拟环境。它隔离了项目依赖，避免\u0026quot;我的机器上能跑\u0026quot;的尴尬。\npython -m venv .venv source .venv/bin/activate # Windows: .venv\\Scripts\\activate pip install -e . 5. 写好 README.md 你的项目目录再清晰，如果 README 写得像谜语，也没人愿意用。一个好的 README 应该回答：\n这是什么？ 解决什么问题？ 如何安装？ 如何使用？ 如何运行测试？ 不同场景的选择 场景 推荐布局 快速脚本、一次性任务 单个 .py 文件即可 个人小工具、实验性项目 flat layout 够用 打算发布到 PyPI 的库 src layout 多人协作的项目 src layout 长期维护的生产项目 src layout + 完整结构 总结 好的项目结构不是装饰品，它是可维护性的基础。当你：\n能在 10 秒内找到需要修改的文件 新同事能在半小时内跑通项目 一次 pip install 就能部署到新环境 你就知道，当初花时间规划目录结构是多么值得。\n记住：你的项目结构是你给未来的自己（和同事）的一封信——告诉他们这个项目是如何组织的，如何优雅地修改和扩展它。\n从今天开始，给每个 Python 项目一个像样的家吧。\n参考资料 Python Packaging User Guide - src layout vs flat layout Real Python - project layout The Hitchhiker\u0026rsquo;s Guide to Python - Structuring Your Project pyOpenSci - Python Package Structure Hitchhiker\u0026rsquo;s Guide to Python ","permalink":"https://www.wangyunqing.top/posts/python-project-structure-guide/","summary":"\u003ch1 id=\"让你的-python-项目告别混乱一份实用的目录组织指南\"\u003e让你的 Python 项目告别混乱：一份实用的目录组织指南\u003c/h1\u003e\n\u003cp\u003e你是否有过这样的经历：打开几个月前写的项目，看着一堆散落的 \u003ccode\u003e.py\u003c/code\u003e 文件陷入沉思——这个是干什么的？那个又被谁调用？入口文件到底是哪个？\u003c/p\u003e\n\u003cp\u003e或者更糟：同事发来一个项目，你解压后看到几十个文件平铺在根目录，连 README 都找不到，顿时兴趣全无。\u003c/p\u003e\n\u003cp\u003e如果你点头了，那么这篇文章就是写给你的。\u003c/p\u003e\n\u003ch2 id=\"为什么项目结构很重要\"\u003e为什么项目结构很重要？\u003c/h2\u003e\n\u003cp\u003e想象你搬家到一个新房子。如果所有东西——衣服、厨具、文件、零食——都堆在客厅里，你的生活会变成什么样？找个东西要翻遍整个房间，朋友来做客无处下脚，想整理都不知道从哪里开始。\u003c/p\u003e\n\u003cp\u003ePython 项目也是一样。\u003cstrong\u003e当你的代码从单个脚本增长到成百上千个文件时，如何组织它们决定了项目的生死\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e一个好的项目结构能让：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e你自己\u003c/strong\u003e 快速找到需要修改的代码\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e新同事\u003c/strong\u003e 在 5 分钟内理解项目布局\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e测试\u003c/strong\u003e 与源码清晰分离，不会混在一起\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e部署\u003c/strong\u003e 变得可预测和自动化\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"先看一个糟糕的例子\"\u003e先看一个糟糕的例子\u003c/h2\u003e\n\u003cp\u003e很多 Python 开发者都是从这样开始的：\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emy-project/\n├── main.py\n├── utils.py\n├── database.py\n├── api.py\n├── test.py\n├── config.py\n└── new_utils.py\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e看起来还行？但问题已经在悄悄滋生：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eimport\u003c/code\u003e 的地雷阵\u003c/strong\u003e：当你运行 \u003ccode\u003epython main.py\u003c/code\u003e 时，Python 会把当前目录加到搜索路径。这意味着你可以直接 \u003ccode\u003eimport utils\u003c/code\u003e，但也意味着你可能错误地导入了其他同名模块。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e测试在哪里？\u003c/strong\u003e：\u003ccode\u003etest.py\u003c/code\u003e 看起来很孤单，而且和源码混在一起。当项目变大后，测试文件会淹没在源码中。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e配置混乱\u003c/strong\u003e：\u003ccode\u003econfig.py\u003c/code\u003e 和代码放在一起，意味着每次部署都要小心不要把配置文件一起打包。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e无法打包\u003c/strong\u003e：如果你想把项目分享给别人，或者发布到 PyPI，这种结构根本无法打包。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"两种主流布局src-vs-flat\"\u003e两种主流布局：src vs flat\u003c/h2\u003e\n\u003cp\u003ePython 社区争论已久的话题：\u003cstrong\u003e源码应该放在哪里？\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"flat-layout扁平布局\"\u003eFlat Layout（扁平布局）\u003c/h3\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emy-project/\n├── README.md\n├── pyproject.toml\n├── my_package/\n│   ├── __init__.py\n│   └── module.py\n└── tests/\n    └── test_module.py\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e优点\u003c/strong\u003e：简单直观，适合快速原型和脚本\u003c/p\u003e","title":"Python项目目录组织指南🐍"},{"content":" \u0026ldquo;Is up down?\u0026rdquo; — 当一台名为 \u0026ldquo;up\u0026rdquo; 的机器宕机时，这就是你会听到的困惑。\n前言 最近偶然读到了 Don Libes 在 1989 年写的一篇经典文章 —— 《Choosing a Name for Your Computer》（后来成为 RFC 1178）。这篇文章以幽默的笔触总结了计算机命名的种种\u0026quot;坑\u0026quot;和建议，三十多年后的今天读来依然让人会心一笑。\n如果你曾经给服务器、虚拟机、甚至自己的笔记本电脑取过名字，这篇文章值得一看。\n为什么要给计算机取名？ 一旦你拥有不止一台计算机，就需要能够区分它们。\n人类需要：\u0026ldquo;嘿 Ken，Goon 宕机了！\u0026rdquo; 计算机需要：mail libes@goon 无论名字如何被解析，选一个\u0026quot;好\u0026quot;名字能避免很多麻烦。\n❌ 这些坑，别踩 Don Libes 列举了许多命名上的\u0026quot;反面教材\u0026quot;，有些真的让人哭笑不得：\n1. 不要重载通用词汇 一台数据库服务器被命名为 up，因为它是唯一接受更新的机器。\n于是出现了这样的对话：\n\u0026ldquo;Is up down?\u0026rdquo; —— up 宕机了吗？\n\u0026ldquo;Boot the machine up.\u0026rdquo; —— 启动那台机器。\n\u0026ldquo;Which machine?\u0026rdquo; —— 哪台？\n这种命名会让日常交流变得像猜谜游戏。\n2. 不要以该机器独有的项目命名 一台机器被命名为 shop（车间），因为用于控制车间设备。\n一年后：五台新机器上线，原来的机器被移到不相关的项目。\nshop 这个名字，还合适吗？\n通用名称很难长期保持准确。\n3. 不要使用自己的名字 \u0026ldquo;把磁盘驱动器给 don\u0026rdquo; —— 这是说给人听，还是说给机器？\n更现实的问题是：一年后你换了台机器，别人卡在 \u0026ldquo;don\u0026rdquo; 上，你却要用 \u0026ldquo;jim\u0026rdquo;。而且，各种配置文件、脚本里写死的名字都要改……\n4. 不要使用长名字 超过 8 个字符的名字只会让人烦恼。\n5. 避免替代拼写 一台机器叫 czek，大家以为叫 check。\n一台机器叫 pythagoris（拼错了），管理员每次都要查字典才能输入。\n故意\u0026quot;卖萌\u0026quot;的错误拼写只会制造混乱。\n6. 避免域名样式 名叫 tahiti 的机器，真的在塔希提吗？\n如果在弗吉尼亚，会不会让人以为是 CIA 的塔希提办公室？\n地理和组织名称会暗示位置，容易造成误解。\n✅ 好的名字，这样选 Don Libes 给出了一些建议，我觉得很实用：\n1. 使用少见的词汇 与其叫 typical 或 server，不如叫：\nlurch（突然倾斜） squire（乡绅） flux（流动） 2. 使用主题命名 这是最有趣的部分！给一组机器用统一的主题命名：\n主题 示例 颜色 red, blue, aqua, crimson 神话人物 zeus, hera, athena, orion 神话地方 midgard, styx, paradise 元素 helium, argon, zinc 花卉 tulip, peony, lilac 主题命名的优点：\n易于记忆 方便扩展（颜色永远不会用完） 有趣且展示品味 3. 使用真实单词 随机字符串（如 x7k2p9）虽然适合做密码，但作为主机名简直灾难。\n🤔 我的思考 读完这篇文章，我不禁想到：\n为什么命名如此重要？ 名字是我们与世界交互的\u0026quot;接口\u0026quot;。一个好的名字：\n降低认知负担 —— 不用每次都停下来思考 减少沟通成本 —— \u0026ldquo;红服务器宕机了\u0026quot;比\u0026quot;172.16.1.5宕机了\u0026quot;更直观 承载文化 —— 一个好的命名主题可以反映团队的风格 命名是\u0026quot;软技能\u0026rdquo; 技术能力之外，命名体现了：\n沟通意识（为他人着想） 系统思维（考虑扩展性） 幽默感（让工作更有趣） 这些\u0026quot;软技能\u0026quot;往往比技术本身更能影响团队效率。\n📝 给你的一些建议 如果你正在为新机器取名，这里有一些建议：\n个人电脑 可以使用自己喜欢的词汇，比如：\n自然类：river, forest, peak 抽象类：flux, zen, spark 科幻类：hal, matrix, nexus 多机器环境 使用主题命名系列：\n# 希腊神话系列 zeus, hera, athena, apollo # 星球系列 mars, venus, jupiter, saturn # 太阳系列 sun, moon, star, comet 企业环境 保持专业，但也可以有趣：\n# 科学家系列 einstein, newton, darwin, curie # 探索者系列 columbus, magellan, armstrong 结语 \u0026ldquo;By choosing a name wisely, both user and administrator will have an easier time of remembering, discussing and typing the names of their computers.\u0026rdquo;\n—— Don Libes, 1989\n三十多年过去，计算机的数量从那时的一台、两台，变成了今天的数十亿台。但命名的智慧，依然值得铭记。\n下次给新机器取名时，多花一分钟想想吧。\n参考资料 RFC 1178 - Choosing a Name for Your Computer Don Libes, \u0026ldquo;Choosing a Name for Your Computer\u0026rdquo;, Communications of the ACM, Vol. 32, No. 11, November 1989. 你的第一台电脑叫什么名字？欢迎在评论区分享！\n","permalink":"https://www.wangyunqing.top/posts/how-to-name-your-computer/","summary":"\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;Is up down?\u0026rdquo; — 当一台名为 \u0026ldquo;up\u0026rdquo; 的机器宕机时，这就是你会听到的困惑。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"前言\"\u003e前言\u003c/h2\u003e\n\u003cp\u003e最近偶然读到了 Don Libes 在 1989 年写的一篇经典文章 —— \u003cstrong\u003e《Choosing a Name for Your Computer》\u003c/strong\u003e（后来成为 RFC 1178）。这篇文章以幽默的笔触总结了计算机命名的种种\u0026quot;坑\u0026quot;和建议，三十多年后的今天读来依然让人会心一笑。\u003c/p\u003e\n\u003cp\u003e如果你曾经给服务器、虚拟机、甚至自己的笔记本电脑取过名字，这篇文章值得一看。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"为什么要给计算机取名\"\u003e为什么要给计算机取名？\u003c/h2\u003e\n\u003cp\u003e一旦你拥有不止一台计算机，就需要能够区分它们。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e人类需要\u003c/strong\u003e：\u0026ldquo;嘿 Ken，Goon 宕机了！\u0026rdquo;\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e计算机需要\u003c/strong\u003e：\u003ccode\u003email libes@goon\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e无论名字如何被解析，选一个\u0026quot;好\u0026quot;名字能避免很多麻烦。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"-这些坑别踩\"\u003e❌ 这些坑，别踩\u003c/h2\u003e\n\u003cp\u003eDon Libes 列举了许多命名上的\u0026quot;反面教材\u0026quot;，有些真的让人哭笑不得：\u003c/p\u003e\n\u003ch3 id=\"1-不要重载通用词汇\"\u003e1. 不要重载通用词汇\u003c/h3\u003e\n\u003cblockquote\u003e\n\u003cp\u003e一台数据库服务器被命名为 \u003ccode\u003eup\u003c/code\u003e，因为它是唯一接受更新的机器。\u003c/p\u003e\n\u003cp\u003e于是出现了这样的对话：\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;Is up down?\u0026rdquo;\u003c/strong\u003e —— up 宕机了吗？\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;Boot the machine up.\u0026rdquo;\u003c/strong\u003e —— 启动那台机器。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;Which machine?\u0026rdquo;\u003c/strong\u003e —— 哪台？\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e这种命名会让日常交流变得像猜谜游戏。\u003c/p\u003e\n\u003ch3 id=\"2-不要以该机器独有的项目命名\"\u003e2. 不要以该机器独有的项目命名\u003c/h3\u003e\n\u003cblockquote\u003e\n\u003cp\u003e一台机器被命名为 \u003ccode\u003eshop\u003c/code\u003e（车间），因为用于控制车间设备。\u003c/p\u003e\n\u003cp\u003e一年后：五台新机器上线，原来的机器被移到不相关的项目。\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eshop\u003c/code\u003e 这个名字，还合适吗？\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e通用名称很难长期保持准确。\u003c/p\u003e\n\u003ch3 id=\"3-不要使用自己的名字\"\u003e3. 不要使用自己的名字\u003c/h3\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;把磁盘驱动器给 don\u0026rdquo; —— 这是说给人听，还是说给机器？\u003c/p\u003e","title":"如何给你的计算机取个好名字？——来自 1989 年的经典指南"},{"content":"🎮 开篇：为什么鹅鸭杀如此迷人？ 《鹅鸭杀》（Goose Goose Duck）是一款融合了狼人杀与 Among Us 玩法的社交推理游戏。与同类游戏相比，它最大的特色就是角色系统极其丰富——目前游戏中有 45+ 种角色，分为鹅（好人）、鸭（坏人）、中立三大阵营。\n每个角色都有独特的技能和胜利条件，拿到不同角色，你的游戏体验完全不同。\n社交推理游戏的魅力：\n信息不对称带来的心理博弈 角色技能打破传统\u0026quot;好人只能被动防守\u0026quot;的设定 中立阵营的存在让局势更加复杂多变 📊 游戏基础与阵营介绍 三大阵营一览 阵营 目标 角色数量 核心玩法 鹅（好人） 完成所有任务 或 投票淘汰所有鸭子 20+ 团队协作、信息收集、推理投票 鸭（坏人） 杀死所有鹅 或 达成特殊胜利条件 15+ 暗杀伪装、破坏任务、混淆视听 中立 完成各自独特的胜利条件 10+ 独立发展、见机行事、搅局搅动 🦢 鹅阵营（好人）详细解析 🎯 核心鹅角色 1. 大白鹅（平民） 技能：无特殊能力，纯粹的好人\n玩法建议：\n开局认真做任务，为团队贡献进度 注意观察身边玩家行为 发现尸体及时报告，提供目击信息 会议上积极发言，分享你的观察 获胜关键：任务 + 推理，虽然无技能但信息量最大\n2. 警长 技能：可无限次击杀任意玩家，但杀错鹅会同归于尽\n┌──────────────────────────────────────────────┐ │ 警长使用流程： │ │ 1. 开局可以适当隐瞒身份 │ │ 2. 观察可疑行为（跟随、假装做任务） │ │ 3. 收集一定信息后再出刀 │ │ 4. 可与正义使者配合试刀 │ └──────────────────────────────────────────────┘ 冷却时间：初始 17 秒，后续 20 秒\n玩法建议：\n慎重出刀：误杀鹅会双死，等于送掉两个好人 抱团行动：与正义使者或其他可信玩家组队 信息收集：先观察再动手，不要盲目开刀 注意加拿大鹅：杀了加拿大鹅会双死，不会自动报告 克星：刺客（会议上会被刺杀）\n3. 正义使者 技能：每局游戏只能杀一人，无任何惩罚\n冷却时间：初始 17 秒，用完即永久失效\n玩法建议：\n刀要留到后期：前期信息不足，容易误杀 与警长配合：可以让警长先刀，你留着关键一击 锁定目标后刀：确认身份后再动手 注意杀手身份：刀错也没事，但最好刀中 获胜关键：一击必杀，你的刀是团队最可靠的处决手段\n4. 通灵者 技能：可以看到场上幽灵的数量\n幽灵数量 = 总人数 - 存活人数 冷却时间：初始 20 秒，后续 10 秒\n玩法建议：\n定时查验：每轮会议前后各查验一次 推算鸭子数量：结合存活人数推算敌方规模 注意鹈鹕：被鹈鹕吃掉的人开会前不算死亡 配合警长/正义使者：为他们提供数据支持 进阶技巧：\n如果你看到人数没变但有人报告死亡 → 可能是加拿大鹅被杀 如果你看到人数减少但没发现尸体 → 可能是食人族吃掉了尸体 5. 加拿大鹅 🇨🇦 技能：被杀死后 1 秒内自动报告尸体\n特殊机制：\n被狼杀、被鹈鹕吃、被正义使者/猎鹰杀 → 会自动报告 被警长杀 → 双死，不会报告 被专业杀手杀 → 不会报告 会议上被刺客刺死 → 不会报告 被炸弹炸死 → 爆炸王也不会报告 玩法建议：\n开局报身份：告诉 2-3 个可信玩家你的身份 单走做任务：反正死了会自动报告，可以大胆单走 吸引狼刀：你是团队的\u0026quot;诱饵\u0026quot;，死了就能开会议 注意专业杀手：如果你被杀没自动报告，场上可能有专业杀手 别称：炮仗、自爆鹅\n6. 侦探 技能：查验玩家本回合是否杀过人\n查验结果：\n🧚 小天使 → 本回合没杀人 👿 小恶魔 → 本回合杀过人 冷却时间：一轮可以查验多人\n玩法建议：\n会议后立即查验：抓住时机，越早越好 重点查验可疑人员：行为异常、跟人太紧的 注意限制：只能查出\u0026quot;带刀杀人\u0026quot;的角色 炸弹王和鹈鹕：即使杀了人也会显示天使 进阶技巧：\n查出恶魔后可以直接开会投票 不要一次性暴露太多查验结果 注意查验时机，会议结束 CD 好就可以查 7. 工程师 技能：可以使用通风管道 + 感知鸭子破坏的位置\n冷却时间：20 秒\n玩法建议：\n快速支援：利用管道快速移动到事发地点 暗中观察：躲在管道中观察可疑行为 破坏预警：看到破坏位置可以直接去抓现行 注意暴露：频繁钻管道容易被怀疑 获胜关键：机动性 + 信息收集，你是团队的快速反应部队\n8. 肉汁 💰 技能：完成任务增加赏金，存活到最后获得赏金\n特殊机制：\n只有鸭子能看到你名字旁的钱袋子图标 鸭子只有单独和你在一起时才能杀你 如果你和好人抱团，鸭子杀你时会被挡刀 玩法建议：\n找好人抱团：安全+挡刀双赢 也可以单走：鸭子看不到钱袋子就不一定知道你是肉汁 完成任务优先：增加赏金的同时也在为团队做贡献 利用身份：可以故意暴露身份吸引鸭子 9. 网红 📱 技能：被杀时所有鹅会收到死亡通知\n特殊机制：\n只有鹅能看到通知 鸭子和中立角色看不到 玩法建议：\n利用通知机制：你的死亡是团队的重要信息 会议上利用信息：问别人\u0026quot;网红什么时候死的\u0026quot;能测出阵营 高风险高回报：你是鸭子的优先目标 测试技巧： 会议上问：\u0026ldquo;网红第几轮死的？\u0026rdquo;\n答不出来或答错 → 可能是鸭/中立 答对了 → 可能是鹅 10. 宾葬员 技能：可以查验死亡玩家的职业\n玩法建议：\n先验后报：发现尸体先验职业，听到成功音效再报告 会议信息优势：可以直接告诉大家死者职业 注意时间：验尸需要时间，小心被杀 11. 复仇者 👁️ 技能：目睹杀人现场后短时间内获得击杀能力\n玩法建议：\n跟随可疑人员：尽量跟着你觉得有问题的人 目睹杀人：看到有人杀人后立即反击 时间窗口很短：击杀能力只有几秒钟，要快 12. 超能力 ⚡ 技能：阻止破坏后，鸭子能看到你的位置\n玩法建议：\n主动修破坏：你是团队的破坏抵抗者 注意暴露：修完破坏后位置会被鸭子知道 地下室地图限制：只能阻止千里眼和心灵感应破坏 🛡️ 辅助类鹅角色 13. 保镖 技能：保护特定玩家直到游戏结束，获得奖励金币\n玩法建议：\n选择可信目标：保护你确信是鹅的人 全程跟随：不能让目标离开你的视线 牺牲精神：必要时替目标挡刀 14. 政治家 技能：在监狱中无法被投票关押\n玩法建议：\n免疫监狱：不用担心被投票进监狱 可以大胆发言：不用担心被关禁闭 15. 锁匠 技能：可以打开监狱门\n玩法建议：\n救援被关玩家：可以救出被投票进监狱的队友 战略意义：在某些地图中非常重要 🦆 鸭阵营（坏人）详细解析 🔪 核心鸭角色 1. 杀手（普通鸭） 技能：击杀特定玩家可在游戏结束时获得奖励\n玩法建议：\n伪装成普通鹅：不要暴露你的鸭子身份 混在人群中：和鹅一起做任务、开会发言 找机会暗杀：单独相处时果断出手 破坏配合：配合其他鸭子的破坏行动 2. 刺客 🎭 技能：会议投票阶段可猜测角色并击杀，猜错自己死\n玩法建议：\n收集信息：观察谁声称什么身份 会议刺杀：投票阶段是黄金机会 高风险高回报：猜错会死，需要准确判断 注意警长：刺杀警长特别危险 刺杀技巧：\n刺杀声称加拿大鹅的人（如果他说谎） 刺杀行为可疑的人 刺杀发言过于强势或过于安静的人 3. 专业杀手 技能：杀人后无法自我报告，尸体不会立即显示\n特殊机制：\n杀人后其他鹅看不到尸体 鹅靠近尸体时会自动报告 杀加拿大鹅不会自动报告 玩法建议：\n杀完就跑：尸体不会立即被发现 利用时间差：可以在杀人后制造不在场证明 加拿大鹅克星：你可以无声解决掉加拿大鹅 4. 食人族 技能：每局可吃一具尸体，尸体消失无法报告\n玩法建议：\n毁尸灭迹：吃掉尸体可以阻止会议召开 关键时机使用：只能用一次，选择合适的尸体 配合行动：和其他鸭子配合，吃掉关键证人 5. 爆炸王 💥 技能：可以在其他玩家身上安放炸弹，倒计时结束爆炸\n玩法建议：\n安放炸弹：在人群密集或关键玩家身上安放 时间差攻击：安放后可以假装无辜 连锁反应：可以一次炸死多人 注意：炸死加拿大鹅不会报告 6. 连环杀手 技能：连续击杀三名玩家后会暴露身份\n玩法建议：\n快速连杀：在暴露前尽量多杀 时间窗口：要在短时间内完成三连杀 高风险高回报：三杀后身份暴露，需要快速完成剩余目标 7. 静音 🔇 技能：每次会议可以让一名玩家禁言\n玩法建议：\n禁言关键玩家：禁言那些推理能力强的人 会议控制：减少对方的信息输出 配合刺客：禁言后刺客更容易猜中身份 8. 身份窃贼 技能：杀人后会变成受害者的外观\n玩法建议：\n完美伪装：杀人后变成受害者，完美伪装 制造混乱：让鹅阵营无法确认谁是谁 开会前杀人：在会议前杀人，开会时你已经变身 9. 模仿鸭 技能：可以冒充另一个玩家，外观完全相同\n玩法建议：\n制造双重身：变成某个玩家的样子 混淆视听：让鹅阵营无法确认真身 配合发言：模仿目标玩家的说话方式 10. 告密 技能：可以在会议中看到谁投票给了谁\n玩法建议：\n收集投票信息：了解每个人的投票倾向 找出关键玩家：看看谁投给谁，分析阵营 混淆视听：可以故意传播错误信息 11. 承办丧葬者 技能：可以以较慢速度拖动尸体\n玩法建议：\n转移尸体：把尸体拖到隐蔽位置 延迟发现：延缓尸体被发现的时间 配合行动：为其他鸭子争取时间 12. 间谍 技能：可以在会议中看到谁在完成任务\n玩法建议：\n找出任务狂：知道谁在做任务 破坏配合：可以针对性地破坏任务区域 信息优势：了解哪些鹅正在活跃 13. 窃贼 技能：可以在开局时偷取一个角色的能力\n玩法建议：\n选择目标：偷取有用的技能 双重身份：你有鸭子的能力和偷来的能力 战略选择：偷什么能力取决于局势 14. 雇佣杀手 技能：可以雇佣其他玩家为你杀人\n玩法建议：\n借刀杀人：让别人替你做脏活 转移嫌疑：杀人的人不是你 经济系统：需要考虑成本 15. 忍者 技能：可以在隐身状态下杀人\n玩法建议：\n无形杀手：杀人时没人能看到你 完美犯罪：制造完美的不在场证明 冷却时间：注意技能冷却 🕊️ 中立阵营详细解析 中立阵营是游戏中最具变数的存在，他们不属于鹅也不属于鸭，有各自独立的胜利条件。\n🎭 独立胜利角色 1. 呆呆鸟 🤡 胜利条件：被投票出局\n玩法建议：\n装作鸭子：表现出可疑行为 误导推理：发言时故意自相矛盾 不要被刀：被刀不算胜利，必须被投票 演技很重要：要可疑但不能太可疑（直接被刀就输了） 进阶技巧：\n不要开局就太明显，中后期发力 可以声称自己是某个身份然后露出破绽 和真正的好人争论，制造混乱 2. 鸽子 🐦 胜利条件：感染所有玩家\n玩法建议：\n秘密感染：接近其他玩家进行感染 避免被发现：不要让鹅/鸭发现你的意图 注意刺客：刺客可以在会议上刺杀你 时间竞赛：在会议前感染尽可能多的人 感染技巧：\n跟随玩家，不要引起怀疑 在人多的时候更容易感染 感染后继续伪装成普通玩家 3. 秃鹫 胜利条件：吃掉一定数量的尸体\n玩法建议：\n寻找尸体：跟随鸭子，等他们杀人 速度要快：尸体被发现会议召开前要吃掉 避免被发现：不要让活着的人看到你吃尸体 数量目标：根据游戏设置，通常需要吃 3-5 具尸体 注意：如果会议召开，所有尸体都会消失\n4. 鹈鹕 🐦 胜利条件：活到最后\n技能：可以吞下玩家，被吞下的玩家在会议前不会死亡\n玩法建议：\n缓慢吞噬：一次吞一个，逐步减少人数 避免会议：会议会释放所有被吞的人 伪装成普通鹅：不要暴露你的鹈鹕身份 团队合作：前期可以和鹅阵营合作 进阶技巧：\n在游戏后期开始吞噬 吞噬后继续做任务，伪装成普通玩家 注意警长和正义使者，他们可能优先针对你 5. 猎鹰 技能：可以杀死任何玩家，如果你杀了鹅则变为鸭\n玩法建议：\n灵活转换：根据局势选择阵营 后期发力：前期保持中立，后期选择有利阵营 信息收集：观察各方实力后再决定 6. 恋人 💕 胜利条件：你和爱人都在最后三人中存活\n特殊机制：\n恋人可以是鹅+鸭、鹅+鹅、鸭+鸭的组合 一方死亡，另一方也会死亡 如果是鹅+鸭，你们需要杀死所有其他人 玩法建议：\n保护爱人：无论对方阵营如何 特殊配合：如果是鹅+鸭，你们是超级强力组合 注意警长：警长刀爱人会双死 7. 冒险家 技能：可以在地道、通风系统中生存更久\n玩法建议：\n利用环境：在地道/通风中更安全 生存专家：你的目标是活到最后 灵活应变：根据局势调整策略 8. 派对 技能：可以让玩家变小\n玩法建议：\n制造混乱：让玩家变小后更难被观察 战略变形：可以让自己变小躲避追杀 团队干扰：干扰对方的观察和行动 9. 星界 技能：可以在地图间传送\n玩法建议：\n快速移动：瞬间传送到其他区域 逃脱追杀：被追杀时可以传送逃离 信息收集：快速查看地图各处情况 🎯 高级策略与技巧 会议发言技巧 ┌──────────────────────────────────────────────┐ │ 好人阵营发言原则： │ │ ✓ 报告你的观察和行动 │ │ ✓ 分享时间线和位置信息 │ │ ✓ 推理分析可疑行为 │ │ ✗ 不要随意跳身份（除非必要） │ │ ✗ 不要盲目跟随他人投票 │ ├──────────────────────────────────────────────┤ │ 鸭子阵营发言原则： │ │ ✓ 模仿好人发言方式 │ │ ✓ 适度参与推理，不要过于突出 │ │ ✓ 必要时主动提供信息获取信任 │ │ ✗ 不要过于沉默或过于活跃 │ │ ✗ 不要和已暴露的鸭子过度互动 │ └──────────────────────────────────────────────┘ 各角色优先级分析 鹅阵营重要性排序：\n警长/正义使者（主动击杀能力） 侦探/通灵者（信息收集） 加拿大鹅/网红（死亡通知） 工程师/肉汁（特殊能力） 鸭阵营重要性排序：\n刺杀（会议刺杀能力） 专业杀手（隐蔽杀人） 爆炸王（范围伤害） 身份窃贼（伪装能力） 中立阵营威胁度排序：\n鸽子（感染扩散快） 鹈鹕（吞噬能力强） 秃鹫（依赖尸体） 呆呆鸟（依赖投票） 📝 结语 《鹅鸭杀》的魅力在于每个角色都有独特的玩法和策略。掌握所有角色的技能和玩法，不仅能让你拿到任何角色都能应对自如，还能更好地理解游戏机制，预判对手的行动。\n记住：\n鹅阵营：信息收集 + 团队协作是关键 鸭阵营：伪装隐蔽 + 精准打击是核心 中立阵营：见机行事 + 独立发展是根本 最后建议：多玩多练，每个角色都有其深度。当你能够熟练运用每个角色的技能时，你就是真正的鹅鸭杀高手了！\n文章信息：\n写作日期：2026-02-26 游戏版本：v2.03+ 角色总数：45+ 你最喜欢的角色是哪个？欢迎在评论区分享你的玩法心得！\n","permalink":"https://www.wangyunqing.top/posts/goose-goose-duck-guide/","summary":"\u003ch2 id=\"-开篇为什么鹅鸭杀如此迷人\"\u003e🎮 开篇：为什么鹅鸭杀如此迷人？\u003c/h2\u003e\n\u003cp\u003e《鹅鸭杀》（Goose Goose Duck）是一款融合了狼人杀与 Among Us 玩法的社交推理游戏。与同类游戏相比，它最大的特色就是\u003cstrong\u003e角色系统极其丰富\u003c/strong\u003e——目前游戏中有 \u003cstrong\u003e45+ 种角色\u003c/strong\u003e，分为鹅（好人）、鸭（坏人）、中立三大阵营。\u003c/p\u003e\n\u003cp\u003e每个角色都有独特的技能和胜利条件，拿到不同角色，你的游戏体验完全不同。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e社交推理游戏的魅力\u003c/strong\u003e：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e信息不对称带来的心理博弈\u003c/li\u003e\n\u003cli\u003e角色技能打破传统\u0026quot;好人只能被动防守\u0026quot;的设定\u003c/li\u003e\n\u003cli\u003e中立阵营的存在让局势更加复杂多变\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"-游戏基础与阵营介绍\"\u003e📊 游戏基础与阵营介绍\u003c/h2\u003e\n\u003ch3 id=\"三大阵营一览\"\u003e三大阵营一览\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e阵营\u003c/th\u003e\n          \u003cth\u003e目标\u003c/th\u003e\n          \u003cth\u003e角色数量\u003c/th\u003e\n          \u003cth\u003e核心玩法\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e鹅（好人）\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e完成所有任务 或 投票淘汰所有鸭子\u003c/td\u003e\n          \u003ctd\u003e20+\u003c/td\u003e\n          \u003ctd\u003e团队协作、信息收集、推理投票\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e鸭（坏人）\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e杀死所有鹅 或 达成特殊胜利条件\u003c/td\u003e\n          \u003ctd\u003e15+\u003c/td\u003e\n          \u003ctd\u003e暗杀伪装、破坏任务、混淆视听\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e中立\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e完成各自独特的胜利条件\u003c/td\u003e\n          \u003ctd\u003e10+\u003c/td\u003e\n          \u003ctd\u003e独立发展、见机行事、搅局搅动\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch2 id=\"-鹅阵营好人详细解析\"\u003e🦢 鹅阵营（好人）详细解析\u003c/h2\u003e\n\u003ch3 id=\"-核心鹅角色\"\u003e🎯 核心鹅角色\u003c/h3\u003e\n\u003ch4 id=\"1-大白鹅平民\"\u003e1. 大白鹅（平民）\u003c/h4\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e技能\u003c/strong\u003e：无特殊能力，纯粹的好人\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e玩法建议\u003c/strong\u003e：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e开局认真做任务，为团队贡献进度\u003c/li\u003e\n\u003cli\u003e注意观察身边玩家行为\u003c/li\u003e\n\u003cli\u003e发现尸体及时报告，提供目击信息\u003c/li\u003e\n\u003cli\u003e会议上积极发言，分享你的观察\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e获胜关键\u003c/strong\u003e：任务 + 推理，虽然无技能但信息量最大\u003c/p\u003e\n\u003chr\u003e\n\u003ch4 id=\"2-警长\"\u003e2. 警长\u003c/h4\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e技能\u003c/strong\u003e：可无限次击杀任意玩家，但杀错鹅会同归于尽\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e┌──────────────────────────────────────────────┐\n│  警长使用流程：                                │\n│  1. 开局可以适当隐瞒身份                      │\n│  2. 观察可疑行为（跟随、假装做任务）          │\n│  3. 收集一定信息后再出刀                      │\n│  4. 可与正义使者配合试刀                      │\n└──────────────────────────────────────────────┘\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e冷却时间\u003c/strong\u003e：初始 17 秒，后续 20 秒\u003c/p\u003e","title":"鹅鸭杀全角色攻略：45+ 种身份深度解析，从萌新到高手的进阶指南"},{"content":"🎭 开篇：一场讽刺的\u0026quot;首发\u0026quot; 2026 年 2 月 12 日，智谱 AI 正式发布并开源了 GLM-5——这款号称\u0026quot;在真实编程场景的使用体感逼近 Claude Opus 4.5\u0026quot;的旗舰模型。\n按理说，这该是智谱自家 Coding Plan 订阅用户欢庆的日子。然而现实却上演了一出黑色幽默：\n第三方平台阿里云的 Lite 用户已经用上了 GLM-5，而智谱自家平台的 Lite 用户还在\u0026quot;等节后开放\u0026quot;。\n这操作，属实让付费支持智谱的用户感觉自己成了\u0026quot;小丑\u0026quot;。\n📊 事实对比：谁更快？ 阿里云 Coding Plan 项目 详情 GLM-5 上架时间 2026-02-18 Lite 套餐价格 首月 7.9 元 Lite 可用模型 ✅ GLM-5、Qwen3.5、MiniMax M2.5、Kimi K2.5 请求额度 每月 18,000 次 支持工具 Claude Code、Cline、OpenClaw 等 智谱 AI Coding Plan（官方） 项目 详情 GLM-5 发布时间 2026-02-12 Lite 套餐价格 每月 20 元 Lite 可用模型 ❌ GLM-5 待开放 请求额度 每 5 小时约 80 次 prompts 开放策略 Max → Pro → Lite（排队中） 😤 智谱的\u0026quot;三宗罪\u0026quot; 2 月 21 日，智谱发布了一封致歉信，坦承自己犯了三个错误：\n规则透明度不够 GLM-5 灰度节奏太慢 老用户升级机制设计粗糙 信中承认，GLM-5 发布后流量超出预期，扩容节奏没跟上，被迫按等级逐步开放：\n✅ Max 用户：已全面开放 ⚠️ Pro 用户：已开放，但高峰期可能限流 ❌ Lite 用户：将在\u0026quot;节后非高峰期逐步灰度开放\u0026quot; 问题是——春节都过去两周了，\u0026ldquo;节后\u0026quot;到底指哪一天？\n💡 为什么这很讽刺？ 价格倒挂\n阿里云 Lite 首月只要 7.9 元，但能用 GLM-5 智谱 Lite 每月 20 元，反而要排队等 平台倒挂\n第三方平台（阿里云）反而比官方平台更快上线新模型 智谱自家的付费用户，体验不如别家平台的用户 用户分级\n同样是付费用户，被分成三六九等 Lite 用户成了\u0026quot;二等公民\u0026rdquo;，连官方致歉信里都只是顺带一提 🤔 对 Lite 用户的影响 如果你订阅了智谱 Coding Plan Lite，现在的处境确实尴尬：\n┌─────────────────────────────────────────┐ │ 你：付费 20 元/月，官方平台，排队等 │ │ 阿里云用户：付费 7.9 元/月，第三方，已用 │ └─────────────────────────────────────────┘ 扎心对比：\n对比维度 阿里云 Lite 用户 智谱 Lite 用户（你） GLM-5 ✅ 已可用 ❌ 等待中 月费 7.9 元（首月） 20 元 平台性质 第三方 官方 体验 一线同享 排队等候 🛠️ 你可以考虑的方案 申请退款\n智谱致歉信明确表示支持自主申请退款 如果不满当前服务，这是合理选择 转投阿里云\nLite 首月只要 7.9 元 已支持 GLM-5，无需排队 支持多模型自由切换 继续等待\n相信智谱会尽快开放 但\u0026quot;节后\u0026quot;具体是哪天，没人知道 📝 结语 智谱这次 GLM-5 的发布节奏，确实暴露了几个问题：\n资源规划不足： flagship 模型发布，却没准备好对应的算力资源 用户沟通欠缺：Lite 用户至今不知道具体什么时候能用上 平台定位尴尬：官方平台反而落后于第三方平台 对于付费支持智谱的用户来说，这确实是一次令人失望的体验。\n当第三方平台的服务比官方平台更及时、更便宜时，官方平台的竞争力在哪里？这是智谱需要认真思考的问题。\n更新时间：2026-02-26\n数据来源：阿里云开发者社区、智谱 AI 开放文档、东方财富网\n你有订阅智谱 Coding Plan Lite 吗？现在的体验如何？欢迎在评论区分享你的看法。\n","permalink":"https://www.wangyunqing.top/posts/zhipu-glm5-release-analysis/","summary":"\u003ch2 id=\"-开篇一场讽刺的首发\"\u003e🎭 开篇：一场讽刺的\u0026quot;首发\u0026quot;\u003c/h2\u003e\n\u003cp\u003e2026 年 2 月 12 日，智谱 AI 正式发布并开源了 GLM-5——这款号称\u0026quot;在真实编程场景的使用体感逼近 Claude Opus 4.5\u0026quot;的旗舰模型。\u003c/p\u003e\n\u003cp\u003e按理说，这该是智谱自家 Coding Plan 订阅用户欢庆的日子。然而现实却上演了一出黑色幽默：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e第三方平台阿里云的 Lite 用户已经用上了 GLM-5，而智谱自家平台的 Lite 用户还在\u0026quot;等节后开放\u0026quot;。\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e这操作，属实让付费支持智谱的用户感觉自己成了\u0026quot;小丑\u0026quot;。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"-事实对比谁更快\"\u003e📊 事实对比：谁更快？\u003c/h2\u003e\n\u003ch3 id=\"阿里云-coding-plan\"\u003e阿里云 Coding Plan\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e项目\u003c/th\u003e\n          \u003cth\u003e详情\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eGLM-5 上架时间\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e2026-02-18\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eLite 套餐价格\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e首月 7.9 元\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eLite 可用模型\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e✅ GLM-5、Qwen3.5、MiniMax M2.5、Kimi K2.5\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e请求额度\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e每月 18,000 次\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e支持工具\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eClaude Code、Cline、OpenClaw 等\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"智谱-ai-coding-plan官方\"\u003e智谱 AI Coding Plan（官方）\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e项目\u003c/th\u003e\n          \u003cth\u003e详情\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eGLM-5 发布时间\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e2026-02-12\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eLite 套餐价格\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e每月 20 元\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eLite 可用模型\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e❌ GLM-5 待开放\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e请求额度\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e每 5 小时约 80 次 prompts\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e开放策略\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eMax → Pro → \u003cstrong\u003eLite（排队中）\u003c/strong\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch2 id=\"-智谱的三宗罪\"\u003e😤 智谱的\u0026quot;三宗罪\u0026quot;\u003c/h2\u003e\n\u003cp\u003e2 月 21 日，智谱发布了一封致歉信，坦承自己犯了三个错误：\u003c/p\u003e","title":"智谱 GLM-5 发布：自家平台竟落后阿里云，Lite 用户成最大输家？"},{"content":"🎯 开篇：一场预期之上的\u0026quot;炸裂\u0026quot;财报 2026年2月25日，美股盘后，英伟达（NVIDIA）发布了2026财年第四季度财报。\n在市场对\u0026quot;AI泡沫\u0026quot;的质疑声中，英伟达用一份远超预期的成绩单，给出了最有力的回应：\nQ4营收681亿美元，同比增长73% 净利润430亿美元，同比增长94% 下一季度指引780亿美元，碾压市场预期\n这份财报的核心信号：\nAI需求没有放缓，反而在加速 \u0026ldquo;算力=收入\u0026quot;正在成为新经济的基本公式 供应约束是唯一限制增长的因素 📊 财报核心数据一览 整体业绩表现 指标 Q4 2026 同比增长 环比增长 市场预期 营收 $681亿 +73% +20% $659亿 ✅ 净利润 $430亿 +94% +35% $363亿 ✅ 毛利率 75.0% - - - EPS $1.76 - - - 2026财年全年业绩 指标 数据 同比增长 全年营收 $2,159亿 +65% 数据中心营收 $1,937亿 +68% 自由现金流 $970亿 - 💎 各业务板块深度解析 数据中心：绝对的核心引擎 Q4收入：$623亿（同比+75%，环比+22%）\n这是英伟达财报最亮眼的部分：\n┌─────────────────────────────────────────────────────────────┐ │ 数据中心业务构成 │ ├─────────────────────────────────────────────────────────────┤ │ • Compute业务：$513亿（同比+58%，环比+19%） │ │ • Networking业务：$110亿（同比+263%，环比+34%）🔥 │ │ • Grace Blackwell系统占数据中心收入约2/3 │ └─────────────────────────────────────────────────────────────┘ Networking业务暴增263%的背后：\nNVLink 72 scale-up交换机需求爆发 GB200/GB300系统铺开，芯片间互联需求激增 光通信价值量快速提升 这释放了一个关键信号：AI算力正在从单点计算走向集群互联，网络互联成为新的增长引擎。\n游戏业务：稳健增长 Q4收入：$37亿（同比+47%，环比-13%）\n环比下降主要因假日季后渠道库存自然减少 全年收入达$160亿，同比增长41% Blackwell产品需求依然强劲 汽车业务：稳步推进 Q4收入：$6.04亿（同比+6%）\n全年收入$23亿，同比增长39% NVIDIA自驾平台持续获得采用 🔥 黄仁勋的三个核心信号 1. \u0026ldquo;算力=收入\u0026rdquo; — 新经济的铁律 在财报电话会议上，黄仁勋抛出了一个振聋发聩的论断：\n\u0026ldquo;在新AI经济中，计算能力和收入本质上是一回事。\u0026rdquo;\n这一论断直击本质：在AI时代，算力不再是成本，而是生产力的直接体现。没有算力，就没有AI生成的内容；没有AI，就没有新的收入。\n2. Agentic AI 拐点已到 黄仁勋强调：\u0026rdquo;Enterprise adoption of agents is skyrocketing\u0026quot;（企业对智能体的采用正在飙升）\nAI从训练迈向推理 从单点计算走向集群互联 从被动助手走向主动智能体 这是AI的下一波浪潮，而英伟达正站在浪潮之巅。\n3. 中国市场：等待而非放弃 财报明确指出，H200产品尚未获得对华销售许可，但这不影响英伟达的乐观预期：\n一旦监管条件允许，中国区将是额外的增量 海外AI需求已经足够强劲 供应链正在积极协调资源 🚀 未来展望：Q1指引碾压预期 2027财年Q1指引 指标 英伟达指引 市场预期 超预期幅度 营收 $780亿（±2%） $728亿 +7% 关键细节：该指引未考虑中国区收入，一旦恢复对华供货，将是额外增量！\n供应与需求的矛盾 黄仁勋坦言：先进架构产品供应持续受限\n但这不是坏消息 — 这意味着需求远超供给，英伟达的瓶颈是生产而非销售。\n🎨 投资视角：泡沫还是起点？ 华尔街反应 股价当日上涨 +4.21%，收报 $195.65 摩根士丹利持续上调评级 Rubin平台交付节奏比预期更快 支撑股价的逻辑 逻辑 说明 需求确定性 云厂商Capex接近$7000亿/年，仍在加速 技术护城河 Rubin平台相比Blackwell推理成本最多降10倍 生态垄断 CUDA生态无人能及 应用爆发 Agentic AI带来新的算力需求 风险因素 风险 可能性 影响 中国监管 中等 可能损失部分收入 供应约束 高 限制增长上限 竞争加剧 中 AMD/Intel正在追赶 估值压力 高 股价已计入高增长预期 📝 结语：AI时代才刚刚开始 这份财报的意义远超数字本身：\n粉碎AI泡沫论 — 681亿营收、780亿指引，用数据说话 确认新范式 — \u0026ldquo;算力=收入\u0026quot;成为新经济的基本公式 揭示新机会 — Networking业务暴增263%，光通信迎来0到1的规模化元年 展望新未来 — Rubin平台将推理成本再降10倍，AI应用将无处不在 黄仁勋的结论：\u0026ldquo;我们的客户正在竞相投资AI，因为他们看到了机会。\u0026rdquo;\n对于投资者而言，问题不再是\u0026quot;AI是否是泡沫\u0026rdquo;，而是：\n你是否相信，算力将成为新时代的核心生产资料？\n如果你的答案是肯定的，那么英伟达的财报告诉你 — 这个时代才刚刚开始。\n文章信息：\n写作日期：2026-02-26 数据来源：英伟达官方财报、新浪财经、Fortune、每经网 风险提示：本文不构成投资建议，投资者需自行判断风险 你如何看待AI算力的未来？欢迎在评论区分享你的观点！\n","permalink":"https://www.wangyunqing.top/posts/nvidia-q4-2026-earnings/","summary":"\u003ch2 id=\"-开篇一场预期之上的炸裂财报\"\u003e🎯 开篇：一场预期之上的\u0026quot;炸裂\u0026quot;财报\u003c/h2\u003e\n\u003cp\u003e2026年2月25日，美股盘后，英伟达（NVIDIA）发布了2026财年第四季度财报。\u003c/p\u003e\n\u003cp\u003e在市场对\u0026quot;AI泡沫\u0026quot;的质疑声中，英伟达用一份\u003cstrong\u003e远超预期\u003c/strong\u003e的成绩单，给出了最有力的回应：\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eQ4营收681亿美元，同比增长73%\u003c/strong\u003e\n\u003cstrong\u003e净利润430亿美元，同比增长94%\u003c/strong\u003e\n\u003cstrong\u003e下一季度指引780亿美元，碾压市场预期\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e这份财报的核心信号\u003c/strong\u003e：\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAI需求没有放缓，反而在加速\u003c/li\u003e\n\u003cli\u003e\u0026ldquo;算力=收入\u0026quot;正在成为新经济的基本公式\u003c/li\u003e\n\u003cli\u003e供应约束是唯一限制增长的因素\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr\u003e\n\u003ch2 id=\"-财报核心数据一览\"\u003e📊 财报核心数据一览\u003c/h2\u003e\n\u003ch3 id=\"整体业绩表现\"\u003e整体业绩表现\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e指标\u003c/th\u003e\n          \u003cth\u003eQ4 2026\u003c/th\u003e\n          \u003cth\u003e同比增长\u003c/th\u003e\n          \u003cth\u003e环比增长\u003c/th\u003e\n          \u003cth\u003e市场预期\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e营收\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e$681亿\u003c/td\u003e\n          \u003ctd\u003e+73%\u003c/td\u003e\n          \u003ctd\u003e+20%\u003c/td\u003e\n          \u003ctd\u003e$659亿 ✅\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e净利润\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e$430亿\u003c/td\u003e\n          \u003ctd\u003e+94%\u003c/td\u003e\n          \u003ctd\u003e+35%\u003c/td\u003e\n          \u003ctd\u003e$363亿 ✅\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e毛利率\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e75.0%\u003c/td\u003e\n          \u003ctd\u003e-\u003c/td\u003e\n          \u003ctd\u003e-\u003c/td\u003e\n          \u003ctd\u003e-\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eEPS\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e$1.76\u003c/td\u003e\n          \u003ctd\u003e-\u003c/td\u003e\n          \u003ctd\u003e-\u003c/td\u003e\n          \u003ctd\u003e-\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"2026财年全年业绩\"\u003e2026财年全年业绩\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e指标\u003c/th\u003e\n          \u003cth\u003e数据\u003c/th\u003e\n          \u003cth\u003e同比增长\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e全年营收\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e$2,159亿\u003c/td\u003e\n          \u003ctd\u003e+65%\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e数据中心营收\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e$1,937亿\u003c/td\u003e\n          \u003ctd\u003e+68%\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e自由现金流\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e$970亿\u003c/td\u003e\n          \u003ctd\u003e-\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch2 id=\"-各业务板块深度解析\"\u003e💎 各业务板块深度解析\u003c/h2\u003e\n\u003ch3 id=\"数据中心绝对的核心引擎\"\u003e数据中心：绝对的核心引擎\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eQ4收入：$623亿\u003c/strong\u003e（同比+75%，环比+22%）\u003c/p\u003e\n\u003cp\u003e这是英伟达财报最亮眼的部分：\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e┌─────────────────────────────────────────────────────────────┐\n│  数据中心业务构成                                             │\n├─────────────────────────────────────────────────────────────┤\n│  • Compute业务：$513亿（同比+58%，环比+19%）                 │\n│  • Networking业务：$110亿（同比+263%，环比+34%）🔥           │\n│  • Grace Blackwell系统占数据中心收入约2/3                    │\n└─────────────────────────────────────────────────────────────┘\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003eNetworking业务暴增263%的背后\u003c/strong\u003e：\u003c/p\u003e","title":"英伟达Q4财报炸裂：681亿营收击碎AI泡沫论，算力即收入时代来临"},{"content":"你好！欢迎来到我的个人博客。\n我是谁 一名热爱技术的学习者，喜欢记录和分享。\n技能栈 编程语言：Python, C++,JavaScript 前端：HTML, CSS, Vue.js 工具：Git, VS Code AI 工具：Claude, GLM 联系方式 GitHub: wangyunqing7 Email: 2636006556@qq.com 持续学习，持续进步。\n","permalink":"https://www.wangyunqing.top/about/","summary":"\u003cp\u003e你好！欢迎来到我的个人博客。\u003c/p\u003e\n\u003ch3 id=\"我是谁\"\u003e我是谁\u003c/h3\u003e\n\u003cp\u003e一名热爱技术的学习者，喜欢记录和分享。\u003c/p\u003e\n\u003ch3 id=\"技能栈\"\u003e技能栈\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e编程语言：Python, C++,JavaScript\u003c/li\u003e\n\u003cli\u003e前端：HTML, CSS, Vue.js\u003c/li\u003e\n\u003cli\u003e工具：Git, VS Code\u003c/li\u003e\n\u003cli\u003eAI 工具：Claude, GLM\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"联系方式\"\u003e联系方式\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGitHub: \u003ca href=\"https://github.com/wangyunqing7\"\u003ewangyunqing7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmail: \u003ca href=\"mailto:2636006556@qq.com\"\u003e2636006556@qq.com\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cblockquote\u003e\n\u003cp\u003e持续学习，持续进步。\u003c/p\u003e\n\u003c/blockquote\u003e","title":"关于我"},{"content":"强化学习是什么？ 一句话：智能体在环境中通过试错，学习如何最大化长期奖励。\n学习类型 特点 比喻 监督学习 老师直接告诉你答案 看答案书做题 强化学习 老师只给你打分 训练小狗做动作 RL 世界的五大要素（MDP 框架） Agent（智能体） → 决策的大脑（如：马里奥） ↓ Environment（环境） → 规则的制定者（如：游戏关卡） ↓ State（状态） → 智能体看到的\u0026#34;现状\u0026#34;（如：屏幕画面） ↓ Action（动作） → 智能体能做的事（如：按跳跃键） ↓ Reward（奖励） → 环境给的分（如：金币+10，掉坑-100） 要素 含义 例子 Agent 决策的大脑 马里奥、ChatGPT、自动驾驶 Environment 规则的制定者 游戏关卡、物理世界 State 智能体感知的\u0026quot;现状\u0026quot; 屏幕像素、对话历史 Action 智能体能做的事 按跳跃键、生成下一个词 Reward 环境给的即时反馈 金币+10、掉坑-100、用户点赞+1 注意：奖励是评估性的，不是指示性的。它只告诉你结果好坏，不告诉你\u0026quot;最佳操作是什么\u0026quot;。\n核心难题 听起来就是\u0026quot;趋利避害\u0026quot;，那难点在哪里？\n1. 远见 vs 短视（折扣因子 γ） 我们追求的不是单步奖励 Rt，而是回报 Return Gt：\nGt = Rt+1 + γ·Rt+2 + γ²·Rt+3 + \u0026hellip;\nγ（Gamma，0~1）：决定智能体有多\u0026quot;看重未来\u0026quot; γ = 0：极度短视，只在乎眼前的快乐 γ → 1：极度有远见，为未来大奖愿意忍受当下痛苦 2. 信用分配（Credit Assignment） 你下围棋赢了，是因为第 100 步的绝杀，还是第 5 步的布局？\n现在的动作可能导致很久之后才得分（延迟奖励）。\n解决方案：引入价值函数 Value（V 或 Q）\n它充当\u0026quot;预言家\u0026quot;，预测处于当前状态未来能拿多少分 贝尔曼方程：将未来的价值回传给现在 V(s) ≈ R + γ·V(s\u0026rsquo;)\n当前状态的价值 = 现在的奖励 + 打折后的下一状态价值\n3. 探索 vs 利用 类型 含义 比喻 利用 贪婪模式，选已知最优 去那家你已知最好吃的餐厅 探索 冒险模式，尝试新选项 去尝试一家新开的店 RL 必须在二者之间寻找平衡，否则会陷入局部最优。\n三大算法流派 流派 代表 核心逻辑 优缺点 适用场景 Value-based DQN, Q-Learning 算出每个动作的价值 Q(s,a)，选最高的 连续动作（如机器人关节）很难处理 离散动作（游戏、迷宫） Policy-based Policy Gradient 直接输出动作概率分布 π(a|s)，从中采样 天然支持连续动作，但学习慢、方差大 连续动作（机械臂控制） Actor-Critic PPO, A3C, TRPO Actor 输出动作，Critic 打分纠正 结合前两者优点，稳定高效 复杂场景（Dota 2、ChatGPT） Value-based（基于价值） 核心：计算每个状态-动作对的价值 Q(s,a)，然后选价值最高的动作。\n对于每个状态 s： 对于每个可能的动作 a： 计算 Q(s,a) = 期望的未来回报 选择 argmax Q(s,a) 缺点：在连续动作空间（如机器人关节角度）中，计算 argmax Q 非常困难。\nPolicy-based（基于策略） 核心：不计算价值，直接输出动作的概率分布 π(a|s)，从中采样。\n策略网络 π(s) → 动作概率分布 → 采样一个动作 优点：天然支持连续动作\n缺点：\n学习效率低 方差大 容易收敛慢 Actor-Critic（当前主流） 核心：结合前两者的优点\nActor（运动员） → 输出动作 Critic（教练） → 打分，纠正 Actor TD Error（预测误差）的双重作用：\n更新 Critic：让\u0026quot;教练\u0026quot;的眼光更准 更新 Actor：如果 TD Error 为正（表现比预期好），鼓励这个动作；反之抑制 SOTA：当前最强的算法（如 PPO）几乎都是这一派。\nRLHF：ChatGPT 的训练秘密 RLHF（Reinforcement Learning from Human Feedback）是让 GPT 从\u0026quot;能说话\u0026quot;进化到\u0026quot;说人话\u0026quot;的关键。\nGPT 生成文本 → Reward Model 打分 → PPO 更新参数 → 循环 三步走 1. SFT（有监督微调）\n先找人类写好的高质量问答对，让模型学会基本的对话能力。\n2. Reward Model（奖励模型 - RM）\n人类不可能实时给 AI 的每一句回复打分（太慢、太贵）。\n训练一个替身模型来模仿人类的喜好：\n人类给几个回答排序 RM 学习这种排序逻辑 3. PPO（强化学习优化）\n项目 内容 Agent GPT 模型 Environment 奖励模型（RM） 流程 GPT 生成文本 → RM 给出分数 → PPO 更新参数 目的：强行调整 GPT 的概率分布，让它生成的每一个词都更符合人类的价值观和偏好。\n总结 要点 内容 1 Reward 是信号，Value 是预判。真正的高手看的是 Value（长期价值） 2 Value-based 怕连续动作，Policy-based 怕方差大 3 Actor-Critic 是完美的\u0026quot;联姻\u0026quot;，工业界标准（如 PPO）几乎都是这一派 4 RLHF 的本质是用 Reward Model 充当虚拟裁判，通过强化学习对齐人类意图 comments: true\n参考资料 Reinforcement Learning: An Introduction (Sutton \u0026amp; Barto) - 强化学习圣经 Spinning Up in Deep RL (OpenAI) - OpenAI 深度强化学习教程 Introduction to Reinforcement Learning - DeepMind 入门资源 ","permalink":"https://www.wangyunqing.top/posts/what-is-reinforcement-learning/","summary":"\u003ch1 id=\"强化学习是什么\"\u003e强化学习是什么？\u003c/h1\u003e\n\u003cp\u003e一句话：\u003cstrong\u003e智能体在环境中通过试错，学习如何最大化长期奖励。\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e学习类型\u003c/th\u003e\n          \u003cth\u003e特点\u003c/th\u003e\n          \u003cth\u003e比喻\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e监督学习\u003c/td\u003e\n          \u003ctd\u003e老师直接告诉你答案\u003c/td\u003e\n          \u003ctd\u003e看答案书做题\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e强化学习\u003c/td\u003e\n          \u003ctd\u003e老师只给你打分\u003c/td\u003e\n          \u003ctd\u003e训练小狗做动作\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"rl-世界的五大要素mdp-框架\"\u003eRL 世界的五大要素（MDP 框架）\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eAgent（智能体）  → 决策的大脑（如：马里奥）\n       ↓\nEnvironment（环境） → 规则的制定者（如：游戏关卡）\n       ↓\nState（状态）      → 智能体看到的\u0026#34;现状\u0026#34;（如：屏幕画面）\n       ↓\nAction（动作）     → 智能体能做的事（如：按跳跃键）\n       ↓\nReward（奖励）     → 环境给的分（如：金币+10，掉坑-100）\n\u003c/code\u003e\u003c/pre\u003e\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e要素\u003c/th\u003e\n          \u003cth\u003e含义\u003c/th\u003e\n          \u003cth\u003e例子\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eAgent\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e决策的大脑\u003c/td\u003e\n          \u003ctd\u003e马里奥、ChatGPT、自动驾驶\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eEnvironment\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e规则的制定者\u003c/td\u003e\n          \u003ctd\u003e游戏关卡、物理世界\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eState\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e智能体感知的\u0026quot;现状\u0026quot;\u003c/td\u003e\n          \u003ctd\u003e屏幕像素、对话历史\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eAction\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e智能体能做的事\u003c/td\u003e\n          \u003ctd\u003e按跳跃键、生成下一个词\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eReward\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003e环境给的即时反馈\u003c/td\u003e\n          \u003ctd\u003e金币+10、掉坑-100、用户点赞+1\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e注意\u003c/strong\u003e：奖励是\u003cstrong\u003e评估性\u003c/strong\u003e的，不是\u003cstrong\u003e指示性\u003c/strong\u003e的。它只告诉你结果好坏，不告诉你\u0026quot;最佳操作是什么\u0026quot;。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"核心难题\"\u003e核心难题\u003c/h2\u003e\n\u003cp\u003e听起来就是\u0026quot;趋利避害\u0026quot;，那难点在哪里？\u003c/p\u003e\n\u003ch3 id=\"1-远见-vs-短视折扣因子-γ\"\u003e1. 远见 vs 短视（折扣因子 γ）\u003c/h3\u003e\n\u003cp\u003e我们追求的不是单步奖励 Rt，而是\u003cstrong\u003e回报 Return Gt\u003c/strong\u003e：\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGt = Rt+1 + γ·Rt+2 + γ²·Rt+3 + \u0026hellip;\u003c/strong\u003e\u003c/p\u003e","title":"「强化学习」到底是个啥？"},{"content":"🚀 从 GIGO 到精准掌控：解构 Prompt Engineering 的底层逻辑 从 ChatGPT 输出第一行 Hello World，到如今大模型的寒武纪大爆发，生成式 AI 早已不是仅供尝鲜的 Alpha 版玩具。它已经实实在在地嵌入了我们的 IDE、文档流和工作流中，成为了那个不可或缺的 Digital Copilot。\n但承认吧，很多时候这个\u0026quot;超级大脑\u0026quot;并没有想象中那么好用。\n手里拿着同样的 API Key，有人能用它重构工作流，有人却只能用它生成废话。 这中间的差距，不在于你显卡的算力，而在于你如何定义\u0026quot;输入\u0026quot;。\n01. 拒绝 GIGO：自然语言编程 尽管模型参数已经达到了万亿级别，但在交互层面上，人机协作的接口依然复古得像 DOS 时代：一个闪烁的光标，一个极简的输入框。\n这里的底层逻辑依然遵循计算机科学最古老的定律：GIGO (Garbage In, Garbage Out)。\n如果你输入的是模糊的、低信噪比的自然语言，模型吐出来的必然是均值回归的平庸数据。所谓的 Prompt Engineering（提示词工程），剥去\u0026quot;魔法\u0026quot;的外衣，本质上就是用自然语言进行编程。我们要做的，就是如何将脑海中非结构化的抽象想法，编译成机器能完美执行的指令集。\n02. 逆向工程：那个被关在小黑屋的\u0026quot;超级实习生\u0026quot; 在寻找标准公式之前，我们需要先对 LLM（大语言模型）做一次逆向工程，理解它的运行逻辑。\n请想象你的 AI 是一个刚毕业的超级实习生。\n配置：他阅读过互联网上每一字节的文本，知识库过拟合了整个人类文明，算力爆表。 Bug：他被关在一个没有窗户的小黑屋里，严重缺乏常识，且没有\u0026quot;上下文缓存\u0026quot; (Stateless)。 如果你只是对这个实习生丢下一句 sudo make me an article（帮我写篇文章），他此刻的 CPU 是过载的：\n写什么？（缺乏方向向量） 给谁看？（缺乏用户画像） 用什么格式？（缺乏输出协议） 为了避免他给你生成一篇《终结者》式的科幻小说，或者一篇枯燥的数学推导论文，你需要做的不是\u0026quot;许愿\u0026quot;，而是**\u0026ldquo;定义上下文\u0026rdquo;**。\n03. 核心算法：RCTCE 框架 既然我们将 Prompt Engineering 视为一种编程范式，那么一个优秀的 Prompt 本质上就是一个定义良好的 函数 (Function)。\n我们可以将构建 Prompt 的过程看作是封装一个通用的 JSON 配置对象。只要精准填入以下五个核心参数（RCTCE），你的 Prompt 就具备了生产级的健壮性与稳定性。\n🏗️ RCTCE 架构详解\n🔹 R (Role) —— 加载特定类库 (Import Libraries) 定义： 设定 AI 的身份与角色。 核心原理： 类似于在代码开头 import 特定的 Library。通过指定角色，你激活了模型神经网络中特定的权重区域，使其调用该领域专有的知识库与思维模式。\n示例：\n❌ 普通模式： \u0026ldquo;写一个关于心理健康的故事。\u0026rdquo; ✅ RCTCE 模式： \u0026ldquo;你现在是一位拥有 20 年临床经验的认知行为疗法（CBT）专家\u0026hellip;\u0026rdquo; 或 \u0026ldquo;你是一位擅长赛博朋克风格、笔触冷峻的科幻小说家\u0026hellip;\u0026rdquo; 🔹 C (Context) —— 初始化环境变量 (Init Environment) 定义： 提供背景信息、受众画像与前置条件。 核心原理： 类似于初始化全局变量 (Global Variables)。不要让 AI 去\u0026quot;猜测\u0026quot;意图，而应通过注入上下文来收敛模型的推理路径，消除歧义。\n示例：\n背景注入： \u0026ldquo;背景：我正在向一群完全不懂技术的传统行业投资人做路演\u0026hellip;\u0026rdquo; 目标设定： \u0026ldquo;\u0026hellip;我需要向他们解释\u0026rsquo;区块链\u0026rsquo;如何解决供应链金融中的信任问题。\u0026rdquo; 🔹 T (Task) —— 调用核心函数 (Main Function) 定义： 明确、具体的指令任务。 核心原理： 这是函数的主体 (Body)。指令越清晰，执行效率越高。使用精准的动词来驱动 AI 行动。\n示例：\n模糊指令： \u0026ldquo;帮我看看这个。\u0026rdquo; 精准指令： \u0026ldquo;撰写一份项目摘要\u0026rdquo;、\u0026quot;重构这段 Python 代码以提升性能\u0026quot;、\u0026quot;Debug 以下错误日志\u0026quot;、\u0026ldquo;将这段文本翻译为符合 Java 命名规范的注释\u0026hellip;\u0026rdquo; 🔹 C (Constraints) —— 设定校验规则 (Validators \u0026amp; Filters) 定义： 设定输出的边界、格式与限制条件。 核心原理： 类似于代码中的 Assert 断言或过滤器。如果不加限制，模型容易产生幻觉 (Hallucination) 或输出冗余信息。这是确保输出符合\u0026quot;甲方需求\u0026quot;的关键防线。\n示例：\n长度限制： \u0026ldquo;输出长度控制在 200 tokens 以内。\u0026rdquo; 格式规范： \u0026ldquo;结果必须以 Markdown 表格形式呈现。\u0026rdquo; 内容过滤： \u0026ldquo;禁止使用营销号式的夸张排比句。\u0026rdquo; 🔹 E (Examples) —— 少样本学习 (Few-Shot Prompting) 定义： 提供输入输出的范例。 核心原理： 利用少样本学习 (Few-Shot Learning) 机制。直接丢给 AI 一个\u0026quot;标准测试用例\u0026quot;，往往比费尽口舌描述一千遍需求更有效。这能帮助模型通过类比快速收敛到你期望的逻辑结构与语调。\n示例：\n指令： \u0026ldquo;请参考以下范文的逻辑结构、用词风格和情感色彩进行创作：[插入范文]\u0026hellip;\u0026rdquo; ⚡ 伪代码结构演示 将上述理论转化为一个伪代码结构，你的 Prompt 实际上是在编写如下配置：\n{ \u0026#34;Prompt_Function\u0026#34;: { \u0026#34;Role\u0026#34;: \u0026#34;System_Architect\u0026#34;, // 身份：谁在执行？ \u0026#34;Context\u0026#34;: { // 上下文：在什么环境下？ \u0026#34;Target_Audience\u0026#34;: \u0026#34;Junior_Developers\u0026#34;, \u0026#34;Goal\u0026#34;: \u0026#34;Explain_Microservices\u0026#34; }, \u0026#34;Task\u0026#34;: \u0026#34;Write_Documentation\u0026#34;, // 任务：做什么？ \u0026#34;Constraints\u0026#34;: [ // 约束：有什么限制？ \u0026#34;No_Jargon\u0026#34;, \u0026#34;Use_Analogies\u0026#34;, \u0026#34;Format_As_Markdown\u0026#34; ], \u0026#34;Examples\u0026#34;: \u0026#34;Reference_Doc_A\u0026#34; // 示例：参考什么标准？ } } 04. 极速版：三明治封装法 如果你不想每次都写那么复杂的 Config，至少记住这个最简单的 \u0026ldquo;三明治\u0026rdquo; (Header-Body-Footer) 结构，它能解决 80% 的日常需求：\n🍞 上层（Header - 角色与背景）： \u0026ldquo;你是一个 XX 专家，我要给 XX 人看\u0026hellip;\u0026rdquo; 🥩 中层（Body - 核心任务）： \u0026ldquo;请帮我 分析 / 撰写 / 代码实现\u0026hellip;\u0026rdquo; 🍞 底层（Footer - 格式与限制）： \u0026ldquo;要求 XX 字，用 Markdown 格式，不要包含 XX\u0026hellip;\u0026rdquo; 05. Stay Agile：迭代式交互 最后，请记住：Prompting 不是写完即止的代码，它是一次 Agile（敏捷）开发。\n刚才我们推导的过程是一次成型的，但在现实中，最好的提示词往往不是一次 Commit 就成功的。它更像是一个 REPL (Read-Eval-Print Loop) 循环。\n按下回车只是开始。如果输出不理想，就像 Review 代码一样指出问题：\n\u0026ldquo;这一段逻辑太啰嗦，重构一下。\u0026rdquo; \u0026ldquo;刚才那个比喻不恰当，换一个更硬核的。\u0026rdquo; 别把 AI 当成神，把它当成你的结对编程伙伴 (Pair Programmer)。你需要不断地 Code Review 它的产出，直到由你完全掌控全局。\nHappy Prompting. 🖖\n","permalink":"https://www.wangyunqing.top/posts/how-to-write-good-prompts/","summary":"\u003ch1 id=\"-从-gigo-到精准掌控解构-prompt-engineering-的底层逻辑\"\u003e🚀 从 GIGO 到精准掌控：解构 Prompt Engineering 的底层逻辑\u003c/h1\u003e\n\u003cp\u003e从 ChatGPT 输出第一行 Hello World，到如今大模型的寒武纪大爆发，生成式 AI 早已不是仅供尝鲜的 Alpha 版玩具。它已经实实在在地嵌入了我们的 IDE、文档流和工作流中，成为了那个不可或缺的 Digital Copilot。\u003c/p\u003e\n\u003cp\u003e但承认吧，很多时候这个\u0026quot;超级大脑\u0026quot;并没有想象中那么好用。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e手里拿着同样的 API Key，有人能用它重构工作流，有人却只能用它生成废话。\u003c/strong\u003e 这中间的差距，不在于你显卡的算力，而在于你如何定义\u0026quot;输入\u0026quot;。\u003c/p\u003e\n\u003ch2 id=\"01-拒绝-gigo自然语言编程\"\u003e01. 拒绝 GIGO：自然语言编程\u003c/h2\u003e\n\u003cp\u003e尽管模型参数已经达到了万亿级别，但在交互层面上，人机协作的接口依然复古得像 DOS 时代：一个闪烁的光标，一个极简的输入框。\u003c/p\u003e\n\u003cp\u003e这里的底层逻辑依然遵循计算机科学最古老的定律：\u003cstrong\u003eGIGO (Garbage In, Garbage Out)\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e如果你输入的是模糊的、低信噪比的自然语言，模型吐出来的必然是均值回归的平庸数据。所谓的 Prompt Engineering（提示词工程），剥去\u0026quot;魔法\u0026quot;的外衣，本质上就是\u003cstrong\u003e用自然语言进行编程\u003c/strong\u003e。我们要做的，就是如何将脑海中非结构化的抽象想法，编译成机器能完美执行的指令集。\u003c/p\u003e\n\u003ch2 id=\"02-逆向工程那个被关在小黑屋的超级实习生\"\u003e02. 逆向工程：那个被关在小黑屋的\u0026quot;超级实习生\u0026quot;\u003c/h2\u003e\n\u003cp\u003e在寻找标准公式之前，我们需要先对 LLM（大语言模型）做一次\u003cstrong\u003e逆向工程\u003c/strong\u003e，理解它的运行逻辑。\u003c/p\u003e\n\u003cp\u003e请想象你的 AI 是一个刚毕业的\u003cstrong\u003e超级实习生\u003c/strong\u003e。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e配置\u003c/strong\u003e：他阅读过互联网上每一字节的文本，知识库过拟合了整个人类文明，算力爆表。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBug\u003c/strong\u003e：他被关在一个没有窗户的小黑屋里，\u003cstrong\u003e严重缺乏常识，且没有\u0026quot;上下文缓存\u0026quot; (Stateless)\u003c/strong\u003e。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e如果你只是对这个实习生丢下一句 sudo make me an article（帮我写篇文章），他此刻的 CPU 是过载的：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e写什么？（缺乏方向向量）\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e给谁看？（缺乏用户画像）\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e用什么格式？（缺乏输出协议）\u003c/em\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e为了避免他给你生成一篇《终结者》式的科幻小说，或者一篇枯燥的数学推导论文，你需要做的不是\u0026quot;许愿\u0026quot;，而是**\u0026ldquo;定义上下文\u0026rdquo;**。\u003c/p\u003e\n\u003ch2 id=\"03-核心算法rctce-框架\"\u003e03. 核心算法：RCTCE 框架\u003c/h2\u003e\n\u003cp\u003e既然我们将 Prompt Engineering 视为一种编程范式，那么一个优秀的 Prompt 本质上就是一个定义良好的 \u003cstrong\u003e函数 (Function)\u003c/strong\u003e。\u003c/p\u003e","title":"如何写一个好的提示词🤔"},{"content":"你好，世界！ 这是我使用 Hugo + PaperMod 搭建的个人博客的第一篇文章。\n关于这个博客 这个博客使用静态站点生成器 Hugo 构建，托管在 Vercel 上，具有以下特点：\n⚡ 极速加载 - 静态 HTML 页面，秒开体验 🎨 极简设计 - PaperMod 主题，干净清爽 💰 免费托管 - Vercel 提供免费托管服务 📱 响应式 - 完美支持手机、平板、电脑 写在前面 我会在这里分享：\n技术学习笔记 生活随笔 项目记录 希望你能在这里找到有用的内容！\nprint(\u0026#34;Hello, World!\u0026#34;) ","permalink":"https://www.wangyunqing.top/posts/hello-world/","summary":"\u003ch2 id=\"你好世界\"\u003e你好，世界！\u003c/h2\u003e\n\u003cp\u003e这是我使用 \u003cstrong\u003eHugo + PaperMod\u003c/strong\u003e 搭建的个人博客的第一篇文章。\u003c/p\u003e\n\u003ch3 id=\"关于这个博客\"\u003e关于这个博客\u003c/h3\u003e\n\u003cp\u003e这个博客使用静态站点生成器 Hugo 构建，托管在 Vercel 上，具有以下特点：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⚡ \u003cstrong\u003e极速加载\u003c/strong\u003e - 静态 HTML 页面，秒开体验\u003c/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003e极简设计\u003c/strong\u003e - PaperMod 主题，干净清爽\u003c/li\u003e\n\u003cli\u003e💰 \u003cstrong\u003e免费托管\u003c/strong\u003e - Vercel 提供免费托管服务\u003c/li\u003e\n\u003cli\u003e📱 \u003cstrong\u003e响应式\u003c/strong\u003e - 完美支持手机、平板、电脑\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"写在前面\"\u003e写在前面\u003c/h3\u003e\n\u003cp\u003e我会在这里分享：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e技术学习笔记\u003c/li\u003e\n\u003cli\u003e生活随笔\u003c/li\u003e\n\u003cli\u003e项目记录\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e希望你能在这里找到有用的内容！\u003c/p\u003e\n\u003chr\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;Hello, World!\u0026#34;\u003c/span\u003e)\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"欢迎来到我的博客"}]