<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Home on ChangYo&#39;s Blog</title>
    <link>https://changyo.pages.dev/</link>
    <description>Recent content in Home on ChangYo&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 14 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://changyo.pages.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[转载/Repost] 五年</title>
      <link>https://changyo.pages.dev/posts/2026/07/the-five-years/</link>
      <pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/07/the-five-years/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;这篇文章来自站主的一个朋友 @Serendipity&lt;/p&gt;&#xA;&lt;p&gt;This post comes from a friend of blog&amp;rsquo;s owner (ChangYo)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;&#xA;&lt;p&gt;写下这篇文章，其实源于一个颇为巧合的契机。&lt;/p&gt;&#xA;&lt;p&gt;我和站主是高中同学。一次偶然的机会，我得知了这个网站，于是试着询问他，能否在这里刊登我的文章。站主很热情地答应了，而对我来说，这也是一次十分难得的机会。&lt;/p&gt;&#xA;&lt;p&gt;这是我上大学以来第一次认真写作。无论是文字技巧，还是内容与逻辑，想必都还有许多不成熟的地方。但无论如何，我最想做的，只是如实记录自己站在这个人生节点上的所思所感。&lt;/p&gt;&#xA;&lt;p&gt;接下来，我会按照时间顺序，讲述从十六岁到二十岁这五个生日里发生的故事。它们或许算不上多么惊心动魄，却共同构成了我一路走到今天的痕迹。也希望多年以后，当我再次读到这些文字时，还能记起当时的自己。&lt;/p&gt;&#xA;&lt;p&gt;我曾和站主聊起，能否为博客增加音乐播放功能。对我来说，有些旋律一旦与文字相遇，记忆便会拥有更具体的形状。于是，就有了现在这个播放器。&lt;/p&gt;&#xA;&lt;p&gt;我为这篇文章选择的歌曲是 Jake Miller 的《Stay True》。高中时代，他的音乐陪我走过了许多难忘的时刻；而这首歌想要表达的，也恰好是我此刻最想送给自己、送给每一位读者的话：愿我们忠于内心，也始终走在成为更好的自己的路上。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;When no one sees your vision, and no one seems to listen&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;Just stay true, stay true to yourself&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;Stay true, stay true to yourself (Yeah, yeah)&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;When you got bigger plans, but they can&amp;rsquo;t understand&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;Just stay true, stay true to yourself&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;Stay true, stay true to yourself&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>丢掉束缚你的道德感：底层大学生开学第一课</title>
      <link>https://changyo.pages.dev/posts/2026/06/after-entering-university/</link>
      <pubDate>Thu, 25 Jun 2026 16:45:19 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/06/after-entering-university/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;处于最不利地位的阶级&amp;hellip;对于实现命运的途径过于不觉悟，从而促进了自己命运的实现&amp;rdquo;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;写下这篇文章，不仅仅是因为自己在阅读《金榜题名之后：大学生出路分化之谜》这本书时受到深深的震撼，同时也恰逢高考出分的时候，又将有数百万的学生进入大学校园，其中必然有很多人是第一次进入大学。更不要说对于大部分底层大学生，尤其是农村第一代大学生，或许这是他们第一次离开自己的家乡，前往东部或者沿海的大城市。而他们将来遇到的迷茫与挣扎，我大抵也能预料到。&lt;/p&gt;&#xA;&lt;p&gt;我便想，提前写下这篇读后感，既是对我过去两年大学生活的一种反思与和解，也希望自己的经历──无论光鲜或灰暗──能够给后面的晚辈做个参考。倘若你能读到这篇文章，便是我们之间的缘分了。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;大学没有所谓同一起跑线&#34;&gt;大学没有所谓&amp;quot;同一起跑线&amp;quot;&lt;/h2&gt;&#xA;&lt;p&gt;倘若你是家里第一代大学生，我会很不幸地告诉你：你在融入校园生活的过程中会遇到不小的困难，甚至很多时候，你会尝到个中痛苦滋味。&lt;/p&gt;&#xA;&lt;p&gt;在开学典礼上，校长们一定会告诉你，当你们踏入了同一所大学，你们就站在了同一条起跑线上。&lt;/p&gt;&#xA;&lt;p&gt;但事实是：&lt;strong&gt;这是错误的&lt;/strong&gt;。 高考是公平的（很大程度上），但从来没人说过，高等教育也是公平的。&lt;/p&gt;&#xA;&lt;p&gt;当进入大学生活后，你会遇到各种各样的人，从他们的穿着，谈吐和气质上，能够看到他们此前18年经历的缩影。中国社会如此之大，各种各样的原生家庭在每一位学子身上留下了深深的痕迹。也许你一站在人群中，就可以分辨出来：那个人自信潇洒，谈吐流利，是人群的焦点；那个人脑袋机灵，思维敏捷，是氛围的活跃者；那个人活跃好动，善结好友，和任何老师同学都能打成一片&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;你们都拿到了这个大学的录取通知书，&lt;strong&gt;但有的人对大学的环境早就熟悉，有的人却连导航都不会用&lt;/strong&gt;。高等学府会默认你们都已经拥有一些基本的文化技能和视野，只不过这部分内容高考既不考，父母也无奈没有能力教授。&lt;/p&gt;&#xA;&lt;p&gt;用书上的话来说，每个人的家庭的文化资本不同，进入大学时每个人能够调用的“文化工具箱”的丰富度不一样。所以从宏观上来看，农村第一代大学生进入大学后往往都容易陷入一种迷茫，而那些“优势学生”（和来自农村，父母没有上过大学的“劣势学生”相对的概念）却能很快地熟悉当前环境，并更早地利用周围资源为自己早就设想好的生涯规划做准备。&lt;/p&gt;&#xA;&lt;p&gt;这是一个残酷的事实，但我们目前只能接受，无力改变。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;绩点无用论的迷思和精英学生的傲慢&#34;&gt;“绩点无用论”的迷思和精英学生的傲慢&lt;/h2&gt;&#xA;&lt;p&gt;更让人觉得惋惜的，是进入高等学府的农村第一代大学生们对自己为数不多能力的放弃。&lt;/p&gt;&#xA;&lt;p&gt;或许很多人听过各种各样的传言，所谓“上了大学就不用关心成绩了”，“60分万岁！”。当一个从小就一直处在高压的应试教育的学生，在高考结束后听到可以不用再像以前那样竞争角逐分数时，内心总会产生各种想象。仿佛一个自由的可以放任自己随意探索、不必被分数拘束的世界就在眼前。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;对所谓”绩点无用论”的盲目，其实是一种对自己很不负责任的行为。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;很多人只有当发现自己想要的东西，比如奖学金，保研名额，留学机会，学生评优时，才会发现成绩依然是一道门槛。但有的人发现了后，会干脆破罐子破摔；有的人想要弥补，但也会花费不少的精力。&lt;/p&gt;&#xA;&lt;p&gt;一个让人感受到一丝苦涩的事实是，如果我们询问那些精英学生对成绩的看法，&lt;strong&gt;无一例外，他们都会告诉你成绩不重要甚至露出鄙夷和不屑的神情；但与此同时，每个人都紧紧抓着成绩不放手&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;一面不认同，另一面却绝不松手，这种矛盾的现象，其实折射出精英学生的心理：成绩好只是优秀最基础的品质。仅仅是成绩好，不值得自己大肆宣传。&lt;/p&gt;&#xA;&lt;p&gt;这种心理的形成也可以和前文所述的“文化资本”联系起来，这些学生从小生活在文化教育比较丰富的城市，周围每个人都很优秀，好成绩只是一个最基本的门槛，除了好成绩，每个人都必须要有另外一两个绝活，或许才是他们眼中的优秀。&lt;/p&gt;&#xA;&lt;p&gt;但一个难过的事实是：&lt;strong&gt;对很多中西部的高中生而言，努力做到成绩优秀已经是全部&amp;hellip;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;坦诚地分享，我在初入学时也受到这种思想的迷惑。我身边那些十分优秀的同学似乎从来没有表现出对学习十分刻苦的样子，很多时候听到的尽是一些关于学习的风流打趣之语。迷茫的我误以为大家都不太关心自己的学业，大把的课外时间都花在一些奇奇怪怪的校园活动上。直到一个学期后，看见巨大的成绩落差，我才发现，原来他们并不是不关心成绩，相反，他们其实比绝大多数人都关心成绩，只是在他们的眼中，对关心成绩这件事似乎不屑一顾，因为，&lt;strong&gt;好成绩不应该是优秀学生最基本的条件吗？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;道德感是束缚自己的最大阻力之一&#34;&gt;道德感，是束缚自己的最大阻力之一&lt;/h2&gt;&#xA;&lt;p&gt;刚进入大学的农村第一代大学生，对于大学的规则和信息的熟悉度显然不如那些优势学生。但在一些共同的事物上，都能共享一些基本信息，比如：选课时哪个老师给分高，要如何上课多交流给老师留下印象，如何获取复习时的资料。&lt;/p&gt;&#xA;&lt;p&gt;而到了这个方面，其实也就是优势学生和劣势学生区别最大的部分，也是我在大学度过了快两年才慢慢接受的一个思想转变。&lt;/p&gt;&#xA;&lt;p&gt;当听到各种各样的“刷绩点”的技巧或秘籍时，那些高中经历了残酷的应试竞争的学生的第一反应往往是&lt;strong&gt;排斥&lt;/strong&gt;，他们的心理大多类似于这种：“我高中都已经这么累地追求分数了，上了大学难道不可以轻松一点，学一些有意义的知识吗？” 为了刷高绩点而利用技巧去有目的性地选课，和老师套近乎，和上届学长索取资料，在他们看来，是一种&lt;strong&gt;不道德&lt;/strong&gt;的行为。他们更加认为，学习的目的应该是高尚而纯粹的，是为了学习到有用的知识的。&lt;/p&gt;&#xA;&lt;p&gt;然而这种道德感真的需要吗？&lt;/p&gt;&#xA;&lt;p&gt;如果我们来观察那些运用刷分技巧的人，其中占大多数的也是前面所谓的优势学生。他们内心并不这样想。相比于劣势学生，大部分的优势学生对自己的生涯规划都有更早且清晰的认识，当明白了自己将来做什么后，他们对于自己应该在大学获得什么，应该付出多少都有着相对清晰的规划。所以很多时候，刷分这种行为，&lt;strong&gt;对于他们反倒是一种目标清晰且踏实的行动&lt;/strong&gt;，心中并没有太多的道德束缚感，或者说，&lt;strong&gt;对于他们而言，能够达到自己设想的目标，比能不能学到什么真知其实更重要。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这是一个会让”完全空白”进入大学的大学生们难受的事实：进入大学，学习知识并没有那么神圣和重要，或者说，利用大学的资源，实现自己的目标才是最重要的。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;但我希望那些基层出身的大学生能够接受这个事实&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;事实上，中国的高中由于过度追求高考分数，导致很多学生缺少了进入大学前必要的社会教育。在进入大学时的那种还残存下来的“道德感”只是一个侧面的体现。尤其对于底层的大学生来说，很多旧的生活观念与习惯会很大程度上阻碍学生融入大学生活。&lt;/p&gt;&#xA;&lt;p&gt;比如我以前一直觉得陌生人的钱不应该随便收，在农村这是”不干净”，但是在社会上，一个人愿意捐赠给你，是对你的认可，不接受，反而是对自己的不自信和自毁形象；比如，听课或者参与活动就要乖乖听从，这是”听话”，但是在一个相对平等和规则完整的社会里，你可以向老师、向老板提意见甚至索要自己的权利；比如，要与人为善，和街坊邻居保持和睦关系，但其实有人侵犯了你，完全可以翻脸，让他赔偿，得罪一些人也是必要的。&lt;/p&gt;&#xA;&lt;p&gt;但必须承认，这些带着旧生活和原生家庭烙印的思想转变，显然不是那么快就能发生的，一个农村大学生，或许需要经历短则一年，长则整个大学的时间，才能慢慢蜕变。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;自信点其实你也不差&#34;&gt;自信点，其实你也不差&lt;/h2&gt;&#xA;&lt;p&gt;或许看了这么多字，我们能够理解第一代大学生遇到的方方面面的困难。统计数据也表明，在刚进入大学的那几个月里，他们的校园表现（学业，社交等）都普遍弱于那些优势学生。&lt;/p&gt;&#xA;&lt;p&gt;但是上帝给你关了一扇门，自然会给你开一扇窗。&lt;/p&gt;&#xA;&lt;p&gt;我并不是想要表达第一代大学生们有什么优势，因为事实的真相也并不美好。但我希望能够，&lt;strong&gt;多一些勇气&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;如果高考的难度近似的话，那么在恶劣环境下出来的学生，其潜质其实并不会比优势学生差多少，很多时候，我们是被自己内心的自卑打倒了。&lt;/p&gt;&#xA;&lt;p&gt;对自己的长相和谈话技巧自卑，所以不敢社交和面试；对自己的组织能力自卑，所以不敢参与活动的核心部门；对自己的英语能力自卑，所以不敢考虑出国深造&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;这些自卑有很多都是第一代大学生进入校园后会遇到的，也确实有不少人在连续的自卑下被击垮。&lt;/p&gt;&#xA;&lt;p&gt;但与其害怕自己本就接近“一无所有”的失败，倒不如鼓起勇气和那些你害怕的人比一比，拼一拼。你也许会发现，当自己也全力准备时，其实发挥出来的水平并不差多少，甚至你的坦率还能成为一种特质。&lt;/p&gt;&#xA;&lt;p&gt;当然这个过程也并不容易，必然是会有各种各样的失败，而能不能从失败中站起来，取决于内心的改变欲望了。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;讲了这么多，既是提前对《金榜题名之后：大学生出路分化之谜》的读后总结，也是借此回顾自己过去两年大学生活的心路历程。&lt;/p&gt;&#xA;&lt;p&gt;这是一本很好的书，可惜的是我到现在才开始阅读。倘若你是一位刚刚高考完的读者，我会十分建议你去阅读。&lt;/p&gt;&#xA;&lt;p&gt;关于大学你总是可以听到各种各样的价值话语，有人会觉得这个重要，有人觉得那个重要，但你究竟最终想要做什么，只有你才能最清楚。&lt;/p&gt;&#xA;&lt;p&gt;读完这篇文章，或许会有人觉得我描述得太残酷了，仿佛那些底层的大学生似乎还要重复高中那样的生活。其实并不是的，我想表达的，其实就和这本书一样：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;你需要为你自己负责。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;很多人进入大学会非常迷茫，靠着参加各种各样的活动来避免思考，看似丰富，实则空虚，当临近毕业时，依然不知道自己人生下一步该怎么办，只能被迫地前进和生活。事实上，尽早找到自己的目标，并为之做规划，踏实地前进，才是对自己人生最大的负责。除非，你的家人早就为你铺好后路。&lt;/p&gt;&#xA;&lt;p&gt;或者我们可以说的更直接一些：大家都是成年人了，在地球online的世界里，每个人都会找到自己想做的事，当你找到了你想做的事并投入其中时，何必在意别人呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>温和地走进量子力学的凉夜</title>
      <link>https://changyo.pages.dev/posts/2026/06/introduction-to-quantum-mechanics/</link>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/06/introduction-to-quantum-mechanics/</guid>
      <description>&lt;p&gt;话说19世纪末，人们对光的本质争论不休——它究竟是粒子还是波？各家自有其说法，更重要的是，都能拿出大量的实验事实来支撑自己的理论。&lt;/p&gt;&#xA;&lt;p&gt;而在”波粒之争”的另一端，量子力学的雏形刚刚显现。物理学家 &lt;strong&gt;普朗克&lt;/strong&gt; 在研究微观世界时，提出了一个颠覆性的理论，同时也得出了一些著名的公式，例如电磁波的能量和动量关系：&lt;/p&gt;&#xA;$$&#xA;E=\h \nu \\&#xA;p=\h / \lambda&#xA;$$&lt;p&gt;这两个公式看似与波粒之争毫无关联，却被一个名为 &lt;strong&gt;德布罗意&lt;/strong&gt; 的年轻人牵了红线。&lt;/p&gt;&#xA;&lt;h2 id=&#34;物质波的诞生&#34;&gt;物质波的诞生&lt;/h2&gt;&#xA;&lt;p&gt;德布罗意提出了一个极其大胆的想法：既然电磁波有波长，为什么实物粒子就不能有波长呢？&lt;/p&gt;&#xA;&lt;p&gt;于是他硬生生将普朗克的公式换了过来，直接给出了 &lt;strong&gt;物质波&lt;/strong&gt; 的计算公式：&lt;/p&gt;&#xA;$$&#xA;\lambda = h / p&#xA;$$&lt;p&gt;学哲学的人似乎总在思想上比别人更抽象一些。德布罗意的猜想一经提出，便轰动了整个物理学界，人们纷纷想尽办法来验证这个猜想的正确性。&lt;/p&gt;&#xA;&lt;p&gt;而后面的 &lt;strong&gt;薛定谔&lt;/strong&gt;，则利用这个猜想推导出了那个名垂千古的方程。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;波动方程的诞生&#34;&gt;波动方程的诞生&lt;/h2&gt;&#xA;&lt;p&gt;在当初，人们对于光的本质的争执最终得出了光的波粒二象性。也就是说，你在某些情况下可以把它理解为粒子，运用传统的几何光学；在某些情况下也可以把它看成波，用已经建立好的波动学理论。&lt;/p&gt;&#xA;&lt;p&gt;对于一个向右传播的简谐波，人们很早就知道可以表达为以下形式：&lt;/p&gt;&#xA;$$&#xA;\Phi (x,t) = e^{i(kx-\omega t)}&#xA;$$&lt;p&gt;而根据普朗克公式我们又知道：&lt;/p&gt;&#xA;$$&#xA;E = \hbar \omega \qquad p = \hbar k&#xA;$$&lt;p&gt;代入波的表达式中，就得到如下式子：&lt;/p&gt;&#xA;$$&#xA;\Phi (x,t)=e^{\frac{i}{\hbar} (px-Et)}&#xA;$$&lt;p&gt;薛定谔对这个式子运用了一些数学技巧——求导，从而得到了动能和总能量 $E$ 的表达式：&lt;/p&gt;&#xA;$$&#xA;\frac{\partial \Phi}{\partial t} =- \frac{i}{\hbar} E \Phi \\&#xA;~~ \\&#xA;\frac{\partial ^2 \Phi}{\partial x^2} = - \frac{2m}{\hbar ^2} \frac{p^2}{2m} \Phi&#xA;$$&lt;p&gt;看，能量 $E$ 和动能 $\dfrac{p^2}{2m}$ 就这样被我们逼出来了！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anger</title>
      <link>https://changyo.pages.dev/gallery/anger/</link>
      <pubDate>Mon, 15 Jun 2026 22:14:28 +0800</pubDate>
      <guid>https://changyo.pages.dev/gallery/anger/</guid>
      <description></description>
    </item>
    <item>
      <title>AI</title>
      <link>https://changyo.pages.dev/gallery/ai/</link>
      <pubDate>Mon, 15 Jun 2026 22:13:52 +0800</pubDate>
      <guid>https://changyo.pages.dev/gallery/ai/</guid>
      <description></description>
    </item>
    <item>
      <title>Heart Like Storm</title>
      <link>https://changyo.pages.dev/gallery/heart-like-storm/</link>
      <pubDate>Mon, 15 Jun 2026 12:00:00 +0800</pubDate>
      <guid>https://changyo.pages.dev/gallery/heart-like-storm/</guid>
      <description></description>
    </item>
    <item>
      <title>Waiting</title>
      <link>https://changyo.pages.dev/gallery/waiting/</link>
      <pubDate>Mon, 15 Jun 2026 12:00:00 +0800</pubDate>
      <guid>https://changyo.pages.dev/gallery/waiting/</guid>
      <description></description>
    </item>
    <item>
      <title>从动态规划的视角重新理解问题</title>
      <link>https://changyo.pages.dev/posts/2026/06/dynamic-program/</link>
      <pubDate>Sun, 14 Jun 2026 14:54:39 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/06/dynamic-program/</guid>
      <description>&lt;p&gt;最近在复习算法课的知识，有一节内容专门就是讲基于归纳的算法。所谓归纳，其实是数学上的表述，我们也可以成为动态规划，它们的本质，都可以通过状态转移方程来表示。而这篇文章，就是想深入规范地分析一下在常见的问题中，我们究竟如何来列出状态转移方程。&lt;/p&gt;&#xA;&lt;h2 id=&#34;何为状态转移方程&#34;&gt;何为状态转移方程？&lt;/h2&gt;&#xA;&lt;p&gt;顾名思义，状态转移方程其实就是描述不同&amp;quot;&lt;strong&gt;状态&lt;/strong&gt;&amp;ldquo;之间关系的方程。我们看待问题时，不再是之前的线性思维，而是将所有出现的可能看作一个个互相关联的&lt;strong&gt;状态&lt;/strong&gt;。很多时候我们需要的解（比如全局最优，序列最长等等），就藏在某个状态之中。&lt;/p&gt;&#xA;&lt;p&gt;状态，是对问题在某一时刻的&lt;strong&gt;完整描述&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;它必须要满足&lt;strong&gt;无后效性&lt;/strong&gt;。也就是说，未来的决策不会受到到达该状态历史的影响。通俗点说，在做未来的决策时，我们不需要考虑状态是如何形成的，我们只要知道这个状态的情况。&lt;/p&gt;&#xA;&lt;p&gt;这里的描述有点类似于数学中的数学归纳法：假设对于前 n-1 个规模的数据结论成立，在此基础上证明对规模为 n 的数据也成立。&lt;/p&gt;&#xA;&lt;p&gt;一般形式的状态转移方程如下：&lt;/p&gt;&#xA;$$&#xA;dp(state) = opt\left\{dp(pre_state) + cost\right\}&#xA;$$&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;dp&lt;/code&gt;是定义在状态上的值函数，可以代表最优值，可达性&amp;hellip;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;opt&lt;/code&gt;是聚合操作：$max、min、 \sum 、OR$等&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;prev_state&lt;/code&gt;是状态转移来源，必须满足&lt;strong&gt;拓扑序&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;cost&lt;/code&gt;就是从前驱状态转移到当前状态的成本&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;在这里的命名似乎会让人有一种从后往前递归的错觉，在大部分情况下可以这么理解，但其实只要能够满足拓扑序即可（这里相当于吧每个状态理解为了一个节点，形成了一张图）&lt;/p&gt;&#xA;&lt;p&gt;此外还有一个比较重要的参数：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;边界条件&lt;/strong&gt;：用于递归方程的终止，一般也作为算法的起点或终点&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;how-to-write-a-dp-equation&#34;&gt;How to write a DP equation&lt;/h2&gt;&#xA;&lt;p&gt;我们可以以背包问题来描述写状态转移方程的流程。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;定义状态&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;这是一个显然的回答，不过很多人容易和下面的定义值函数语义混在一起。具体来说，状态就是对这个问题的缩小版的信息聚合。我们可以问自己：“在不回看历史的情况下，我需要知道&lt;strong&gt;那些信息&lt;/strong&gt;，才能做出最优决策？&lt;/p&gt;&#xA;&lt;p&gt;在背包问题中，我们需要知道的就是&lt;strong&gt;能够取哪些物品&lt;/strong&gt;，以及&lt;strong&gt;背包剩余容量&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;其实也可以这样理解状态的定义，它就是对原问题的一个复述，只不过有些信息需要改变，而这个需要改变的信息，其实就是我们的状态。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;定义值函数 &lt;code&gt;dp&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;我们必须用&lt;strong&gt;十分精确的自然语言回答清楚，dp(state)代表什么？&lt;/strong&gt;。这是最关键的工作，往往也觉得能否成功写出正确的状态转移方程。例如：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;dp[i][j]&lt;/code&gt;代表只考虑前i件物品，背包容量为j是，能取得的最大值&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;而不是当第i件物品必须放进容量为j的背包时，能取到的最大值。这或许也是一个状态，但是写出状态转移方程却很困难&lt;/p&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;枚举“最后一步决策”&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;枚举最后一步的可能，每一种可能其实就对应着一个子问题，从而对应着一个状态。&lt;/p&gt;&#xA;&lt;p&gt;比如在背包问题中，所谓的最后一步决策只有两种，第i件物品放入背包 和 第i件物品不放入背包。于是这就得到了我们所需要的两中 prev_state。&lt;/p&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;确定边界和拓扑序&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;确保计算 &lt;code&gt;dp(state)&lt;/code&gt;时，所有的 &lt;code&gt;dp(prev_state)&lt;/code&gt;都可以视为已经计算好的，尤其是边界情况，需要手动标注一下。例如 &lt;code&gt;dp[0][j]=dp[i][0]=0&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;这样，我们可以得到0-1背包问题的状态转移方程如下：&lt;/p&gt;&#xA;$$&#xA;dp[i][j] = \max \left\{ dp[i-1][j] , dp[i-1][j-weight[i]] + value[i]\right\}&#xA;$$&lt;h2 id=&#34;不同问题结构下dp方程形式&#34;&gt;不同问题结构下DP方程形式&lt;/h2&gt;&#xA;&lt;p&gt;状态和值函数的定义是十分灵活的，上面的背包问题只是其中一种形式，下面是按照不同的问题结构来分类的一些例题&lt;/p&gt;&#xA;&lt;h3 id=&#34;线性-dp状态沿序列推进&#34;&gt;线性 DP：状态沿序列推进&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;最长递增子序列&lt;/strong&gt;：&lt;/p&gt;</description>
    </item>
    <item>
      <title>《看见》| 怀念那个时代</title>
      <link>https://changyo.pages.dev/posts/2026/06/witness-reading-feelings/</link>
      <pubDate>Tue, 02 Jun 2026 20:07:58 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/06/witness-reading-feelings/</guid>
      <description>&lt;p&gt;昨天终于将柴静老师的《看见》阅读完了，这本书其实总共只阅读了不到七小时，当然不是每个篇章都阅读了，而是从&amp;quot;山西，山西&amp;quot;这一章开始往后阅读的。关于我和这本书的经历后面再慢慢念叨，我更像用这篇文章来记录我的阅读感受。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;柴静老师曾经是栏目《新闻调查》的一名记者，在20年前，她在国内新闻界和其他很多记者一样名气不小。&lt;/p&gt;&#xA;&lt;p&gt;我第一次了解到柴静是通过一门通识课老师给我放的视频，这是柴静老师的一个个人演讲，讲述了她在调查大气污染根源的整个故事。柴静老师的演讲很有深度，通过精心设计的视频切入和自己十分专业的讲述语气，让我在这三个小时过程中，仿佛真的随着她一起前往祖国大地，感受大气污染给中国带来的严重影响。&lt;/p&gt;&#xA;&lt;p&gt;后来，老师又给我们看了柴静老师的一个采访视频，似乎是农村的承包户一直拖欠农民工工资，承包户如今一直招不到人，农民工连过年回家的路费都没有了。这个新闻调查的内容我还印象深刻，但更给我留下印象的，是柴静老师的气质。&lt;/p&gt;&#xA;&lt;p&gt;那种带着一点争强好胜的心理，采访时会不自觉地将自己的内心喜恶通过表情流露出来，说话似乎总是带着一种质问的语气，是我对柴静老师采访时的基本印象。&lt;/p&gt;&#xA;&lt;p&gt;这些特点似乎放在记者身上并不太适合，但是它们确实让新闻采访变得更加有趣。&lt;/p&gt;&#xA;&lt;p&gt;带着这样的基本印象去阅读《看见》，我却意外地发现，它并没有向我想象的那样十分锐利，带着一股锋芒；相反，我似乎看出这是一个经历过种种事件后对自己新闻调查职业生涯的反思和沉淀。&lt;/p&gt;&#xA;&lt;p&gt;在阅读时，我们还是能够感受到柴静老师那种带着一点点偏执的性格，只是阅读到后面，渐渐能够感受到那种成熟：不是那种故作高深，为了可以体现&amp;quot;成长&amp;quot;营造的成熟，而是真正见识了各形各色的人和无数复杂而又无奈的事件后，能够看得更远，能够看见各方的立场和执念的成熟。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;对历史说真话就是对现实说真话&#34;&gt;对历史说真话，就是对现实说真话&lt;/h2&gt;&#xA;&lt;p&gt;《看见》详细讲述了很多采访时的细节和背景资料，在那个言论还比较自由的时代，很多采访时的一些言语总是让人感受到真诚和震撼。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;农村土地是集体所有，不是国有，为什么农村的地，农民的地，要让政府来卖呢？&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;我脑子里什么东西摇了一下，又站住了：&amp;ldquo;别胡想了，&amp;lsquo;任何单位和个人进行建设，需要使用土地的，必须依法申请使用国有土地&amp;rsquo;，这句话是明明白白写在《土地管理法》里的，这里所说的&amp;rsquo;依法申请使用的国有土地&amp;rsquo;，包括&amp;rsquo;国家所有的土地和国家征收的原属于农民集体所有的土地&amp;rsquo;，所以农村集体的土地一旦变成建设土地，就要变成国有土地。你不是背过么？&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;我想停下了，可那个声音不打算停下来：&amp;ldquo;这……合理吗？&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;怎么不合理？&amp;ldquo;思维的惯性立刻回答，&amp;ldquo;立法都是有依据的。这可是根据宪法来的。&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;我心里那个非常细小的声音在问：&amp;ldquo;如果……&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;如果什么？&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;……&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;说吧，如果什么？&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;&lt;strong&gt;如果宪法有问题呢？&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这部分是和陈锡文总理的采访，陈锡文总理是一个十分实事求是且坦诚的人，书中描述，他周围的官员没有一个不是对他敬重的。当时柴静要和他谈论农民的征地问题，这本是一个在其他国家看起来十分正常的交易行为，但是在中国的快速转型中却为社会稳定带来了隐患。&lt;/p&gt;&#xA;&lt;p&gt;很多农民将自己的土地征出后，并没有得到应该有的回报，反而很多人的土地拿不回来了。还有些地方政府想要发展地方经济，但是却在执行过程中有很多不合理的操作，甚至强拆农民的屋子来征用土地。&lt;/p&gt;&#xA;&lt;p&gt;而这些现象的背后，其实都指向一个问题：农民的土地到底归不归国有？&lt;/p&gt;&#xA;&lt;p&gt;中国在宪法里面明确写到：城镇的土地属于国家拥有。&lt;/p&gt;&#xA;&lt;p&gt;但是&lt;strong&gt;农民&lt;/strong&gt;的土地呢？&amp;ldquo;国有土地包括国家所有的土地和国家征收的原属于农民集体所有的土地&amp;rdquo;。也就是说：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;农村集体的土地一旦被征收，就变成了国有土地。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;这合理吗？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;但是似乎是宪法里面写的。&lt;/p&gt;&#xA;&lt;p&gt;但如果&amp;hellip;如果，&lt;strong&gt;宪法有问题&lt;/strong&gt;呢？&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;当时读到这一段时带给我的震撼和反思，比那些海内外的中文时政账号要深远得多。我们中国人一直有着一种集体的文化，在民族历史和革命式宣传的影响下，我们总是潜意识地认为，集体确定的规则，就是对的。&lt;/p&gt;&#xA;&lt;p&gt;如果这个规则的制定，让每一个适用者都参与，我们可以说它大抵是比较合理的；但如果这些规则的对象都不知道它的来源，我们又该怎么处理呢？&lt;/p&gt;&#xA;&lt;p&gt;就像宪法中那句&amp;quot;城镇的土地属于国有&amp;rdquo;，这句话是在文化大革命之后加上去的，当时国家财政紧缺，人口上来了却没地方住，那就干脆改为城市土地国有，这样人就住进去了。但是让拥有地契的居民接受这种法律，在当时竟然没有在社会引起一点动荡。因为在那个时代，&amp;ldquo;私权&amp;quot;的概念让人心生恐惧，接受集体的决定，似乎让自己更加安全。&lt;/p&gt;&#xA;&lt;p&gt;很多时候，现实和历史的遗留问题就是这么让人无奈。我也无意再去争论它们的对错，因为社会的高速发展，让这些遗留问题的每一个微小改动，都能够影响到千家万户。但至少，让我们&lt;strong&gt;对历史说真话&lt;/strong&gt;，这样我们就永远不会高估我们的现实。中国的三农问题永远是根本问题，希望每一个农民将来都能够享受到美好的生活。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;不能再对不起农民。&amp;rdquo;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;结构的力量&#34;&gt;结构的力量&lt;/h2&gt;&#xA;&lt;p&gt;书中还有一个让我十分受启发的观点，是出自陈氓之口：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;你的主题要蕴含在结构里，不要蕴含在直言片语里，要追求整个结构的力量。&amp;rdquo;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;柴静在这之前以为只要尖锐，那么内容就会深刻。但是陈氓却告诉她：&amp;ldquo;不是说你把采访对象不愿意说的一句话套出来叫牛逼，把他和你都置于风险之中，这不叫力量。要是拿掉你这句话，你还有什么？&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;多么智慧的一句话！&lt;/p&gt;&#xA;&lt;p&gt;想起自己有时候讲话，或者是和别人展示什么东西，我都很喜欢去追求那种所谓的&amp;quot;金句&amp;rdquo;。我总是觉得，仿佛必须要加上一两句金句，才能让我的演讲或者展示效果变得深刻，给人留下印象。&lt;/p&gt;&#xA;&lt;p&gt;但这样一厢情愿了不知多少次后，现实沉重地打脸：大部分人其实一般并不会关心你讲了什么金句，即使你将网络上找到的100条世界经典的金句念出来，绝大部分人听完5分钟就忘得一干二净；但是你精心设计的内容结构，那种一步步让观众深入，来体会这种&amp;quot;致知&amp;quot;的过程，会在人心中久久难忘。&lt;/p&gt;&#xA;&lt;p&gt;我还记得上一门主题为移动端大模型的部署及应用的课程时，第一节课老师给我留下的深刻影响。他没有说什么十分深刻的洞见，他只是十分寻常地简单讲解了每个专业名词背后的技术原理，但是我阅读着课件，从训练到量化，到蒸馏和剪枝，再到边云协同和联邦学习，最后是一个实际的应用案例。我似乎心中感受到一种力量，仿佛我只要扎实认真地学完这门课程，我也可以做出这样一个实际的产品。&lt;/p&gt;&#xA;&lt;p&gt;也许，这就是结构的力量。&lt;/p&gt;&#xA;&lt;h2 id=&#34;新闻的未来&#34;&gt;新闻的未来&lt;/h2&gt;&#xA;&lt;p&gt;每当我阅读这本书时，我总是会想象，倘若《新闻调查》的精神还在继续流传，倘若柴静和其他那些同时代的新闻记者还留在中国，我们的新闻，现状如何？&lt;/p&gt;&#xA;&lt;p&gt;这不是一个容易回答的问题，如今新闻的空间在缩减，新闻的质量也在下滑，这其中既有宏观的原因，也是互联网时代发展到后面的一种趋势。即使柴静老师还留在央视，这个节目也未必能逃过&amp;quot;名存实亡&amp;quot;的命运。当初那么多新闻调查的同事，都离开了央视，很大一部分去了海外。他们究竟出于什么选择，又到底预见了什么，我们很难判断。但是我发现，他们很多人在离开后，依然坚持着自己热爱的职业，没有正经的职业，却当起了独立记者。柴静老师在YouTube上开设了自己的个人频道，我常常能够看见她继续关心着社会事件，常常看到她播出采访节目。&lt;/p&gt;&#xA;&lt;p&gt;《看见》这本书虽然看完了一遍，但我知道还有很多是我没有深刻理解的，或许等到我经历了更多，会重读一遍。这篇文章，就当作我人生目前阶段的纪念吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>寻找无向图中的点双连通分量</title>
      <link>https://changyo.pages.dev/posts/2026/05/graph-bcc/</link>
      <pubDate>Tue, 05 May 2026 21:44:40 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/05/graph-bcc/</guid>
      <description>&lt;p&gt;这篇文章会介绍寻找无向图中的点双连通分量算法，由于要用到Tarjan算法相关的前辈知识，建议先阅读&lt;a href=&#34;https://changyo.pages.dev/posts/2026/05/graph-traverse-dg/&#34;&gt;这篇介绍Tarjan算法的文章&lt;/a&gt;再来阅读。&lt;/p&gt;&#xA;&lt;p&gt;双连通分量分为点双连通和边双连通。&lt;/p&gt;&#xA;&lt;p&gt;点双连通是指这个一个无向图的极大子图，删掉任意一个节点后，子图仍然连通。边双连通分量定义类似，就是改为去掉任意一条边。&lt;/p&gt;&#xA;&lt;p&gt;一般在实际应用中，点双连通分量最常用。&lt;/p&gt;&#xA;&lt;p&gt;寻找双连通分量算法最核心的判定法则：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;在DFS过程中，对于边(u, v), low[v] &amp;gt;= dfn[u]&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;如何理解这个条件呢？&lt;/p&gt;&#xA;&lt;p&gt;我们知道low[v]是指顺着v往下走可以到达的最早的节点。如果 low[v] &amp;lt; dfn[v]。就意味着存在一个环，从v点出发可以到达v的上游。&lt;/p&gt;&#xA;&lt;p&gt;而对于边(u, v)，如果low[v] &amp;gt;= dfn[u], 就说明 v &lt;strong&gt;无法跳过&lt;/strong&gt; u 达到更早的祖先，这个时候，u就是一个潜在的&lt;strong&gt;割点&lt;/strong&gt;。一旦u消失，那么v这一部分就和上游节点隔离了。&lt;/p&gt;&#xA;&lt;p&gt;由此可以给出对应的算法框架：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;details class=&#34;code-details my-6&#34;&gt;&#xA;  &lt;summary&gt;Show code (45 lines)&lt;/summary&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060047288464&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060047288464&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Algorithm: Find_vBCC_Components(graph)&#xA;Input: a undirected graph stored in adj&#xA;Output: a array BCC_List where each item is a set of vertices in same BCC&#xA;&#xA;Fn Find_vBCC_Components(graph)&#xA;    init an empty array BCC_List&#xA;    init dfn[], low[] (all set to 0 )&#xA;    init a stack Q&#xA;    init timer=0&#xA;&#xA;    for each vertex u in G:&#xA;        if (dfn[u]==0):&#xA;            DFS_vBCC({G,u,NULL}) // {graph, vertex, parentVetex}&#xA;        endif&#xA;    endfor&#xA;&#xA;    return BCC_List&#xA;&#xA;Procedure DFS_vBCC({G,u,p})&#xA;    timer++&#xA;    dfn[u]=low[u]=timer&#xA;&#xA;    for each vertex v in G.adj[u]:&#xA;        if(v==p):&#xA;            continue  // 跳过指向父节点的边&#xA;        endif&#xA;&#xA;        if(dfn[v]==0):&#xA;            S.push(edge(u, v))&#xA;            DFS_vBCC({G,v,u})&#xA;            low[u]=min(low[u], low[v])&#xA;&#xA;            if(low[v] &amp;gt;= dfn[u]):&#xA;                Start new BCC&#xA;                Repeat:&#xA;                    edge(m,n) = S.pop()&#xA;                    append m,n to BCC&#xA;                Until: (m,n)=(u,v)&#xA;                BCC_List.append(BCC)&#xA;            endif&#xA;        else if (dfn[v] &amp;lt; dfn[u]):  // 找到一条反向边&#xA;            S.push(edge(u, v))&#xA;            low[u]=min(dfn[v],low[u])&#xA;        endif&#xA;    endfor&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;这里的DFS和 Tarjan 算法有个关键的差别：&lt;strong&gt;栈中存储的是边，而不是点。&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>最小代价生成树的Prim算法和Kruskal算法</title>
      <link>https://changyo.pages.dev/posts/2026/05/graph-mst/</link>
      <pubDate>Tue, 05 May 2026 10:22:01 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/05/graph-mst/</guid>
      <description>&lt;p&gt;想象这样一个场景，一个国家要在国内铺设铁路，目标是以最低的成本将几个重要的城市连通起来，确保所有城市都能互相抵达。而如何铺设这些铁路呢？这就是最小代价生成树(MST)的问题。&lt;/p&gt;&#xA;&lt;p&gt;这类问题的解决有两个著名的贪心算法── Prim 算法和 Kruskal 算法。&lt;/p&gt;&#xA;&lt;h2 id=&#34;基于边的贪心策略kruskal-算法&#34;&gt;基于边的贪心策略：Kruskal 算法&lt;/h2&gt;&#xA;&lt;p&gt;一个很容易想到的思路，就是我们不断的取&lt;strong&gt;权重最小&lt;/strong&gt;的边，将各个节点连起来，如果新加入的边会使已有的图形成回路，那就跳过。&lt;/p&gt;&#xA;&lt;p&gt;这就好比将每个节点看成一个岛屿，通过不断合并小岛，最终便可以形成一个新的大陆。而这类合并的操作，我们完全可以通过 &lt;strong&gt;并查集&lt;/strong&gt; 的思路取实现。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;details class=&#34;code-details my-6&#34;&gt;&#xA;  &lt;summary&gt;Show code (21 lines)&lt;/summary&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060047750061&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060047750061&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Algorithm: Kruskal_MST(graph)&#xA;Input: A graph stored in adj&#xA;Output: a edge array mst which forms the MST&#xA;&#xA;Fn Kruskal_MST(G)&#xA;    init an array visited with all set the FALSE&#xA;    init an empty array mst&#xA;    Sort all edges in E in non-decreasing order of weights&#xA;    init DSU structrue // 初始化并查集结构&#xA;&#xA;    for each edge (u, v) in sorted E:&#xA;        if(find(u) != find(v)): // 如果u, v 属于不同的集合，也即它们合并后不会形成环&#xA;            mst.append((u,v))&#xA;            union(u,v)          // 将u,v所在两个集合合并&#xA;        endif&#xA;&#xA;        if(mst.size() == |V| - 1):&#xA;            break               // 包含 |V| - 1 条边后说明MST已生成&#xA;        endif&#xA;&#xA;    return mst&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;h2 id=&#34;基于点的贪心策略prim-算法&#34;&gt;基于点的贪心策略：Prim 算法&lt;/h2&gt;&#xA;&lt;p&gt;和 Kruskal 算法相异却殊途同归的一种思路是选取&lt;strong&gt;最近的点&lt;/strong&gt;，这就是Prim算法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>偶图和稠密图的匹配算法</title>
      <link>https://changyo.pages.dev/posts/2026/05/graph-match-algorithm/</link>
      <pubDate>Mon, 04 May 2026 22:07:59 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/05/graph-match-algorithm/</guid>
      <description>&lt;p&gt;一个图的“匹配”是该图的边的这样一个子集：一条边的顶点不可能出现在另一条边中。&lt;/p&gt;&#xA;&lt;p&gt;由此我们可以得到几个重要概念：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;完美匹配：一个包含了所有顶点的匹配&lt;/li&gt;&#xA;&lt;li&gt;最大匹配：包含边数最多的匹配&lt;/li&gt;&#xA;&lt;li&gt;极大匹配：无法再继续添加边的匹配&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;交替路径&lt;/strong&gt;：从&lt;strong&gt;未匹配节点&lt;/strong&gt;出发，依次经过“非匹配边”、“匹配边”、“非匹配边”……形成的路径&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;增广路径&lt;/strong&gt;：如果一条交替路径的终点也是&lt;strong&gt;未匹配顶点&lt;/strong&gt;，那么这条路径就是增广路径&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;仅仅从定义上，我们可以很容易得出一些包含关系：极大匹配 ⊆ 最大匹配 ⊆ 完美匹配&lt;/p&gt;&#xA;&lt;p&gt;完美匹配是否存在受节点的数量影响，所以我们一般讨论最大匹配。&lt;/p&gt;&#xA;&lt;p&gt;当然，在匹配算法中最重要的概念就是&lt;strong&gt;增广路径&lt;/strong&gt;。它是算法的核心。&lt;/p&gt;&#xA;&lt;h2 id=&#34;偶图匹配&#34;&gt;偶图匹配&lt;/h2&gt;&#xA;&lt;p&gt;为什么从偶图开始？原因是在偶图中形成的环一定是偶数额顶点（或边数），不需要考虑到&lt;strong&gt;奇环&lt;/strong&gt;的情况，便于我们增广路径的分析。&lt;/p&gt;&#xA;&lt;p&gt;即使考虑一般的情况，整个算法的核心思想就是：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;先尽可能的扩大匹配的范围，获得一个极大匹配。&lt;/p&gt;&#xA;&lt;p&gt;然后再反复寻找增广路径，通过将路径中的“匹配边”和“未匹配边”反转，获得新的匹配。&lt;/p&gt;&#xA;&lt;p&gt;直至无法找到增广路径，一个图的最大匹配也就找到了。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;每次找到增广路径时，匹配的边数就会加 1 .&lt;/p&gt;&#xA;&lt;p&gt;所以在设计算法时，我们可以先随机添加边（前提是两个顶点均未匹配）。然后再反复地检查增广路径。&lt;/p&gt;&#xA;&lt;p&gt;关于增广路径的寻找有DFS和BFS两种方法，这里提供DFS版本：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;details class=&#34;code-details my-6&#34;&gt;&#xA;  &lt;summary&gt;Show code (27 lines)&lt;/summary&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060048381064&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060048381064&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Algorithm: Find_Augmenting_Path(graph, vertex, visited, match)&#xA;Input:&#xA;    - A graph stored in adj&#xA;    - a unmatched vertex&#xA;    - a visted array to track visited vertices for current search&#xA;    - a match array where match[v] stores the mate of v&#xA;Output: TRUE if an sugmenting path is found and matching is updated, false otherwise&#xA;&#xA;Fn Find_Augmenting_Path(G, u, visited, match)&#xA;    for each vertex v in G.adj[u]:&#xA;        if (visited[v]==FALSE):&#xA;            visited[v] = TRUE&#xA;&#xA;            if (match[v]==NIL): // v is unmatched, then we find the path&#xA;                match[v] = u    // match u and v&#xA;                return TRUE&#xA;            else:&#xA;                partner=match[v]&#xA;                if(Find_Augmenting_Path(G, partner, visited, match) == TRUE):&#xA;                    match[v] = u // the partner has found a new match, v is free for u&#xA;                    return TRUE&#xA;                endif&#xA;            endif&#xA;        endif&#xA;    endfor&#xA;&#xA;    return FALSE&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;这个过程可以这样用舞伴理解：&lt;/p&gt;</description>
    </item>
    <item>
      <title>有向图的拓扑排序与最短路径问题</title>
      <link>https://changyo.pages.dev/posts/2026/05/graph-topological-sort/</link>
      <pubDate>Sun, 03 May 2026 22:27:38 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/05/graph-topological-sort/</guid>
      <description>&lt;h2 id=&#34;拓扑排序&#34;&gt;拓扑排序&lt;/h2&gt;&#xA;&lt;p&gt;拓扑排序的核心思想，就是&lt;strong&gt;不断消除节点的前置依赖&lt;/strong&gt;，没有前置依赖的节点（也即入度为0的点）的次序，一定先于有前置依赖的点。&lt;/p&gt;&#xA;&lt;p&gt;这为算法的设计提供了入口：先找出所有入度为0的点，然后从图中去掉这些点，在新生成的图中重复以上步骤，直至遍历所有节点。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;details class=&#34;code-details my-6&#34;&gt;&#xA;  &lt;summary&gt;Show code (35 lines)&lt;/summary&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060048865364&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060048865364&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Algorithm: Topological_Sort(graph)&#xA;Input: A directed graph&#xA;Output: A linear ordering of vertices&#xA;&#xA;Fn Topological_Sort(graph)&#xA;    init an empty array in_degree[] (default set to 0)&#xA;    init an empty array topo_order[]&#xA;    init an empty queue Q&#xA;&#xA;    for each vertex u in G&#xA;        for each vertex v in G.adj[u]&#xA;            in_degree[v]++  // 遍历所有节点，建立入度表&#xA;        endfor&#xA;    endfor&#xA;&#xA;    for each vertex u in G&#xA;        if(in_degree[u]==0):&#xA;            Q.enqueue(u)&#xA;        endif&#xA;    endfor&#xA;&#xA;    while(Q is not empty):&#xA;        currentNode=Q.dequeue()&#xA;        topo_order.append(currentNode)&#xA;        for each vertex k in G.adj[currentNode]:&#xA;            in_degree[k]--&#xA;            if(in_degree[k]==0):&#xA;                Q.enqueue(k)&#xA;            endif&#xA;        endfor&#xA;    endwhile&#xA;&#xA;    if (topo_order.size() &amp;lt; |V|):&#xA;        return ERROR(Contains a circle) // 如果含有环，抛出异常&#xA;    else return topo_order&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;拓扑排序最常见的应用之一就是培养计划的课程设定。每一门课都是一个节点，先修要求就是一条有向边。通过拓扑排序，一般能得到一个比较合理的培养计划。当然，如果你的学校的培养计划比较抽象，那就难说了。🙃&lt;/p&gt;</description>
    </item>
    <item>
      <title>强连通分量与Tarjan算法</title>
      <link>https://changyo.pages.dev/posts/2026/05/graph-traverse-dg/</link>
      <pubDate>Sun, 03 May 2026 17:07:58 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/05/graph-traverse-dg/</guid>
      <description>&lt;p&gt;这篇文章主要介绍有向图的一些常见算法，相关的遍历算法其实和无向图思想有很多相同之处，你可以先阅读&lt;a href=&#34;https://changyo.pages.dev/posts/2026/05/graph-traverse-ug/&#34;&gt;这篇文章&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;当边开始带有方向时，很多情况的分析就略显复杂。一般我们最长使用的是DFS,因为我们可以在其中引入“时间戳”(Stamp)概念，方便区分父子关系。&lt;/p&gt;&#xA;&lt;p&gt;在DFS中，边可以被分为四类：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Tree Edge: 遍历时发现的指向未访问节点的边&lt;/li&gt;&#xA;&lt;li&gt;Back Edge: 指向祖先节点的边，这意味着图中可能存在着&lt;strong&gt;环&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Forward Edge: 指向子孙节点的边&lt;/li&gt;&#xA;&lt;li&gt;Cross Edge: 指向既不是祖先，也不是子孙节点的边，例如树中指向兄弟节点的边就属于这一类&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;检测是否有向无环图dag&#34;&gt;检测是否有向无环图(DAG)&lt;/h2&gt;&#xA;&lt;p&gt;这个算法的核心思想就是：&lt;strong&gt;沿着一条有向路径不断前进,将途经的节点存入栈中,如果发现下一个节点已经在栈中,就说明这存在一个环.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;为了方便地反映节点目前的状态，我们定义三种status:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;WHITE: 未被访问&lt;/li&gt;&#xA;&lt;li&gt;GRAY: 当前在栈中&lt;/li&gt;&#xA;&lt;li&gt;BLACK: 访问结束离开栈中&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;details class=&#34;code-details my-6&#34;&gt;&#xA;  &lt;summary&gt;Show code (26 lines)&lt;/summary&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060049515139&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060049515139&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Algorithm: Is_DAG(graph, status)&#xA;Input: A directed graph G, the starting vertex u, and an array which stores the status of each vertex&#xA;Output: boolean value&#xA;&#xA;Fn Is_DAG(Graph, status)&#xA;    mark all vertex in G as WHITE status&#xA;    for each vertex u in G&#xA;        if(status[v]==WHITE) //始终从未访问的节点开始&#xA;            if(Has_Cycle(G,v,status)==true) return false&#xA;        endif&#xA;    endfor&#xA;    return true&#xA;&#xA;&#xA;&#xA;&#xA;Procedure Has_Cycle(G, u, status)&#xA;    status[u]=GRAY&#xA;    for each vertex v in G.adj[u]:&#xA;        if(status[v]==GRAY): return true // 已在栈中，形成一个环&#xA;        else if (status[v]==WHITE):&#xA;            if (Has_Cycle(G, v, status)==true) return true&#xA;        endif&#xA;    endfor&#xA;    status[u]=BLACK //标记为完全处理&#xA;    return false&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;h2 id=&#34;获取强连通分量scc--tarjan-算法&#34;&gt;获取强连通分量(SCC) &amp;ndash; Tarjan 算法&lt;/h2&gt;&#xA;&lt;p&gt;Tarjan 算法是统计有向图中强连通分量数量的高效算法，算法寻找强连通分量的思路和上方一致，但是它另外定义了两个变量来方便判断强连通分量的“根”。&lt;/p&gt;</description>
    </item>
    <item>
      <title>无向图遍历算法及常见应用</title>
      <link>https://changyo.pages.dev/posts/2026/05/graph-traverse-ug/</link>
      <pubDate>Sun, 03 May 2026 16:01:41 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/05/graph-traverse-ug/</guid>
      <description>&lt;p&gt;图结构是数据结构中最复杂的一种结构，而“图”又可以描述日常应用中的绝大多数关系，所以有必要对图结构的一些基本算法有所了解。&lt;/p&gt;&#xA;&lt;h2 id=&#34;广度优先算法-bfs&#34;&gt;广度优先算法 BFS&lt;/h2&gt;&#xA;&lt;p&gt;核心是一个&lt;strong&gt;队列&lt;/strong&gt;这个数据结构，依据FIFO规则.&lt;/p&gt;&#xA;&lt;p&gt;下面是一个非递归版本的伪代码：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060050042366&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060050042366&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Algorithm: BFS()&#xA;Input: A graph and a start vertex&#xA;output: Depend on problem&#xA;&#xA;Function BFS(graph G, vertex node)&#xA;    init an empty queue Q&#xA;    mark node as visted&#xA;    Q.enqueue(node)&#xA;    while(Q is not empty):&#xA;        current=Q.dequeue()&#xA;        for each vertex u in G.adj[current]:&#xA;            if(u is unvisited):&#xA;                mark u as visited&#xA;                Q.enqueue(u)&#xA;            endif&#xA;        endfor&#xA;    endwhile&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;h2 id=&#34;深度优先算法-dfs&#34;&gt;深度优先算法 DFS&lt;/h2&gt;&#xA;&lt;p&gt;核心其实就是将队列换成了&lt;code&gt;栈&lt;/code&gt;：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Holo!</title>
      <link>https://changyo.pages.dev/gallery/holo/</link>
      <pubDate>Sat, 25 Apr 2026 12:00:00 +0800</pubDate>
      <guid>https://changyo.pages.dev/gallery/holo/</guid>
      <description>&lt;p&gt;第一个看起来还不错的视频封面设计。你可以观看这个AE短片：&lt;a href=&#34;https://www.bilibili.com/video/BV14wbhzWEFm/?share_source=copy_web&amp;amp;vd_source=8b55e1dae00622baa9e00f37af05ec66&#34;&gt;【AE练习/狼与香辛料】我可是贤狼——赫萝！&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>反馈校准：打通闭环最后一公里</title>
      <link>https://changyo.pages.dev/posts/2026/03/feedback-adjustment/</link>
      <pubDate>Tue, 24 Mar 2026 14:54:39 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/03/feedback-adjustment/</guid>
      <description>&lt;p&gt;最近读到 &lt;a href=&#34;https://x.com/y0usali&#34;&gt;y0usali&lt;/a&gt; 博主的一篇博客&lt;a href=&#34;https://yousali.com/posts/20260307-closed-loop-thinking/&#34;&gt;《为什么你读了100本书，生活却没什么变化？》&lt;/a&gt;，这篇文章探讨分析了闭环的多个层次，以及利用反馈调节自己认知和方向的重要性，并且提出了“执行-观测-校准”的方法。&lt;/p&gt;&#xA;&lt;p&gt;对我来说，这篇文章不仅仅让我意识到闭环在一个人成功路径中的重要调节作用，也解释了我上学期在学业上那种“看似忙碌，实则盲目”的现实，更进一步的，似乎理解了为什么我到如今都没有建立反馈调节的习惯。&lt;/p&gt;&#xA;&lt;h2 id=&#34;完成不等于结束&#34;&gt;完成不等于结束&lt;/h2&gt;&#xA;&lt;p&gt;一个任务，做完上交，赶在ddl之前，对大多数人来说就是结束。后续的检查，测试，反馈，只有当出现问题，自己需要承担部分责任时，或许才觉得反馈也属于工作的一部分。&lt;/p&gt;&#xA;&lt;p&gt;在我的生活中，最常见的场景就是完成课程的作业了。大学的作业都是自主提交，到达截止时间后也可以有段时间补交。一周后助教会批改好作业，也可能会有习题课，讲解重点错题。&lt;/p&gt;&#xA;&lt;p&gt;而我大部分状态却是，在ddl前赶完作业，然后便屏蔽了后续的消息，甚至是评分的消息发到邮箱，也不敢点开去查看。&lt;/p&gt;&#xA;&lt;p&gt;这种行为的背后，其实就是恐惧。正如博客中所说的：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;难的不是输出，是愿意把判断摊在现实面前。很多人不是做不到闭环，是不愿承受「发现自己错了」的不适感。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;最终的结果显而易见，失去反馈的调节，我永远不知道自己错误与否，且不论知识点正确的认知闭环，就连我的思考方式和思路是否正确这样的方向闭环都没有建立。&lt;/p&gt;&#xA;&lt;p&gt;这就像&amp;quot;飞行员不看仪表盘凭感觉飞，短期可能没事，时间一长方向一定飘&amp;quot;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;从小缺失的校准习惯培养&#34;&gt;从小缺失的校准习惯培养&lt;/h2&gt;&#xA;&lt;p&gt;再深远一点思考，似乎我过去就缺乏“反馈校准”的习惯培养。&lt;/p&gt;&#xA;&lt;p&gt;比如，我们从小学“看图写话”开始，就从来没有教过“修改”自己的文章，试卷上的作文在考完试后几乎就一文不值。而&lt;strong&gt;修改文章本身是一种反馈校准的最佳实践&lt;/strong&gt;，缺少这种训练，无论刷过多少素材，做过多少试卷都只是低水平的重复。&lt;/p&gt;&#xA;&lt;p&gt;另外，人们一般很难接受自己的错误。要培养反馈校准的习惯，就意味着不断地将自己的实践放在现实面前检验。正反馈尚且可以接受，但是负反馈却尤其让人气馁。&lt;/p&gt;&#xA;&lt;p&gt;更别说，比接受自己的失败更痛苦的，是投入精力去纠正这个错误。每一次越是深入分析，就越是会觉得自己之前作出决定的愚蠢，难以自容。与其去纠错，不如撒手不管，至少心理上可能好受一些，这可能是我们遇到错误时的想法。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;闭环不保证成功&#34;&gt;闭环不保证成功&lt;/h2&gt;&#xA;&lt;p&gt;文中还提到一个很有见地的观点：&lt;strong&gt;闭环不能保证成功,但可以提高校准方向的速度.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这个观点一方面让人有些失落，但也另一方面佐证了成功不是一蹴而就的，我们最开始都是随意的探索，漫无目的，但是纠错能力越强的人越能够从反馈中找到正确方向。&lt;/p&gt;&#xA;&lt;p&gt;这种能力是如何培养的呢？或许就是在许多次的从结果中复盘，重新规划而慢慢增强的，对问题更敏锐，对解决路径更熟悉。&lt;/p&gt;&#xA;&lt;p&gt;不同的成功的道路总会出现一些相同的问题，这些问题其实都有很多前人的最佳实践可以借鉴。面对反馈，有的人既不关心也不在乎，有的人虽然关心，却害怕面对失败。&lt;/p&gt;&#xA;&lt;p&gt;很多时候失败不可怕，可怕的是你自以为是地在你认为正确的道路上头也不回地走，找对方向最好，但迷途却不知反，浪费掉的时光与生命最让人可惜。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI Slop: Pseudo-Insights and Our Capacity for Deep Reading</title>
      <link>https://changyo.pages.dev/posts/2026/02/en-ai-slop-and-deep-reading/</link>
      <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/02/en-ai-slop-and-deep-reading/</guid>
      <description>&lt;p&gt;Writing this piece is my attempt at a rough review and reflection on my reading habits over the past few months.&lt;/p&gt;&#xA;&lt;p&gt;Since large language models exploded onto the scene in the second half of last year, Twitter began paying creators, and its recommendation algorithm was open-sourced — the result has been impossible to ignore: more and more articles flooding my timeline.&lt;/p&gt;&#xA;&lt;p&gt;The topics I follow are mostly related to AI technology and its social implications. The former tends to be product announcements from tech companies; the latter, posts from authors I find credible — people whose writing lets me understand how the deepest thinkers on technology, the ones with the longest view of the future, are making sense of AI&amp;rsquo;s rapid breakthroughs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI Slop: 伪洞见与深度阅读</title>
      <link>https://changyo.pages.dev/posts/2026/02/ai-slop-and-deep-reading/</link>
      <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/02/ai-slop-and-deep-reading/</guid>
      <description>&lt;p&gt;写下这篇文章，是想对自己这几个月的阅读状态做一个粗略的回顾和反思。&lt;/p&gt;&#xA;&lt;p&gt;自从去年下半年大模型集中爆发，Twitter开始给创作者&amp;quot;发工资&amp;quot;，并且开源Twitter的推荐算法，我们可以十分明显地感受到，越来越多的文章&lt;strong&gt;充斥&lt;/strong&gt;在我的Timeline上。&lt;/p&gt;&#xA;&lt;p&gt;我平时关注的都是一些和AI技术以及AI带来的社会影响相关的话题，前者主要是一些科技公司的产品发布消息，后者，就是一些可信度比较高的作者写出的Post,透过这些Posts,我能够了解到这些对技术思考最深刻，对未来思考最远的人如何看待当下AI技术的迅猛突破。&lt;/p&gt;&#xA;&lt;p&gt;放在以前，这些博主都是需要自己主动找寻，甚至有时是&amp;quot;可遇而不可求&amp;quot;的。其中一个比较明显的判断方法，就是透过文字，来看穿作者的思想。&lt;/p&gt;&#xA;&lt;p&gt;一个有着深邃思想，有着有趣的灵魂的人，写出来的文字大部分都能够震撼人心，让你一次又一次感觉到&amp;quot;正合我意&amp;quot;；通过每个作者他们各自的文风特点，你可以通过不同的体验来吸收他们的洞见。说的直白一点，&lt;strong&gt;有灵魂的人写出来的文字是有血肉的&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;然而，这种情况现在发生了巨大变化，在AI写作&amp;quot;泛滥&amp;quot;后更甚。&lt;/p&gt;&#xA;&lt;p&gt;就如图片中的朋友所言：&amp;ldquo;浅薄的想法穿上深思熟虑的外衣，模式化的概括伪装成洞察。信号与实质脱钩，每一条信息都变得可疑。&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;我已经记不清自己看过多少这类&lt;strong&gt;标题吸引眼球,文章开头一惊一乍,小标题序号多不胜数,&amp;ldquo;不是&amp;hellip;而是&amp;hellip;&amp;ldquo;四处遍布&lt;/strong&gt;的文章，每次打开这样的文章，我总是能够感受到一刻建立于幻想之上的愉悦──幻想着自己的认知似乎因为这一篇文章的&amp;quot;洞见&amp;quot;而增长大截，幻想着自己又掌握着某种神秘的&amp;quot;富人思维&amp;rdquo;，幻想着自己的所作所为能够在&amp;quot;风荡云激&amp;quot;的社会变革中大有作为。&lt;/p&gt;&#xA;&lt;p&gt;然而事实却是：我没有增长多少知识与能力，这些一篇篇用AI套模版&lt;strong&gt;华丽包装&lt;/strong&gt;起来的劣质文章，用模式化的语句迷惑住了我，&amp;ldquo;浅薄的想法穿上深思熟虑的外衣&amp;rdquo;，我还乐此不疲地寻找着。&lt;/p&gt;&#xA;&lt;p&gt;并且一个可悲的事实是：这种趋势──或者更准确的说&amp;quot;一种污染&amp;rdquo;──只会不断持续下去。&lt;/p&gt;&#xA;&lt;p&gt;对这类文章看的越多，我愈发感觉到自己对AI Slop的厌恶。没有什么深刻的思想，却迫不及待地披上一层&amp;quot;伪洞见&amp;quot;的外衣，这背后的目的，不禁让人唏嘘。&lt;/p&gt;&#xA;&lt;p&gt;浪费自己的时间是一个方面，还有另外一个同样重要的方面，就是深度阅读的能力的渐渐退化。&lt;/p&gt;&#xA;&lt;p&gt;读这些AI劣质文时可以留意一下自己的情绪变化，会发现我们自己的情绪大致是遵循这样一个周期:&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash;&amp;gt; &lt;strong&gt;看见标题&lt;/strong&gt;: 好奇/恐惧/震惊&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash;&amp;gt; &lt;strong&gt;阅读开头部分&lt;/strong&gt;: 紧迫/渴望/兴奋&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash;&amp;gt; &lt;strong&gt;阅读了许多句&amp;quot;不是&amp;hellip;而是&amp;hellip;&amp;quot;&lt;/strong&gt;: 似懂非懂/有所顿悟&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash;&amp;gt; &lt;strong&gt;读到结尾的升华&lt;/strong&gt;: 充满期待/&amp;ldquo;赢学情绪价值&amp;quot;拉满&lt;/p&gt;&#xA;&lt;p&gt;似乎每一句话都在像你揭示这个世界的真面目，似乎每一句话都让你觉得你理解了变革的本质，尤其是最后的升华，我不知道有多少人会像我一样，&lt;strong&gt;在极度的兴奋中竟然品尝到一种&amp;quot;赢学&amp;quot;的美味&lt;/strong&gt;！？&lt;/p&gt;&#xA;&lt;p&gt;然而那些真正有洞见的文章，一定不是让你读得全身像打了激素，或者说至少不会让你的愉悦感出现得如此顺畅的。所谓洞见，大概率是会和一般人的常识相悖，否则也无称为&amp;quot;洞见&amp;quot;的必要。要让读者打破常识，开启新的认知，这其中的思维链和逻辑链必然不会那么容易接受。更多时候，我读到这类文章一般都是前面带着震惊和疑惑的复杂情感，最后在文章的某处点睛之笔下又感受到&amp;quot;柳暗花明&amp;quot;的突破，然后&amp;quot;由点带面&amp;rdquo;，逐渐理解了整套体系。这种情感体验，绝非一些仓促包装的AI劣质文可以提供。&lt;/p&gt;&#xA;&lt;p&gt;也正是如此，我发现连续一个多月读了这些AI Slop后，我对真正值得品味的文章的耐受力下降，看见长文，总是有一种急迫感，&lt;strong&gt;似乎我一直在寻找,寻找那个可以让我一下子就理解世界运行真相的感受&lt;/strong&gt;，至于阅读完之后我的知识的增长，似乎没有那么关心了。&lt;/p&gt;&#xA;&lt;p&gt;写到这不免有点悲哀，未来的网络信息中AIGC的内容将极速增加，即使垃圾内容的比例不变，以AI的生产速度，那也是指数级别的。那些信息海洋中真正值得收藏的、历久弥新的宝物，或许将越来越难以寻找了。&lt;/p&gt;&#xA;&lt;p&gt;在换个角度讲，即使还能保持一定的信息筛查力，我们的阅读能力，深度阅读能力也会不可避免的渐渐下滑。或许，将社交媒体关闭，重新回去阅读那些经典的著作，是目前能够短暂避难的方法吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>理废书有感</title>
      <link>https://changyo.pages.dev/posts/2026/02/some-feelings-after-cleaning-old-books/</link>
      <pubDate>Wed, 04 Feb 2026 15:52:26 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/02/some-feelings-after-cleaning-old-books/</guid>
      <description>&lt;p&gt;今天下午将自己房间的书重新整理一遍。其实在之前就已经整理过一次,不过由于书本实在太多,所以只完成了大概60%,而且相当部分都是随意堆砌。&lt;/p&gt;&#xA;&lt;p&gt;这次我重新整理,顺便将之前乱分类的书籍重新分类,花了差不多一个下午。&lt;/p&gt;&#xA;&lt;p&gt;整理的过程其实挺放松的,一边收纳,一边看看到底是些什么书。&lt;/p&gt;&#xA;&lt;p&gt;绝大部分(将近80%)都是教辅资料,剩下15%都是一些用过的或者很久没有用过的练习本,最后那5%,既不是教辅,又不是本子,但也和高考多多少少有一些联系,比如志愿填报时网上买的几本指导书,一些所谓的高效学习法的书。&lt;/p&gt;&#xA;&lt;p&gt;作为一个已经在大学待了一年半的人,现在回过头来看这些书,不禁感叹:高考这个制度对中国社会的深远影响,不仅仅是教育领域,还有与之相关的教育教培行业,以及再往后,整个产业链条,这些因为高考而存在,也因为高考而维系。&lt;/p&gt;&#xA;&lt;p&gt;高考制度的讨论已经十分多了,普通人最容易感受到的,就是学习压力随着内卷而不断增大,过分的内卷会催生很多不合理的校园制度和校园风气。&lt;/p&gt;&#xA;&lt;p&gt;一个最明显的就是学生的教辅资料越来越多了,而且价钱也并不便宜。这个行业几乎可以说是内卷大环境加剧下为数不多的几个多挣点钱的行业了。&lt;/p&gt;&#xA;&lt;p&gt;更重要的是,家长和学生们对这钱花的心安理得。&lt;/p&gt;&#xA;&lt;p&gt;我记得初中有次去书店买书,当时看着&amp;quot;琳琅满目&amp;quot;的书架──上面摆着五颜六色的教参──身体似乎打了鸡血,竟然天真地想要将它们都刷完,然后就在脑海中天真地幻想着自己刷完这些书后的&lt;strong&gt;博学&lt;/strong&gt;模样。我一口气挑了不下10本,有奥赛试卷,有知识清单式的教辅,还有点自信的买了两本季刊版《意林》😂。&lt;/p&gt;&#xA;&lt;p&gt;在付账时,听到这些书花了300多块,让我心中一惊。但是,我爸什么都没说,默默地给我付了款。&lt;/p&gt;&#xA;&lt;p&gt;只可惜,后来这些书,我只做了或者看了不到一半&amp;hellip;&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;所以这也是我觉得教辅资料这个行业一定经久不衰的另一个原因──不成熟的学生对自己自律能力错误的认识。之前我们都是翻开看一看资料书里面的内容,脑袋略微思考一下;但现在资料书的封面宣传都让人看着心潮澎湃了,不知会有多少学生高估自己的能力呢?&lt;/p&gt;&#xA;&lt;p&gt;在整理的时候,还搜到一本《张雪峰教你填志愿》,没错,就是那个张雪峰出版的官方的书籍。当年高考后对填报志愿一无所知,也不知道去网络寻找资源,所以还挺期待这本书的。但是打开里面一章讲未来最有前途的几个专业时,我看见第一个推荐的就是&amp;quot;&lt;strong&gt;土木工程&lt;/strong&gt;&amp;quot;,这多少在我心里留下了一点不信任感。所幸的是,后来在同学提醒下开始去网络上寻找资源,大致知道自己喜欢的专业,而且填报志愿时我的父母都很尊重我的意见,他们并没有对我的志愿填报留下什么限制,最后进入大学学习至今,发现自己的专业确实没有选错。&lt;/p&gt;&#xA;&lt;p&gt;但并非所有人都能像我一样幸运,信息差和获取信息的能力并不能一下子弥补,所以的确有很多人是相信一些所谓的高考志愿填报书籍或一些讲师的。这一块又可以形成一个规模不小的行业。而维系这个行业的背后,是中国绝大部分高中生在高考后对社会信息的了解几乎为0,而大部分的父母对当下专业的看法是过时的甚至是错误的。在这样的情况下,网络上那些所谓的&amp;quot;志愿填报导师&amp;quot;,就成为了很多人的安慰剂。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;青春&#34;&gt;青春&lt;/h2&gt;&#xA;&lt;p&gt;在整理时,发现试卷极其多,一沓接着一沓的。现在回想高中生活,每天做六七张试卷都不知道是怎么坚持下来的。看到有些试卷上的标记,想起自己高中时有次数学考得十分差劲,差到我没脸上课看着老师。我心里想:要把这张试卷一直留着,就像卧薪尝胆一样每次考数学时就拿出来激励自己。&lt;/p&gt;&#xA;&lt;p&gt;如今那张试卷早就变成灰或者被回收利用去了吧,实际上不到半年那张试卷就找不到了。&lt;/p&gt;&#xA;&lt;p&gt;还有一些试卷,有些题目一直没搞懂,想留着后面慢慢补回来,但往往被后面新来的试卷给掩埋。有时候某张试卷发挥超常,想留下做个纪念,现在也找不到了。&lt;/p&gt;&#xA;&lt;p&gt;我当时肯定想不到,这些在几年前频频让我紧张的试卷,到现在我都懒得看一眼,甚至觉得占空间真想一把火烧了。经历过不知多少次让人悲痛欲绝的低分和春风得意的高分,现在有点难以理解当时的那种激动──反正不是高考嘛。&lt;/p&gt;&#xA;&lt;p&gt;不过,这也算是所谓的&amp;quot;青春&amp;quot;吧。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;该丢则丢&#34;&gt;该丢则丢&lt;/h2&gt;&#xA;&lt;p&gt;整理时发现有很多没有用过的本子,有些甚至是很多年前就买了,但是一直不舍得用,就一直留到现在。不过我现在倒没有那么怜惜了,该扔便扔,留下一身轻松。这也是我很久才明白的道理,在那之前,我总是觉得我的房间,我的宿舍很拥挤,因为我总是脑袋想着很多,看见一个物品我总要去思考它的使用场景,让它至少有那么一点价值,这样我就可以说服自己留着。但到后面,发现负担越来越重,东西繁杂,难以收拾。即便我能够花十二分的精力将它们排列得整齐,一个随便的取用又可以弄得一片狼藉。&lt;/p&gt;&#xA;&lt;p&gt;所以现在,喜欢大道至简,喜欢化多为&amp;quot;一&amp;quot;,比如用iPad后基本只用电子书,去图书馆只要带上手机电脑和Pad便足矣。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;今晚就到此为止吧。看着这堆山一样的书籍,我总是想,如果当时我有点自知之明,对获取网络资源有点了解,我是不是就可以省掉很多钱。但生活没有&amp;quot;如果&amp;quot;,而且换个角度看,这似乎也是对自己的一种早期投资吧,让我在以后对这类消费就变得谨慎了,也许无形中为我省下了大钱。&lt;/p&gt;&#xA;&lt;p&gt;而且最重要的是,让我知道知识的&amp;quot;重量&amp;quot;并不意味着知识的&amp;quot;力量&amp;quot;。即便我将这些山一样的书看完,我对社会的理解也不会有很大的变化,有些知识,必须要自己亲身体会才行。&lt;/p&gt;&#xA;&lt;p&gt;再过一年左右，这些书就可以全部卖掉了，加起来，或许能卖个200块吧。&lt;/p&gt;&#xA;&lt;p&gt;知识啊,在这个时代,是最便宜的,也是最贵的!&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;teaser.webp&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>回望2025:不寻常，AI和 __ 想</title>
      <link>https://changyo.pages.dev/posts/2026/01/review-of-2025/</link>
      <pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2026/01/review-of-2025/</guid>
      <description>&lt;p&gt;这是一篇用来回忆我在2025年的所作所为的文章，也就是大家常看到的，所谓的&amp;quot;年度总结&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;人生难得有这样的时间来思考和写作，而我想把最珍贵的这段时间，来回望我的2025。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;回归的内卷&#34;&gt;回归的内卷&lt;/h2&gt;&#xA;&lt;p&gt;2025年有什么大事需要我记录呢？粗糙地讲，我在2024年秋天进入大学，到2025年元旦，也不过是在大学待了四个月的小子。&lt;/p&gt;&#xA;&lt;p&gt;第一学期的生活可以说没有留下什么太多回忆，我只觉得当时我似乎耗尽了刚进入大学时的那种热情──不再每周都跑到学校某处闲逛，不再每次守着公众号抢讲座的名额，不再每次假期都刷着去上海哪处玩。&lt;/p&gt;&#xA;&lt;p&gt;25年元旦渐近，我的生活也越来越向高中对齐，那种一天到晚都在刷题的日子又再一次上演，内卷的压力和焦虑卷土重来。&lt;/p&gt;&#xA;&lt;p&gt;我本以为我结束了高考，便不再需要被迫接受&amp;quot;应试教育&amp;quot;，但是稚嫩的我却没有想到，在没有找到自己的价值体系和意义感之前，人的&amp;quot;害怕落下&amp;quot;的那种恐惧，会时时萦绕心中。&lt;/p&gt;&#xA;&lt;p&gt;于是，&lt;strong&gt;我逃避,最终主动选择内卷和应试&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;只是这一次，我并不如身边的人那么聪明。&lt;/p&gt;&#xA;&lt;p&gt;索性就带着不太满意的结果继续生活吧。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;不甘&#34;&gt;不甘&lt;/h2&gt;&#xA;&lt;p&gt;寒假，大学的第一个假期，回来之后竟有些无所适从。没有了作业的假期，也真是头一次遇见。&lt;/p&gt;&#xA;&lt;p&gt;然而我已成年，不可能继续没有考虑的度过假期，可是浅薄的社会阅历又让我思想空洞。无解，干脆就认真帮父母做生意。&lt;/p&gt;&#xA;&lt;p&gt;我的父母都是商人，从小学起，我就开始陪他们一起经商，或者更通俗地讲，叫&amp;quot;摆摊&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;曾经还在中学时对此没有什么感受，只是害怕遇见自己的同学，后来发现我的同学基本住在县城，根本不会有交集，便也无所谓了；但是上了大学，见识了更多的&amp;quot;人类多样性&amp;quot;，再让我一个大学生摆摊，似乎让我心中觉得&amp;hellip;有点体会到将来毕业送外卖的心情。&lt;/p&gt;&#xA;&lt;p&gt;但&amp;quot;社会&amp;quot;不在乎，一个复杂庞大的机器需要运行，每个部位都需要它所对应的零部件，即使你是金子做的，也不意味着你就不能铸成一颗螺丝钉。&lt;/p&gt;&#xA;&lt;p&gt;这时候忽然又想起开学典礼上校党委书记说过的那句话：&amp;ldquo;总会有1/2的人是那后50%&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;现在回看那段时间，&lt;strong&gt;当时的我既不逃避,也未自欺,只是我的心中,仍有不甘&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;一场讲座一本书&#34;&gt;一场讲座，一本书&lt;/h2&gt;&#xA;&lt;p&gt;寒假也基本就这样过去了，重新回到校园，感觉又熟悉又陌生。&lt;/p&gt;&#xA;&lt;p&gt;想要&amp;quot;重新扳回&amp;quot;的同时，也必须面对比上学期还要大的压力。学期刚开始，我就已经忙得连轴转了。当时的生活基本就是在各个实验楼中奔波，做不完的实验，写不完的报告和作业，刚过了一个多月，我变得焦虑无比。&lt;/p&gt;&#xA;&lt;p&gt;也许是太过于焦虑了，想找个出口，偶然又看到一个讲座，讲座的名字──&amp;ldquo;大学除了优绩主义还有其它的道路吗&amp;rdquo;──一下子就戳中我的内心。于是就算没抢上名额，我也提前半小时去讲堂占好了位置。&lt;/p&gt;&#xA;&lt;p&gt;那场讲座的内容我已经忘了，但是我在后来的一个月中认真阅读着那位学姐推荐的《当下的力量》。这本书几乎将我从难以遏制的各种思考中拯救出来。&lt;/p&gt;&#xA;&lt;p&gt;当拒绝了大脑那耗费精力、无意思的乱想，只关注于当下时，我感觉我找到了人生的掌控感：&lt;/p&gt;&#xA;&lt;p&gt;我想喝水，我便拿起水杯喝水；我想散步，我便抬起双脚出门；我想入睡，我便闭上双眼，只关心当下，视周遭一切为&amp;quot;存在&amp;rdquo;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;那段时间,我平均每天使用手机的时间只有十几分钟&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;回忆到这，其实已经过了快半年，我一直觉得前半年没有什么特别印象深刻的，一方面可能是那段记忆已经有点远了，另一方面也是因为我在那段时间几乎就没有做出什么改变。&lt;/p&gt;&#xA;&lt;p&gt;我似乎还沿着过去十几年教育对我描绘的道路前进，也没有多读书，多和人交谈。这半年我的思想依旧像一摊死水，并且不断被添加污秽。&lt;/p&gt;&#xA;&lt;p&gt;但是从下半年开始，在我还未消散的记忆里，我发现它开始逐渐变得&amp;quot;不寻常&amp;quot;了。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;一条评论改变的轨迹&#34;&gt;一条评论改变的轨迹&lt;/h2&gt;&#xA;&lt;p&gt;偶然一次机会，打开B站看到一个动漫剪辑视频，认真观看一遍后，对它甚是喜欢，于是反反复复来回看了许多遍，兴奋的心情在评论区写下一些自己的观察和感受。&lt;/p&gt;&#xA;&lt;p&gt;作者也没想到会有个这样的观众，表达了感激。而我也半开玩笑地加了一句&amp;quot;我也想学一下做MAD呀&amp;quot;，却没想到，这句话后来给我的生活带来了很多幸福的回忆。&lt;/p&gt;&#xA;&lt;p&gt;有另一位网友看到这个评论，便回复我要不要加入他们的社群来学习。当时的我既惊讶又害怕，因为我基本从未在互联网上写评论，更没有期待过有人会回复我。忽然被一个陌生人拉着加入一个群，我的第一反应竟然是怀疑是诈骗。&lt;/p&gt;&#xA;&lt;p&gt;这也无怪乎我，当时我的交际圈极其狭窄，几乎只有我的室友和做实验室认识的几位同学。越是交际面窄，对陌生人的猜疑就更多。&lt;/p&gt;&#xA;&lt;p&gt;但最后我还是下了决定接受邀请，被他拉进这个社群。在社群内，才真的让我见识到什么是五湖四海，不同年龄，不同学历，不同职业的人，都因为有着一个共同的爱好，才相遇。后来，也因为这个爱好，我还继续认识了校园的前辈们。到后面还发展成了线下的聚会，我也有幸参加了风化回战第一届线下观影会。&lt;/p&gt;&#xA;&lt;h2 id=&#34;七天一个作品&#34;&gt;七天，一个作品&lt;/h2&gt;&#xA;&lt;p&gt;为着这个爱好，我也确实有着一段忘我的经历。&lt;/p&gt;&#xA;&lt;p&gt;当时刚结束最后一门期末考试，我便开始制作自己第一个作品，那七天的生活，精力全部放在这个作品的制作上。PR是从0开始摸索的，设计是0开始学习的，审美更是从负数开始培养的。&lt;/p&gt;&#xA;&lt;p&gt;当时的生活状态就是&amp;quot;两眼一睁，视频开剪；两眼一闭，上床睡觉&amp;quot;，每天对着电脑工作8个小时。&lt;/p&gt;&#xA;&lt;p&gt;现在想来，不禁感慨当时的毅力，也因为成功做出了第一个作品，我才认识到本校的一些前辈。&lt;/p&gt;&#xA;&lt;p&gt;这段经历如今，似乎就像二次元一样神奇。&lt;/p&gt;&#xA;&lt;p&gt;因为一条留言，才结识这么多同好；因为高强度工作，趁着三分钟热情还没退散就做出了第一个作品，才认识到学校的前辈；再后来，认识更多圈内的大佬，有机会参加了线下的面基和交流，认识更多有着同样热爱的朋友。&lt;/p&gt;&#xA;&lt;p&gt;我常常想，倘若我没有发出那条评论，我这一年的生活，将会失去多少乐趣，我又要经历多少次焦虑的折磨？然而幸运的是，我当时做出了选择，也在后来得到了意料之外的结果。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;在不适合的时代坚持&#34;&gt;在不适合的时代坚持&lt;/h2&gt;&#xA;&lt;p&gt;过去这一年，我觉得我增长的最大的能力之一，是&lt;strong&gt;写作&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;我在前半年陆陆续续写过两三篇文章，很长，都是我阅读和学习的总结。写出那些文章其实十分耗费精力，从整理到撰稿再到修改（当然我大部分只改错别字），每次写完文章，身体都有一种虚脱感。但同时，我也十分享受着这种分享的快乐。&lt;/p&gt;&#xA;&lt;p&gt;可是写作毕竟是利用作业之外的时间来完成，每次写完都能让我为DDL奔波好几天，所以我很多想法一直没有机会写下，最后不了了之。&lt;/p&gt;&#xA;&lt;p&gt;到了夏季的小学期，时间充裕而我也刚好选了一门的通识课，这门课程上课轻松，唯一的作业要求就是每周交一篇至少2000字的主题论述文。那时我也刚好在学习一些设计知识，也想写点东西。所以那3周几乎一直在写写写，认真地写了&lt;strong&gt;4万&lt;/strong&gt;多字，并且都发表在知乎上。&lt;/p&gt;&#xA;&lt;p&gt;我还记得每个礼拜都会带着两张纸和一只笔去找个教室坐下，一写就是几个小时，然后再回去录入电脑；每读完设计学书籍的一个章节，就在第二天写个教程总结和分享。&lt;/p&gt;&#xA;&lt;p&gt;甚至学期结束回到家中，我依然还留着一点写作的动力，写下了几篇文章。&lt;/p&gt;&#xA;&lt;p&gt;我其实早就有点感觉到，我有一种想要表达的欲望，我也一直喜欢写点东西，当以前的我几乎都只是写给自己看，因为我总觉得自己不够资格；后来我尝试将自己觉得还行的观点发表到知乎上，一开始还担心很多人不认同我的观点，但实际却是，其实根本没那么多人看见你的文章。&lt;/p&gt;&#xA;&lt;p&gt;虽然我对自己的文章无人问津感到一点失落，但是那些稀少的对我的文章的回应，我却十分珍惜。至少，能看完我的文章的读者，都是有一定的阅读水平的。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;zhihu-analysis.webp&#34; alt=&#34;知乎文章数据图&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;我的文章几乎都发在知乎，我也很少写回答，更喜欢系统的，有条理的文章，因为我觉得有些观点，必须要有足够的内容，才能够让他有说服力。加之我自己经常看一些严肃的文章，我的文章多少带有一点冗长和门槛。&lt;/p&gt;&#xA;&lt;p&gt;当然我觉得最不幸的是，我遇上了这个不适合写作的时代。或者准确一点说，&lt;strong&gt;不适合写一些正经的内容。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;知乎的风气变差大家都是有目共睹的，如果仅仅是偏好推荐那些激化矛盾的问答倒也罢了，但是我每次进入知乎时看见首页推荐的那些回答总是让我感到一阵难受：愈来愈轻浮的语气，各种绞尽脑汁的抖机灵，将一个问题的深度和背后的意义解构为一句句笑话和网络梗。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;这里没有知识,只有乐子,较真便是输&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;我已经看够了各种各样的乐子：在知乎的各种热榜问题，各种评论区，同样，也在除了知乎的其他平台，不论墙内或者墙外。&lt;/p&gt;&#xA;&lt;p&gt;我也已经无力去评论这些乐子人，因为我也能想象乐子人解构我的评论的模样。绝大部分的创作者，不太那么有&amp;quot;幽默感&amp;quot;的创作者，应该都会明白：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;这不是一个适合写作的时代&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;写作，认真的写点东西，很多时候是给自己加上的工作。&lt;/p&gt;&#xA;&lt;p&gt;但一边学习，一边写作，一边输出，一直都是我想要追求的一种生活。我也感到十分庆幸：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;写作带给我的快乐大过了各种失望的总和&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;或许正因为感受到这种&amp;quot;不适合&amp;quot;，我才更想在这个时代留下点什么。而2025年，让我意识到&amp;quot;不适合&amp;quot;的，不只是写作环境的变化，更是整个世界正在经历的一场前所未有的技术爆炸。&lt;/p&gt;&#xA;&lt;p&gt;当我在敲下那些关于设计、关于编程环境配置的文字时，我从未想过，有一天我会开始思考：&lt;strong&gt;这些我正在学习和分享的知识,在AI面前,还有多少意义?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;当ai开始驱动世界&#34;&gt;当AI开始驱动世界&lt;/h2&gt;&#xA;&lt;p&gt;谈到AI，必须谈到我们正身处的这个充满巨大变革的时代——2025年。这一年在AI发展史上极其重要：从年初的DeepSeek-R1发布，到后续越来越多的开源模型遍地开花，几乎每几周就有一个新模型问世；到年底时Gemini 3发布，成为年度的SOTA。观察Gemini 3和DeepSeek-R1的性能对比会发现，AI技术正经历的是极速的技术爆炸，令人惊叹。&lt;/p&gt;&#xA;&lt;p&gt;我对AI的了解其实也不算很深。最开始的时候，我只会用豆包来聊天，后面有机会用到了国外的大模型，但也只会聊天。再到后来用多了，开始总结一些粗浅的提示词工程经验。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决网页前端字体包过大的几种方案</title>
      <link>https://changyo.pages.dev/posts/2025/12/how-to-reduce-the-font-size-in-web/</link>
      <pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/12/how-to-reduce-the-font-size-in-web/</guid>
      <description>&lt;p&gt;最近想给博客的网页换个字体，在修复了历史遗留的一些bug之后，去google fonts上找了自己喜欢的字体，本地测试和自己的设备发现没问题后，便以为OK了。&lt;/p&gt;&#xA;&lt;p&gt;但是当我接朋友的设备打开时，发现网页依然是默认字体。这时候我才发现，我的设备能够翻墙，所以能够使用Google CDN服务，但是对于我的其他读者们，在大陆内是访问不了Google的，便也无法渲染字体了。&lt;/p&gt;&#xA;&lt;p&gt;于是为了解决这个问题，我尝试了各种办法比如格式压缩，子集化(Subset)，分包等等，最后考虑到本站的实际情况选用了一种比较&lt;em&gt;邪门&lt;/em&gt;的方法，让字体压缩率达到了惊人的&lt;strong&gt;98.5&lt;/strong&gt;！于是，这篇文章就是对这个过程的总结。也希望这篇文章能够帮助到你。😊&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;想要自定义网站的字体，最重要的其实就是字体包的获取。大体上可以分为两种办法：&lt;strong&gt;在线获取&lt;/strong&gt;和&lt;strong&gt;网站本地部署&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;在线获取利用-cdn-加速服务&#34;&gt;在线获取──利用 CDN 加速服务&lt;/h2&gt;&#xA;&lt;p&gt;CDN(Content Delivery Network) 意为内容配送网络。你可以简单理解为是一种&amp;quot;就近给你东西&amp;quot;的互联网加速服务。&lt;/p&gt;&#xA;&lt;p&gt;传统不使用 CDN 服务的是这样的： &lt;code&gt;User ←→ Server&lt;/code&gt;,如果相聚遥远，效果显然很差。&lt;/p&gt;&#xA;&lt;p&gt;使用了 CDN 服务是这样的： &lt;code&gt;User  ←→ CDN Nodes  ←→ Server&lt;/code&gt;，CDN 会提前把你的网站静态资源缓存到各个节点，但你需要时可以直接从最近的节点获取。&lt;/p&gt;&#xA;&lt;p&gt;全球有多家CDN服务提供商，Google Fonts使用的CDN服务速度很快。所以如果在网络畅通的情况下，使用Google Fonts API是最简单省事的！&lt;/p&gt;&#xA;&lt;p&gt;你可以直接在文件中导入Google fonts API：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060051543106&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060051543106&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&amp;amp;family=Merriweather:ital,opsz,wght@0,18..144,733;1,18..144,733&amp;amp;family=Noto+Serif+SC:wght@500&amp;amp;display=swap&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;p&gt;这样网站它便会自动向最近的Google CDN节点请求资源。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming Fundamentals: 编译器、调试器、链接器</title>
      <link>https://changyo.pages.dev/posts/2025/11/about-assembly-tools/</link>
      <pubDate>Tue, 25 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/11/about-assembly-tools/</guid>
      <description>&lt;h2 id=&#34;编译器&#34;&gt;编译器&lt;/h2&gt;&#xA;&lt;p&gt;编译器，是一种将高级语言编译为能够被机器识别和执行的机器码的工具。&lt;/p&gt;&#xA;&lt;p&gt;我们以C++语言为例，我们平时敲代码时或许是这样写的：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168057709327031&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168057709327031&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&amp;lt;iostream&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hello.world&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;p&gt;这是一种高度抽象的语言，方便我们人类阅读编写，但是机器并不能直接识别运行。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;一般我们会通过编译器，先让C++语言经过&lt;strong&gt;预编译&lt;/strong&gt;过程，这个过程主要是展开以&lt;code&gt;#&lt;/code&gt;开头的库文件，将他全部代入源码当中；&lt;/li&gt;&#xA;&lt;li&gt;接着会进入正式的&lt;strong&gt;编译&lt;/strong&gt;过程，这个过程主要进行词法分析，语法分析，语义分析，有一种名为&lt;code&gt;语义树&lt;/code&gt;的数据结构可以帮助实现这个过程,最终还会通过一张对照表将代码转化为汇编代码&lt;/li&gt;&#xA;&lt;li&gt;然后是&lt;strong&gt;汇编&lt;/strong&gt;过程，到这一步就会汇编器as会将代码生成机器能够识别的机器码了。这个过程产生的文件&lt;code&gt;.o&lt;/code&gt;是目标文件/对象文件 ，虽然内容已经接近于可直接运行了，但是这个文件是非常残缺的，里面的各种地址并没有确定，而且我们实际编译的项目往往会生成多个目标文件，它们互相调用的外部函数也没有传入。&lt;/li&gt;&#xA;&lt;li&gt;所以我们还需要最后一个过程：&lt;strong&gt;链接&lt;/strong&gt;，这个过程会调用&lt;strong&gt;链接器&lt;/strong&gt;将所有中间文件以及一些系统运行库合并并调整，最终拼出了我们的&lt;strong&gt;可执行文件（ELF）&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;从刚才我们看到，这个过程已经出现了链接器了，所以我们平时常常讲的一些编译器工具如gcc, clang可以认为是已经包含了链接器了，我们平时说的这些工具更多地是指编译器的驱动程序，它们能够自动调用汇编过程各个工具，组成完整的工具链。&lt;/p&gt;&#xA;&lt;h2 id=&#34;链接器&#34;&gt;链接器&lt;/h2&gt;&#xA;&lt;p&gt;链接器的作用刚才已经形象说明了，这里简单讲下它的两个核心作用：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;符号解析每个目标文件在编译时都是独立的，当你在一个文件里面调用了另一个文件的函数时，编译过程并不能识别，而是将它标记为一个符号，然后在链接过程，链接器会识别这些符号并将他们解析&lt;/li&gt;&#xA;&lt;li&gt;重定位这个过程链接器会修正代码和数据地址。因为每个目标文件编译时都默认从0开始编译，链接器会将地址重新排列，使代码写入内存时不重叠&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;调试器&#34;&gt;调试器&lt;/h2&gt;&#xA;&lt;p&gt;调试器顾名思义，就是方便你进行调试代码的，比如设断点、单步执行，观察变量值，这些都是通过调试器来实现的。目前我们常见的调试器有GDB, LLDB等。需要注意调试器并不会参与代码的编译和执行。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;简单概括一下就是：你写的高级语言并不能直接被机器识别，它们都必须通过编译器转换为机器码，通过链接器将所有目标文件和系统运行库像&amp;quot;胶水一样&amp;quot;链接起来，最后变成一个双击就能运行的可执行文件。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;关于编译器、链接器的更深层次的作用，可以参考下一篇文章：&lt;a href=&#34;https://chang-yo.github.io/tech/How-Different-Languages-Interact&#34;&gt;项目中的多种语言是如何互相调用的&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>项目中的多种语言是如何互相调用的</title>
      <link>https://changyo.pages.dev/posts/2025/11/how-different-languages-interact/</link>
      <pubDate>Tue, 25 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/11/how-different-languages-interact/</guid>
      <description>&lt;h2 id=&#34;问题寻思&#34;&gt;问题寻思&lt;/h2&gt;&#xA;&lt;p&gt;这个问题似乎很少有人提起，在互联网上找到的资料的也很老旧，但这个问题曾经有段时间一直困扰着我。&lt;/p&gt;&#xA;&lt;p&gt;想到这个问题其实也很自然：每种编程语言的语法规则都是不同的，语言特性大相径庭，更何况他们有着各自的编译器，在编译时经历的过程也是不同的。&lt;/p&gt;&#xA;&lt;p&gt;但是我们总是能够看到有各种各样的项目，他们是由2种甚至多种语言组成。&lt;/p&gt;&#xA;&lt;p&gt;如果，每种语言都负责各自相对独立的模块，或许还比较能够接受，比如说javascript,python负责前端页面的设计，而C++负责后端算法和高性能功能的实现。&lt;/p&gt;&#xA;&lt;p&gt;但是，有些功能需要的恰恰多种语言一起完成，各个语言之间的&amp;quot;接口&amp;quot;到底是怎样的呢？&lt;/p&gt;&#xA;&lt;h2 id=&#34;多语言编程简单实例&#34;&gt;多语言编程简单实例&lt;/h2&gt;&#xA;&lt;p&gt;我们先从一个简单的项目的来理解：&lt;/p&gt;&#xA;&lt;p&gt;我们先创建一个&lt;code&gt;test.cpp&lt;/code&gt;文件&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168057710572241&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168057710572241&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;p&gt;然后我们在bash中运行&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168057710962280&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168057710962280&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;g++ -shared -fPIC test.cpp -o test.so&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;p&gt;这时候我们应该就能看到文件列表中出现了一个&lt;code&gt;test.so&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 项目管理发展概览——从pip到uv</title>
      <link>https://changyo.pages.dev/posts/2025/11/python-project-managements/</link>
      <pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/11/python-project-managements/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;文章灵感来自于YouTube博主@程序员老王的python科普，可以看作是自己的学习笔记，你可以&lt;a href=&#34;https://www.youtube.com/embed/jd1aRE5pJWc?si=tNOjzObNo9QTqZV7&#34;&gt;观看视频&lt;/a&gt;直接了解。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;传统项目管理之难环境与依赖&#34;&gt;传统项目管理之难&amp;ndash;环境与依赖&lt;/h2&gt;&#xA;&lt;p&gt;在我们写python代码时，我们必然会需要添加许多包，如果我没有安装对应的包，而直接在代码里写&lt;code&gt;import package&lt;/code&gt;，那么运行就会报错。&lt;/p&gt;&#xA;&lt;p&gt;为了解决这个问题，我们一般会在命令行当中输入下面的指令来安装对应的包：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168057716188356&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168057716188356&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install package&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;p&gt;这样我们的&lt;code&gt;import&lt;/code&gt;就没有问题了。但是这种方式带来了两个棘手的问题：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;一个是安装在全局环境时无法满足不同项目对package版本的需求&lt;/li&gt;&#xA;&lt;li&gt;另一个是无法处理好直接依赖与间接依赖的管理&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;环境依赖&#34;&gt;环境依赖&lt;/h3&gt;&#xA;&lt;p&gt;我们先从环境问题开始。当我们执行&lt;code&gt;pip install package&lt;/code&gt;时，默认安装路径是全局环境，这意味着所有项目可能都要调用这同一个package。但是往往不同的项目需要的依赖是不同版本的，这会导致有些项目产生版本冲突，运行会崩溃。&lt;/p&gt;&#xA;&lt;p&gt;为了解决这个问题，python提供了一种&lt;strong&gt;虚拟环境&lt;/strong&gt;的解决方案，我们可以在命令行运行以下指令：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168057716405834&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168057716405834&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip -m venv .venv&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;p&gt;它会在项目文件夹下新建一个&lt;code&gt;.venv&lt;/code&gt;文件夹，pip会将这个项目所需要的全部依赖都安装到这个文件夹中；此外，pip还会修改每个package的&lt;code&gt;sys.path&lt;/code&gt;属性，将.venv路径添加进去。&lt;/p&gt;</description>
    </item>
    <item>
      <title>与小米联合创始人洪峰交流有感</title>
      <link>https://changyo.pages.dev/posts/2025/10/conversations-with-hf/</link>
      <pubDate>Fri, 31 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/10/conversations-with-hf/</guid>
      <description>&lt;p&gt;今天下午有幸聆听小米集团联合创始人之一 洪峰 的人生经验分享。&lt;/p&gt;&#xA;&lt;p&gt;没想到洪峰也是我们学校毕业的学长，所以有很多同学一起向洪学长请教了一些问题。我觉得有一些想法非常有启发性。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;第一，洪学长谈到了创业做产品的一个思路，或者说是一个方法吧。用一句话总结，就是&amp;quot;先开发布会，再做出完整的产品&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;他还举了一个例子来说明，比如你一个产品在还没有研发出来之前，你可以先把先做一个产品网页，把这个产品最终是什么样的效果&amp;ndash;无论这个最终功能是否研发出来&amp;ndash;给展示出来。这种网页一定要做的足够吸引人，然后再去找各种渠道投广告，当用户进入网页时，他可能因为喜欢你的产品而购买你的产品。那么就通过这个，你可以判断自己产品的价值。如果压根没人买，说明这个产品没有价值；如果有很多人买，说明你的产品很有价值。&lt;/p&gt;&#xA;&lt;p&gt;然后你可以找个理由：我们的研发过程遇到问题，您的付款将全部退回，同时将获得产品发布是3的抢先使用资格。&lt;/p&gt;&#xA;&lt;p&gt;这样的话就相当于在你发布产品之前，你就已经获得了第一手的反馈数据，这个是非常有启发性的一个思路。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;第二个是有一个女同学。她当时向洪学长请教，她自己也是学计算机的，但同时对一些艺术方面也十分感兴趣，而且自己做过独立游戏，游戏的美术全是自己完成的。但是现在她已经回过头来看，觉得自己花在那个方面的时间就是有一点不不值。就是虽然自己很喜欢艺术，但是同时她在计算机方面也很有能力。而既然在计算机方面很有能力，那他就应该多花点时间不浪费这种能力。应该要多花一些在计算机技术上，对美术方面的研究少一些。这可能是我们大多数人的一个想法吧。&lt;/p&gt;&#xA;&lt;p&gt;但是洪峰学长他的看法就很有启发性，因为他从一个HR的角度来看，他说你既有艺术方面的优势，又有编程方面的优势。那么在HR看来，你这其实是一个很宝贵的正资产，而不是你的一个负资产，可以让她比一般的程序员更懂设计，比一般的设计师更懂产品背后的原理。&lt;/p&gt;&#xA;&lt;p&gt;就比如说我们要实现一个效果，它的成本曲线可能是一个很陡峭的。从技术角度来讲，你可能知道通过什么方法把它成本降一半，但是你并不知道你这种降一半的最终效果是否让设计师满意；在设计师看来，他知道这种效果的弹性伸缩空间多大，但是不知道背后需要花费的技术成本多高。&lt;/p&gt;&#xA;&lt;p&gt;但是这位女同学完全可以当做这中间的桥梁。&lt;/p&gt;&#xA;&lt;p&gt;也就是说，他的这段经历其实反而对他来说是一段正资产。可是她自己呢，就是觉得感觉对艺术的兴趣反而有点拖累了她，觉得它是一个负资产。&lt;/p&gt;&#xA;&lt;p&gt;这是我觉得非常有启发性的两点。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;当然，洪峰学长他还谈到了很多东西。&lt;/p&gt;&#xA;&lt;p&gt;比如他一直在强调做对的事情，做正确的事情。我觉得这一点有点很像雷军（雷总）。雷总曾经一句名言，&amp;ldquo;在站在风口上，猪都能飞起来&amp;rdquo;。而且还听到一些在小米早期，他和雷军之间的故事。&lt;/p&gt;&#xA;&lt;p&gt;小米这个集团，早期那些人其实都是非常有个性的，能够走在一起，聚在一起创建小米。其实也是一种缘分吧。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060071894020&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060071894020&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;文章为知乎原创，转载请声明&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>知识带给人的诅咒和自恋</title>
      <link>https://changyo.pages.dev/posts/2025/10/thoughts-of-knowledge/</link>
      <pubDate>Fri, 24 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/10/thoughts-of-knowledge/</guid>
      <description>&lt;p&gt;知识，可以让人变得博学，但同样，它也可以让人变得&amp;quot;自恋&amp;quot;；知识，可以让你对一般事物有更深的理解，但同样，他也可以让人体察不到知识缺损的的体验。&lt;/p&gt;&#xA;&lt;p&gt;当一个人掌握了更多的知识时，看到任何事物，都会不自觉地去思考其背后的原理，拆解一些华丽表面下不变的真理；知识，让一个人永远处于一种&amp;quot;本就是如此&amp;quot;的错觉，无法想象不了解这些知识的人的感受。&lt;/p&gt;&#xA;&lt;p&gt;就像你学会了骑车，想像不了初学者的艰难；学会了写作，想像不了入门者绞尽脑汁的痛苦；学会了使用电脑，想像不了连系统基本操作都不会的人的困惑。&lt;/p&gt;&#xA;&lt;p&gt;这就是&lt;strong&gt;知识的诅咒&lt;/strong&gt;，知识在你的身边筑起一层隐形的墙，隔绝内外两种人的观念和思考。&lt;/p&gt;&#xA;&lt;h4 id=&#34;墙内的人不理解墙外人的挣扎墙外的人听不懂墙内人的胡言乱语&#34;&gt;墙内的人不理解墙外人的挣扎，墙外的人听不懂墙内人的&amp;quot;胡言乱语&amp;quot;。&lt;/h4&gt;&#xA;&lt;p&gt;于是我们常常看到，高冷的知识被束之高阁，闪烁的真理被旁人冷落；底下的谣言不胫而走，病毒般在大众间传播。又或者是一群专家在小圈子里洋洋自得，但大众们只觉得这是在脱离实际。&lt;/p&gt;&#xA;&lt;p&gt;知识还很容易让人自恋，当一个掌握的知识越多，总是会不经意地向外溢出。然而这种&amp;quot;溢出&amp;quot;，却并不总是带来和善的结果。&lt;/p&gt;&#xA;&lt;p&gt;当我非常自然的说出某个现象的原理，觉得十分的正常时，也许在其他人看来，这种行为不过是我在炫耀自己的知识。当分享知识的行为越是主动，得到其他人的抵触越是强烈。因为在一个&lt;strong&gt;以比拼知识为荣&lt;/strong&gt;的社会，分享知识的行为更像是宣示自己的权威。我很难理解这种心情，因为我觉得当其他人分享给我知识，我会很高兴得到他人的帮助，我也乐意向其他人分享知识，或者说，我很乐意将知识开源。但是似乎我们受到的教育告诉我们，要学会利用信息差打败别人，这似乎就是在告诉我们知识是一种资源，要形成自己的竞争优势就必须藏住自己的资源。&lt;/p&gt;&#xA;&lt;p&gt;细细想之，不免令人悲哀。&lt;/p&gt;&#xA;&lt;p&gt;知识带给人的另外一个诅咒，就是无法像旁观者一样体会到&amp;quot;未知带来的快乐&amp;quot;，对事物的理解，总是不免会滑向其中技术的拆解，还有对他人知识的一点&amp;quot;嫉妒&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;这就好比你学会了写作，看他人的作品时想着&amp;quot;我*，TM怎么写的这么好&amp;quot;；学会了剪视频，看优秀的剪辑时想的是&amp;quot;居然还能这样剪，我怎么就没有学会&amp;quot;。你看，我们很难在体会到那种观众/读者的纯粹的惊叹。&lt;/p&gt;&#xA;&lt;p&gt;不过我觉得这也未必值得伤心：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;热爱依旧，只是变得更加深刻&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;对热爱背后技术的探寻，只是再将热爱转化为真实的行动。&lt;/p&gt;&#xA;&lt;p&gt;不过换个角度想，知识的诅咒也给人在人际交往中一些启示。有时候不能过于沉浸于自己知识的世界，不顾他人想法的&amp;quot;对外知识输出&amp;quot;有可能换得他人的恶意，学会让观众舒适地接受知识，有时也是我们知识传播者的责任。&lt;/p&gt;&#xA;&lt;p&gt;还要注意跳出自己的小圈子，每个人都会在某个领域有自己的专长，分享自己知识的同时，虚心像他人请教知识，也许更能促进知识的双向流动。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060072193443&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060072193443&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;文章为知乎原创，转载请声明&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>关于人的价值与情感需求</title>
      <link>https://changyo.pages.dev/posts/2025/10/thoughts-of-value/</link>
      <pubDate>Fri, 17 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/10/thoughts-of-value/</guid>
      <description>&lt;p&gt;最近几年，渐渐地发现网络或者社会的戾气愈来愈重，于是很多恶性的网络事件出现，每次总能看到有很多不友善的话语，而且变得愈来愈重。似乎&amp;quot;发泄&amp;quot;成为了中文互联网主要的用途。我不喜欢随意对人发泄情绪，因为我也不希望自己被他人随意发泄情绪。&lt;/p&gt;&#xA;&lt;p&gt;在这发泄背后，我似乎感觉到一种群体性的价值感和快乐源泉的缺失，通过发泄，愤怒于某人，造成一方的某种程度的损失或伤害，来获取自己的快乐，我觉得很没有意义。&lt;/p&gt;&#xA;&lt;p&gt;我在网络上看过很多帖子都讲述觉得自己的人生没有什么价值。也许这可以反映现在大部分人的精神状态：找不到属于自己的价值依托，于是个人的价值衡量就只能屈从于外界的量化体系，后者最为人们熟悉理解的就是成绩，收入。&lt;/p&gt;&#xA;&lt;p&gt;从小接触应试教育的人应该很容易理解，在学校内一个人的价值几乎全部&lt;strong&gt;锚定&lt;/strong&gt;于&amp;quot;成绩&amp;quot;。过于单一的评价标准也造成了个人价值体系的脆弱和扭曲。&lt;/p&gt;&#xA;&lt;p&gt;于是我们有时候也会发现很多大学在逐渐高中化，这其实未必是学校管理层的主动选择，我觉得更像是是应试教育体系发展的过于极端时对整个社会风气的&lt;strong&gt;侵蚀&lt;/strong&gt;，而学校的制度也不得不被风气所裹挟做出让步。&lt;/p&gt;&#xA;&lt;p&gt;可以预见的是，在未来社会环境可能越来越压抑的趋势下，人对于个人价值感的找寻会成为一个不可忽略的问题，可能会出现越来越多抽象的行为。此外，在日渐原子化的社会结构中，人的一种情感需求也会越来越明显。&lt;/p&gt;&#xA;&lt;p&gt;我认为，心灵上的伤害会远远大于物质世界中的得失。前者可能从灵魂上彻底摧垮一个人，后者只是让外部环境变差，但对个人的影响随认知而变化。&lt;/p&gt;&#xA;&lt;p&gt;同样可以反过来，心灵上的宁静和对自己的自信可能会是以后生活中的宝贵财富，因为能够找到自己的意义感便不一完全被外部评价所裹挟。&lt;strong&gt;这种内心的强大，是我也可能是很多人想要追求的一种状态吧！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这些问题并不是遥远的事情，虽然有时候我们可以通过短暂的娱乐或享乐主义来暂时麻痹自己，让自己觉得掌握了当下。但一切归于寂静，内心总会在某时忽然有个声音冒出来问：&lt;/p&gt;&#xA;&lt;h2 id=&#34;我真的得到了长足的快乐吗我的价值到底在哪&#34;&gt;我真的得到了长足的快乐吗？我的价值到底在哪？&lt;/h2&gt;&#xA;&lt;p&gt;这时，我们内心的回答或许很大程度上影响我们对生活的热情和世界的感知。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060072754365&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060072754365&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;文章为知乎原创，转载请声明&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>关于学习的正当化理由</title>
      <link>https://changyo.pages.dev/posts/2025/10/thoughts-of-learning/</link>
      <pubDate>Fri, 10 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/10/thoughts-of-learning/</guid>
      <description>&lt;p&gt;我发现，从小就一直接受应试教育的我们似乎有一种难以被发现的&amp;quot;创伤&amp;quot;（当然这个感觉也许只有少数的人才出现），那就是强迫自己给我们的学习目标&amp;quot;正当化&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;我们以前绝大部分的学习其实都是目标明确的，比如高中为什么要学习这个？因为高考要考，学这个可以助于提高分数；为什么要学竞赛，因为对升学有帮助；为什么课外要学这个，因为我作业要用到但课本没有教，或者参加了比赛，我必须学这个基础知识。&lt;/p&gt;&#xA;&lt;p&gt;当然，关于应试教育的影响有太多文章分析，我并不想讨论这一点。我觉得需要关注的是，我们是不是失去了学习自己喜欢的知识的勇气？&lt;/p&gt;&#xA;&lt;p&gt;注意，这个知识仅仅是你喜欢，他没有什么指标性的要求，不需要你交作业。当你喜欢并探索到了一定阶段，必然想要专门的去系统学习一些知识。&lt;/p&gt;&#xA;&lt;p&gt;这个过程比较自然，但是部分人却在这个阶段产生疑惑：我学这个的动机是什么？它可以帮我提高分数或什么能力吗？别人看到我学习这个心里会想到我能得到什么吗？&lt;/p&gt;&#xA;&lt;p&gt;于是对知识的跃跃欲试的更进一步探索又退缩到应试的思维：一定是这个东西可以帮我提高什么&amp;ndash;最好是可以量化的指标&amp;ndash;我才会去学。&lt;/p&gt;&#xA;&lt;p&gt;然而事实是，有时候学习新东西不需要什么&amp;quot;正当化理由&amp;quot;，仅仅是喜欢，就足够了。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;没错，仅仅是需要你喜欢，就足够了&lt;/strong&gt;。不需要太刻意地给自己的这种欲望强行正当化。&lt;/p&gt;&#xA;&lt;p&gt;然而我遇到过的部分人（也许包括我），有时候太困于给自己寻找一个所谓的&amp;quot;正当化理由&amp;quot;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;当一个人长期在功利的环境里成长不功利纯粹地热爱地做一件事反而成为了一种异样&#34;&gt;当一个人长期在功利的环境里成长，不功利、纯粹地、热爱地做一件事，反而成为了一种异样&amp;hellip;&lt;/h3&gt;&#xA;&lt;p&gt;当然，也肯定会有人说光靠热爱的学习，是盲目的，和现实市场需求不符的。&lt;/p&gt;&#xA;&lt;p&gt;可你看，当我们说这句话时，我们已经代入了一定要有一个正当化理由的视角，我们无意识地再一次功利性看问题。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;这才是教育最可悲的事情吧！&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060073071912&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060073071912&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;文章为知乎原创，转载请声明&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>半年之后再回首：关于xmake在C&#43;&#43;环境配置中的简单实践&amp;配置文件使用指南</title>
      <link>https://changyo.pages.dev/posts/2025/10/looking-back-to-the-instructions/</link>
      <pubDate>Fri, 03 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/10/looking-back-to-the-instructions/</guid>
      <description>&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060073797558&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060073797558&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;文章为原创，最初发表在知乎，发表时间为2025-09-20&#xA;全文总计 1 万字左右，预计阅读时间为 30~40 min&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;&#xA;&lt;h3 id=&#34;文章动机&#34;&gt;文章动机&lt;/h3&gt;&#xA;&lt;p&gt;在半年之前，我曾经写了一篇关于WSL中VScode的C++环境配置的教程。在这个教程里，我主要聚焦于launch.json和tasks.json的代码含义。那篇文章是在我努力摸索了很多天后对VScode环境配置初步理解的总结。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://changyo.pages.dev/tech/Instructions-on-WSL/&#34;&gt;WSL下VSCode的C++环境配置（代码解析版）&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;不过，如今回首再看那篇文章，发现那篇文章其实还是有很多不合理的地方。而且文章中对于代码从编译到形成可执行文件这个过程的描述十分的模糊，某些部分甚至是错误的！&lt;/p&gt;&#xA;&lt;p&gt;最近我尝试着配置在Windows环境下配置C++环境，在知乎上读到了一篇利用xmake配置环境的教程，然后又读到了 @xq114 写的xmake教程，尝试了一段时间却屡屡出错。于是又去读了一些介绍代码编译过程的资料，主要是《程序员的自我修养》这本书，终于对代码编译、链接过程有了一个比较系统和清晰的认识，最后在大模型的帮助下尝试了一种新的C++环境配置方式。而现在这篇文章，就是对这个过程的总结。&lt;/p&gt;&#xA;&lt;h3 id=&#34;这篇教程有什么&#34;&gt;这篇教程有什么：&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;对xmake的简单介绍。如果你不知道xmake是什么但想了解，或者你已经知道xmake是什么想看看如何使用，都可以阅读这篇教程&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;对代码编译、链接过程的进一步深化。如果你对环境配置文件（比如launch.json和tasks.json）当中的一些属性不太了解并也不清楚这些文件之间的通讯过程，那么这篇文章可以让你对这个代码的构建过程有一个基础的认识&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;对tasks.json和launch.json配置文件的再认识&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;作者的一点点小感悟和教程链接⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;OK，那我们就进入正题吧！&lt;/p&gt;&#xA;&lt;h2 id=&#34;xmake-一种构建系统工具&#34;&gt;Xmake 一种构建系统工具&lt;/h2&gt;&#xA;&lt;p&gt;xmake是一种构建系统，它并不会直接参与对代码的编译和链接，而是作为一个&amp;quot;管理者&amp;quot;，向它的手下们（编译器，汇编器，链接器）分配任务。你可以把他理解为公司里面的高管，负责人员的工作分配。高管的能力有高有低，带领公司的水平也有高有低。从构建系统诞生至今，总共出现了4代工具：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Make&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;(GNU) Autotools&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cmake&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;GN、Ninja （3.5代）&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Xmake&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这里面大家可能看到比较熟悉的工具如Cmake，当然像Make这样的第一代构建工具你也常常可以在一些老项目中看见。但我们要讨论的是Xmake，也就是目前最新一代的构建工具。&lt;/p&gt;&#xA;&lt;p&gt;Xmake可以自动帮你分配需要的编译器、链接器，当然你也可以自己设置。同时Xmake具有增量编译功能，并行编译的功能。增量编译可以理解为每次build他都只会重新编译发生过更改的文件，可以提高效率；并行编译则可以显著提升编译速度。&lt;/p&gt;</description>
    </item>
    <item>
      <title>当我们看Clannad时，我们在找寻什么？</title>
      <link>https://changyo.pages.dev/posts/2025/09/postfeeling-of-clannad/</link>
      <pubDate>Wed, 10 Sep 2025 15:47:53 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/09/postfeeling-of-clannad/</guid>
      <description>&lt;p&gt;这个礼拜一口气看完了 Clannad 和续作 After Story，看完之后对其中很多场景久久不能忘怀。&lt;/p&gt;&#xA;&lt;p&gt;我Clannad我以前尝试过很多次，但似乎每次都是连风子篇都没看完就已经放弃了。这次将它完整看完，也算是圆了高中时的小小心愿吧。&lt;/p&gt;&#xA;&lt;p&gt;两集加起来共40多集，前四分之三都是在讲述高中校园生活，主题基调是欢快；而最后10集，便是作品中的角色都步入成年人的社会，并且以冈崎和渚为主线，像我们慢慢展开人生中的种种经历。&lt;/p&gt;&#xA;&lt;p&gt;我觉得，Clannad最伟大的部分就是将角色成年后的生活非常真实且细致的刻画出来。&lt;/p&gt;&#xA;&lt;p&gt;从来很少有这样一部番，他的故事并没有停留在美好的校园生活，而是将校园之后步入社会的人生完整展现；从来很少这样一部番，能够将一个人从幼年到入学，到毕业步入社会，到成家立业，到成为父亲的人生历程完全展现出来。而Clannad，就是因此才显得独一无二。&lt;/p&gt;&#xA;&lt;p&gt;Clannad整个作品氛围，仿佛有一种对旧时代生活的缅怀，进一步来说，是对传统的小镇社会关系的呼唤。&lt;/p&gt;&#xA;&lt;p&gt;在剧中借秋生说出了这个主题：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;小镇在不断变化，所有事物都不可能永远延续的，人生在世，就是这么一回事。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;小镇随着经济发展每天发生着剧变，有新的高楼大厦建起，伴随着小镇风貌的变化，人与人之间的邻里关系也在慢慢改变，同样，曾经很多美好的回忆和人情的温暖似乎也在一点点消逝。&lt;/p&gt;&#xA;&lt;p&gt;而剧中人物的成长也是，从高中到社会再到工作岗位，我们观众也一点点体验着这种变化。人会慢慢褪去少年时的稚气，渐渐变得稳重。尤其是在冈崎参加工作后的时光，两人一个上学，一个上班，聚少离多，能够陪伴的时间变少。即使是毕业后同居，也只能在工作外的间隙相互陪伴。这似乎在告诉我们，分离本就是人生的常态，很多情感其实也是在这种分离中慢慢发生着改变的。&lt;/p&gt;&#xA;&lt;p&gt;但是作品却并没有刻意去刻画这种变化的怀旧感，它只是通过无数个生活片段和细节来让观众体验那种微妙的变化。&lt;/p&gt;&#xA;&lt;p&gt;而且作品更没想让你沉浸在往日的怀念中，它似乎一直在不停地告诉着你，要向前走，即使环境在不停地变化，但人依旧要往前看。&lt;/p&gt;&#xA;&lt;p&gt;这一点在渚身上体现的极为明显。我们观看时似乎一直觉得渚是个弱小的女孩，是被身边的朋友保护着。这并不完全准确，渚或许是剧中最坚强的人之一。在交往后是渚一直提醒着冈崎和父亲见面，在生下孩子时是渚鼓励着冈崎往前走，在轮回相遇时是渚告诉冈崎“请不要后悔与我的相遇”。&lt;/p&gt;&#xA;&lt;p&gt;而渚身上又带有着那种无私的大爱和善良，整部剧似乎让我看到的是，一个有着美好人性的女孩，在面对环境、生活、时代的剧变时，依旧坚强的走向前，去带给周围人幸福。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;渚生在这个小镇，是这个小镇的幸福。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;当然Clannad的内容远不止这么一点，倘若用心发现，你会发现它描绘了许多，想要传达给观众许多。我的文字，也不可能将它的主题写尽；我的阅历，也不能全尽体会作品对人生的刻画。&lt;/p&gt;&#xA;&lt;p&gt;我想，倘若我能够提前几年看完Clannad，或许我的人生轨迹真的会发生一点点改变。但人生毕竟不能重来，在这个阶段能够看到Clannad，或许也是一种冥冥中的安排。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Clannad带给了我很多感动，带给了我很多力量，在现在这个“生存压倒一切”的社会氛围中，还能够感受到人世间的真善美，还能够感受到人性的温暖，真是一种幸运。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;或许就像网友总结的一样：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;写作Clannad，读作人生。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>在WSL2中配置VScode的C&#43;&#43;环境</title>
      <link>https://changyo.pages.dev/posts/2025/09/instructions-on-wsl/</link>
      <pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/09/instructions-on-wsl/</guid>
      <description>&lt;h2 id=&#34;话说在前头&#34;&gt;话说在前头&lt;/h2&gt;&#xA;&lt;p&gt;这篇文章解决的问题是和我一样在Windows上安装了WSL，并且在VSCode中用WSL环境编写C++程序，遇到的C++单文件和多文件编译的配置文件问题，并且重点在与多文件的配置文件书写。（多文件是指要用到头文件和多个源文件的cpp项目。）当然你如果是Windows环境也可以阅读。&lt;/p&gt;&#xA;&lt;p&gt;如果你不知道什么是WSL，请上网自主搜索教程。&lt;/p&gt;&#xA;&lt;p&gt;网上在这方面的经验贴较少，或者收费，或者是在windows环境下配置的，或者只停留在单文件的配置中。（当然或许写大型项目时用VS可能是一个更好的选择）&lt;/p&gt;&#xA;&lt;p&gt;我为了解决多文件编译问题，连续5个小时在网上求助并在VSCode上尝试，前4个小时基本可以说是迷迷糊糊，不求甚解，直到最后直接询问AI配置文件中的每个属性的含义，才彻底弄懂了它的细节和代码运行过程。&lt;/p&gt;&#xA;&lt;p&gt;所以这篇文章更侧重于解释tasks.json和launch.json中每个语句的含义和作用（所谓的&amp;quot;代码解析&amp;quot;），希望对你有所帮助&lt;/p&gt;&#xA;&lt;p&gt;本文不保证所写代码为最高效代码，或许存在错误，单重在于让大家理解内部代码的含义！！&lt;/p&gt;&#xA;&lt;p&gt;本文不保证所写代码为最高效代码，或许存在错误，单重在于让大家理解内部代码的含义！！&lt;/p&gt;&#xA;&lt;h2 id=&#34;在理解配置文件之前&#34;&gt;在理解配置文件之前&lt;/h2&gt;&#xA;&lt;p&gt;我们先理解一下你在VSCode上写的代码究竟经历了怎样的过程。&lt;/p&gt;&#xA;&lt;p&gt;首先你写的cpp文件会被g++编译为可执行文件，这个过程在tasks.json中完成设置，然后系统再运行这些可执行文件，从main函数进入，中间会调用你在其他cpp文件中定义的函数。理解好了这个过程，可以让你一定程度上理解配置文件之间的逻辑关系&lt;/p&gt;&#xA;&lt;h2 id=&#34;单文件-single-file&#34;&gt;单文件 Single File&lt;/h2&gt;&#xA;&lt;p&gt;我先把自己的两个文件给放出来&lt;/p&gt;&#xA;&lt;p&gt;这是&lt;strong&gt;launch.json&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;details class=&#34;code-details my-6&#34;&gt;&#xA;  &lt;summary&gt;Show code (28 lines)&lt;/summary&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060080263923&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060080263923&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Use IntelliSense to learn about possible attributes.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Hover to view descriptions of existing attributes.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830787&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0.2.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;configurations&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C/C++&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;cppdbg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;request&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;launch&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;program&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;${fileDirname}/${fileBasenameNoExtension}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[],&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;stopAtEntry&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;cwd&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;${workspaceFolder}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;environment&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[],&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;externalConsole&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;MIMode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gdb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;preLaunchTask&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;compile&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;setupCommands&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Enable pretty-printing for gdb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-enable-pretty-printing&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;ignoreFailures&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;这是&lt;strong&gt;tasks.json&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>当爱国成为一种营销</title>
      <link>https://changyo.pages.dev/posts/2025/08/patriotism-critisize/</link>
      <pubDate>Sun, 10 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/08/patriotism-critisize/</guid>
      <description>&lt;p&gt;近年来，随着国际环境的严重恶化和贸易环境的变化，民族主义情绪不断上涨。而这种情绪发展到一定程度时，就很容易被一些别有用心的人所利用。我们就从市场营销这个角度来具体分析。&lt;/p&gt;&#xA;&lt;p&gt;大家可以十分明显地感受到，最近很多企业在宣传中有一个共同的趋势，那就是强调自己的&amp;quot;&lt;strong&gt;民族属性&lt;/strong&gt;&amp;quot;，宣传自己是&amp;quot;爱国企业&amp;quot;&amp;ldquo;民族企业&amp;rdquo;，然后利用消费者们朴素的情感来大量售卖自己的产品。&lt;/p&gt;&#xA;&lt;p&gt;每每看到这种情景时，我的心中就十分疑惑：&lt;strong&gt;什么时候，&amp;ldquo;爱国&amp;quot;也成为了一个企业在宣传需要刻意强调的点？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;对于任何一家企业，它的运营都要尽到下面五个基本责任：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;生产出合格的产品，这是一个企业最根本的职责&lt;/li&gt;&#xA;&lt;li&gt;让投资者们能够赚到钱&lt;/li&gt;&#xA;&lt;li&gt;让消费者用上质量稳定的产品&lt;/li&gt;&#xA;&lt;li&gt;提高员工的薪资和福利&lt;/li&gt;&#xA;&lt;li&gt;生产过程中做到环保，不为了当前利益牺牲下一代的利益&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;除此之外，如果一个企业力有所余，那它就应该做到第6点责任——社会责任，比如慈善、救灾捐助等等。&lt;/p&gt;&#xA;&lt;p&gt;我们去评价一家企业，也应该从这五个方面观察。只要一家企业能够做到以上5个责任，那它毫无疑问就是一个合格的企业；如果以上5点责任有任何一点没有做到，那它就是一个不合格的企业。&lt;strong&gt;而一家合格的企业，无论如何，至少都不应该被所谓的&amp;quot;爱国&amp;quot;&amp;ldquo;不爱国&amp;quot;这样的风气所裹挟。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;那反过来思考，当一家企业刻意去强调&amp;quot;爱国&amp;quot;这件事是为何呢？&lt;/p&gt;&#xA;&lt;p&gt;**如果一个人做了坏事，他会拼命隐藏，深怕别人知道，因为它内心有愧；而当一个人做了好事，他拼命宣传，生怕别人不知道，那他绝对别有所图。**直白地说，就是想通过营造&amp;quot;爱国&amp;quot;的形象来割韭菜，甚至是掩盖自己赚取黑利的事实。既要名又要利，不可不谓之&amp;quot;贪&amp;rdquo;！&lt;/p&gt;&#xA;&lt;p&gt;而中国人有个特点，就是将道德的地位看的很重，甚至只要道德达到了某一标准，我们可以直接忽略他真实的能力和业绩。&lt;/p&gt;&#xA;&lt;p&gt;说直接一点，当某个企业的爱国形象深入人心时，人们的消费观就会变得不理智，人们不会关心这家企业究竟有没有尽到上面五个责任——尤其是第一条——而是看见它的&amp;quot;爱国&amp;quot;形象，觉得它十分&amp;quot;忠诚&amp;rdquo;，于是就觉得有好的形象的企业就应该得到支持，但我们却未必想过，它是否是一家合格的企业，是否是一家尽到责任的企业。事实上，有的企业还干得出一边花大量宣传费立爱国招牌提高销售量，另一边却偷工减料向市场输送大量不合格的产品，这样的企业我们能够支持吗？&lt;/p&gt;&#xA;&lt;p&gt;企业的这种过分形象营销在我看来是一种非常不好的做法，&lt;strong&gt;爱国本就是人内心的一种自然的情感，当一种自然的情感都需要被刻意宣传和强调时，在这所谓的伟岸的形象下又藏着多少&amp;quot;伪君子&amp;quot;干着&amp;quot;小人&amp;quot;之事？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;企业宣传是一方面，消费者不太理智的消费观念也是造成这一现象的一大因素。这点常常在饭圈中体现：只要是&amp;quot;爱豆&amp;quot;推荐的，我就无脑支持！而又有多少人是带着饭圈的心态来消费，只因为企业的宣传形象而将它视作自己的&amp;quot;爱豆&amp;quot;，只要是它的产品就无脑入手？没人在意它的质量，冲动支配下的感性消费取代了理性消费，是不明智的。&lt;/p&gt;&#xA;&lt;p&gt;当然，我知道有些人会反驳说我们买它的产品就是为了收获情绪价值，谁天天那么在意产品质量？如果你是富人，请随意；&lt;strong&gt;如果你只是一名普通消费者，我只希望当你发现自己被背刺之后还能保持从容和矜持。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;企业生产出合格的产品推向市场，消费者选择物美价廉质优的产品，相关企业能够赚取利润，继续存活发展，为消费者提供更好的产品，这是市场运行的基本规律。&lt;strong&gt;企业的第一要务是&amp;quot;生存&amp;quot;，是让企业活下去，而不是&amp;quot;爱国&amp;quot;！一家无法在市场竞争中存活的企业即使爱国又如何？爱国不应该成为企业经营失败的借口！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;更让人奇怪的是，打爱国牌、民族牌这种做法似乎在中国特别有效。所以以上所有的原因都有一个共同的背景，那就是中国人在几千年文化中形成的一种&amp;quot;&lt;strong&gt;忠奸史观&lt;/strong&gt;&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;通俗地讲，道德在中国社会中的比重很大。在古代道德甚至可以凌驾于法律之上，或者说，古代的法律某种意义上也是为了维护道德。而即使是到了现代社会，道德在人们心中仍然占据着很高的地位，人们热衷于谈论情义，热衷与分辨&amp;quot;忠&amp;quot;与&amp;quot;奸&amp;quot;，而很少透过这些表面去看一个人的实际作为，去看他究竟有没有尽到应尽的义务、责任，看他究竟为多少人带来了多少实际上的帮助。&lt;/p&gt;&#xA;&lt;p&gt;或许这也能解释为什么中国的形式主义很难得到根治了……&lt;/p&gt;&#xA;&lt;p&gt;只有当消费者们形成一种共识，主要从产品力的角度去评价一家企业，或许爱国营销就失去了它的基础，就不会有如此多的人被割韭菜，更多的企业就能够专注于产品的研发，而不是立招牌，贬低对方，市场竞争也能有更包容的风气吸引更多企业进入。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;可是我又不禁思考，我们的消费者如何才能形成这种共识呢？……&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060086074312&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060086074312&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;文章转自知乎原创文章，网站显示日期并非实际发表日期&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>媒体、信息与个人认知</title>
      <link>https://changyo.pages.dev/posts/2025/08/media-information-recognition/</link>
      <pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/08/media-information-recognition/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;这是我曾经写的一篇关于媒体的思考，后来将它作为大作业上交。内容全都是自己思考得出的，没有借助AI，所以我认为还是能比较好的反映我在这方面的认识的。里面有些内容不太适合公开发表，所以如果你能够阅读到这篇文章，希望它可以为你带来一些帮助。开头添加了摘要，方便读者把握文章思路。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;摘要：在这篇文章中，作者（我）通过自身使用网络媒体的亲身经历来讲述自己对媒体的理解和反思。文章通过四个饶有趣味的副标题来隐含文章的四部分主要内容：对媒体商业化过程中变质的思考，人类自身对媒体信息的欲望，接触不同立场媒体对个人认知判断的影响以及如何有效降低接触媒体的欲望。这些主题最终被作者汇总为信息时代下与媒体的共存之道。文章整体语言通俗易懂，讲解深入浅出。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;媒体是一个很大的概念，我们在生活中被各种各样的媒体包围。无论愿不愿意承认，我们的认知与行为都受到媒体的影响，而这种影响，将随着网络媒体逐渐发展而不断被放大。当媒体成为我们的皮肤和其他感官时，我们与外界的一切交流都将依赖媒体。当媒体筛选着它想要呈现的信息，我们脑中形成的认知体系便被有意地引导，这让我不禁思考，&lt;strong&gt;媒体究竟是我们的一个工具，还是用来奴役我们的囚笼。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;从逐渐浑浊的知乎说起&#34;&gt;从逐渐浑浊的知乎说起&lt;/h2&gt;&#xA;&lt;p&gt;知乎是一种典型的网络媒体，依托于互联网平台，具备内容生产，信息传播的功能，并且用户的互动性高。&lt;/p&gt;&#xA;&lt;p&gt;知乎于2011年在国内创立，早期的知乎采取邀请制，注册用户基本为行业精英，所以知乎在头两年发展中形成一种精英化的社区氛围，回答严谨，颇有学术研究之风，如今称之为&amp;quot;知乎遗风&amp;quot;。2013年，知乎开放注册，从此知乎的用户数激增。用户数的膨胀却带来优质内容的稀释和运维成本的提高。后期的知乎逐渐商业化，发展至今，最终的模样却让人一言难尽。&lt;/p&gt;&#xA;&lt;p&gt;我在2017年接触知乎，当时用户数已然不少，但也不太多，并且由于知乎前期的社区文化底蕴丰厚，还是能感受到&amp;quot;知乎遗风&amp;quot;的存在，遇见许多优质的回答。当时的我没有微信，不爱用哔哩哔哩（以下简称&amp;quot;B站&amp;quot;），QQ好友寥寥无几，于是知乎平台就成为我主要接触的网络媒体。人幼无知，所见所闻皆是新知，即使是随机阅读首页推荐的一些问答，也能很大地拓宽我的视野。&lt;/p&gt;&#xA;&lt;p&gt;数年后回首，我发现知乎在很大程度上影响了我的网络媒体使用习惯。长期浸润在文字为主的氛围中让我很早就适应电子阅读，后来即使是严肃的长篇大论，我也有耐心读下去，这个能力在当今称之为&amp;quot;深度阅读&amp;quot;；此外，长期文字阅读让我逐渐适应文字为主的网络媒体，对公众号，电子报纸天然有好感。尽管后来短视频兴起，如今更是成为媒体主流形式，甚至知乎也增加了视频功能，但我一直很难适应这种媒体传播形式的变化，并且对它一直持怀疑态度，这也是我至今未下载短视频软件（快手、抖音等）的原因。但不可否认的是，从文字到视频，信息传播的效率得到极大提升，同时也降低大众理解门槛，往后的大众媒体，将会越来越倾向于使用视频的形式进行宣传。&lt;/p&gt;&#xA;&lt;p&gt;除去这两点之外，知乎对我最大的作用是让我更早地出现了批判性思维的萌芽。如今知乎依然是中国舆论空间中剩下为数不多几个的可以提出批评和质疑的媒体平台之一，而在舆论管制较松的前几年，这种质疑和批评更盛。起初我接触到这类问答时，受到不小的震惊，但继续阅读完后，又会感叹自己的无知。久而久之，当大量阅读这类文章后，我的脑袋不自觉地形成了一种批判的阅读态度，开始逐渐对自己的世界进行反思。&lt;/p&gt;&#xA;&lt;p&gt;诚然，这些文章带给我的影响并非全都积极正面，甚至在一段时间内让我的思想过于&amp;quot;左&amp;quot;，对许多事物充满质疑。但我觉得，&lt;strong&gt;有所怀疑也胜于盲目接受，当日后接受的知识和个人阅历越来越多时，我又会将这段经历反复回顾，最终在人生中标出它的定位。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;可惜的是，&amp;ldquo;知乎遗风&amp;quot;最终随着用户暴增而消失殆尽，自疫情开始，各种不同学历、不同身份、不同目的的人进入知乎，发表着他们的观点。但快节奏的时代下，耐心和礼貌变得稀缺珍贵，于是各种问题之下变为你拉我踩的吵架场，各种各样的情绪被反反复复输出，认真分析和讨论被漠视，置之一旁。知乎变为一滩越来越浑浊的水，人们起初或许一身干净地走过去，出来后身上都或多或少的带上污浊。而这就是当今知乎的现状，如果你来回趟过它，你身上的污浊会越来越重。&lt;/p&gt;&#xA;&lt;p&gt;但比较可悲的是，知乎仍是国内高质量的&lt;strong&gt;大众网络媒体平台&lt;/strong&gt;之一，在其他平台，低质内容大行其道更令人讨厌。我思考着，一个媒体想要持续地运营就需要足够的资金，将媒体公开给大众，吸引流量，便有变现的可能，为了吸引最广大的群众，就需要呈现最受大众喜欢，最能挑动观众情绪的内容，而这类内容往往较为低劣。所以，在一个媒体变得越来越商业化时，媒体是否背离了自己&amp;quot;提供客观事实和独特视角&amp;quot;的初心，是否会为了追求盈利而导致媒体内容质量不断下滑？&lt;/p&gt;&#xA;&lt;p&gt;这个问题我无法回答，因为它关系到媒体的存亡，或许只有媒体自身才能够回答。但我看到的案例中，无一能够逃脱这个规律。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;反复拉扯的微信公众号&#34;&gt;反复拉扯的微信公众号&lt;/h2&gt;&#xA;&lt;p&gt;曾有段时间我刷知乎的强度较大，平均每天花3个小时以上的时间去浏览那些热榜，或者主页推送。知乎APP有个很有意思的设计，当你在主页返回时，它不会为你退出软件，而是自动刷新推送新的内容，而我每次都败在这最后一步上。&lt;/p&gt;&#xA;&lt;p&gt;后来实在难以忍受自己的状态，我便直接卸载了知乎。可我在手机上阅读的习惯尚未改变，便下意识地去寻找替代品，这个替代品就是微信公众号。在很大程度上，微信公众号的内容、使用体验和知乎相近，于是我很好地适应公众号阅读。&lt;/p&gt;&#xA;&lt;p&gt;如今的推荐算法已经十分成熟，能够有内容生产的社区或平台，都需靠算法留住用户，因此我在公众号上停留的时间也越来越长。最初，只是阅读自己关注的几个公众号的文章，后来觉得&amp;quot;喂不饱&amp;rdquo;，又不断地浏览推送的合我胃口的文章，每过五分钟，公众号界面便会有推荐更新，到最后，微信公众号实际上变为了我的另一个&amp;quot;知乎&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;在中途，我也发现自己逐渐成瘾的行为，便几次试图像卸载知乎一样与公众号隔绝。但微信却万万不能卸载，于是每次和公众号&amp;quot;心断意绝&amp;quot;后不久，我又按捺不住心中对信息的渴望，重新沦陷其中。&lt;/p&gt;&#xA;&lt;p&gt;当我偶然间发现微信的日均使用时长比知乎更甚时，我不禁停下来思考自身。我发现我对信息的渴望是如此强烈，以致我卸载知乎后千方百计地想要去寻找替代品来维持信息的输入，当我感受不到信息的输入时，我会变得害怕，仿佛自己与这个社会隔绝。&lt;/p&gt;&#xA;&lt;p&gt;曾经通讯并不先进，媒体的影响力受限于地域和传播技术，相对封闭的人们有着大量闲散的时间，慢慢感受生活；而如今网络技术高度发达，建立在此基础上的网络媒体的影响力空前之大，每时每刻我们都面对着媒体推送的信息，每时每刻我们都面对着媒体信息的输入。人们花了大约十年来适应这种状态，适应了每天接收着海量信息，将几乎所有闲暇时间用来刷视频就是一个典型例子。而一旦断绝信息的输入，我们却难以回到曾经那种感受生活的状态，首先袭来的是一种孤独和恐慌，随后意识到自己与社会&amp;quot;落伍&amp;quot;时，便不计代价地去寻找回原来的状态。&lt;/p&gt;&#xA;&lt;p&gt;媒体成为了维系人们生活的一个关键。但我觉得，&lt;strong&gt;它就像是在公开贩卖毒品，让每个人都染上一种名为&amp;quot;信息渴求症&amp;quot;的&amp;quot;瘾&amp;quot;。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;曾经我或许还会觉得刷知乎要比刷视频高贵一些，毕竟知乎全是文字，需要一定阅读水平，但现在我确信，无论是刷知乎，刷公众号，还是刷抖音，刷B站，它们本质都是同一种行为，都是人们无法控制内心对信息的欲望，而不小心被网络媒体所控制。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;所以学会控制信息的欲望，应该成为这个时代接触媒体之前的&amp;quot;先修课&amp;quot;。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;中国长城防火墙（GFW），在网民中亦简称为&amp;quot;墙&amp;quot;。它在中文互联网生态中是一个敏感的话题，但事实是相当部分网民都对其有所了解，也有部分网民成功地走出墙外，此行为亦被称之为&amp;quot;科学上网&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;我中学期间有过零散的科学上网经历，但真正开始了解、使用并适应科学上网的状态，是在进入大学之后。如何科学上网显然不会在本文讨论，我认为它更像是一把筛子，通过这个筛子的人，或许能有一定心态面对外网的冲击。&lt;/p&gt;&#xA;&lt;p&gt;进入外网深入使用后，受到最大影响的显然就是自己长期以来建立的价值观和认知体系。像YouTube, Twitter这样的国际媒体平台不仅体量远大于国内相应媒体，审核制度也十分宽松。更重要的是，能够在这些平台上听到各种各样的声音，它们来自不同文化背景，不同利益需求，不同价值观，不同意识形态。&lt;/p&gt;&#xA;&lt;p&gt;通过外人的角度来重新看待自身的环境是一种很奇特的体验，**一个新观点未必客观，甚至可能别有用心，但重要的是它能够引起反思，有了反思便会有对真相的探寻，而最后这真相究竟孰真孰假，在你的心中自会有一杆称去去评价。**所以我认为，走出墙外对于培养个人独立思考意识很有帮助。&lt;/p&gt;&#xA;&lt;p&gt;这也让我逐渐对媒体的本质有更深的理解。媒体最大的功能是提供一种看待事物的视角，这个世界上不存在绝对客观的媒体，中国没有，国外也没有，任何媒体的背后都有着某种力量在操纵，它可以是政治，也可以是金钱。&lt;/p&gt;&#xA;&lt;p&gt;这一点也常常让媒体变为武器，变为统治工具，它可以通过选择性报道和推送，不断强化人意识中的某一观念。而如果人们常常只能听到一种声音，这种观念就会不断被加固，甚至慢慢积淀，随时间演化为意识形态。当带着不同意识形态背景的人们争锋时，便总是产生数不清的偏见，有时甚至罔顾事实，发泄情绪。发展到极端时，意识形态便会诞生民粹。一个集体如果变得情绪化，在错误的道路上便会很难回头。&lt;/p&gt;&#xA;&lt;p&gt;这个时候，没有主见的人会被集体裹挟着前进；能独立思考的人，会设法在大环境下维护自己的权益，争取更好的生活。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;要想做到独立思考，基本的前提是能够接受不同媒体的观点；而更基本的前提是，要存在不同媒体的观点……&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;我即是媒体从输入到输出&#34;&gt;我即是&amp;quot;媒体&amp;quot;，从输入到输出&lt;/h2&gt;&#xA;&lt;p&gt;上文讨论了这么多，其实都是把&amp;quot;我&amp;quot;和媒体看成了两个互相隔离的对象，但很多时候，我们自身也是媒体平台中的内容创作者和传播者。我们对媒体的态度，不能仅局限于抵制或者拥护，当我们和媒体部分融为一体时，我们的行为又有何变化？&lt;/p&gt;&#xA;&lt;p&gt;以自身为例，我不仅刷知乎，同时还会在知乎上进行创作，并且主要是一些文章。当我在写作时，我体验到一种对知乎的特殊情感，它似乎变得对我不再那么有吸引力，尤其是当我把自己创作了数千字的文章发表后，在一段时间内几乎对知乎完全失去了兴趣，使用知乎的欲望大大降低，只会偶尔打开软件查看有多少人点赞和评论——虽然至今寥寥无几。&lt;/p&gt;&#xA;&lt;p&gt;再以我常常使用的另一款软件哔哩哔哩（B站）为例，当自己开始学习剪辑，制作视频并且发布作品后，刷B站的欲望明显降低，只想查看自己作品的流量和点赞，对B站的使用也越来越注重工具性而非娱乐性。&lt;/p&gt;&#xA;&lt;p&gt;这对于纠治过度沉迷于网络媒体提供了一种新的思路：我们不仅仅是媒体的宣传对象，也可以是加入媒体本身，成为内容的创作者，媒体的宣传者，这种行为有助于显著降低我们对媒体的欲望。&lt;/p&gt;&#xA;&lt;p&gt;换句话说，&lt;strong&gt;抵抗媒体大量信息输入的最好方法便是反向去输出！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;总之，我与媒体的关系随着我的认知、经历不断深化，从一开始我只能毫无反抗地接受媒体宣传的信息，到能够对媒体的信息带有反思和批判，再到主动融入媒体，成为内容创作者，这个过程漫长却让我逐渐触及媒体的本质。但我始终觉得，媒体只是我们认识世界的一个视角，想要认识这个真实的世界，绝不可能只听取一个媒体的声音，也绝不可能全盘接受媒体的观点，兼听则明，同时学会不断建构自己的知识体系，反向输出。这或许就是信息时代下我们与媒体的共存之道。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168060086773184&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168060086773184&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;文章来源为知乎上原创文章，网站显示日期非真实日期。&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Test</title>
      <link>https://changyo.pages.dev/posts/2025/08/test/</link>
      <pubDate>Mon, 04 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/08/test/</guid>
      <description>&lt;h1 id=&#34;h1-一级标题&#34;&gt;h1 一级标题&lt;/h1&gt;&#xA;&lt;h2 id=&#34;h2-二级标题&#34;&gt;h2 二级标题&lt;/h2&gt;&#xA;&lt;h3 id=&#34;h3-三级标题&#34;&gt;h3 三级标题&lt;/h3&gt;&#xA;&lt;h4 id=&#34;h4-四级标题&#34;&gt;h4 四级标题&lt;/h4&gt;&#xA;&lt;h5 id=&#34;h5-五级标题&#34;&gt;h5 五级标题&lt;/h5&gt;&#xA;&lt;h6 id=&#34;h6-六级标题&#34;&gt;h6 六级标题&lt;/h6&gt;&#xA;&lt;p&gt;text 文本&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;BOLD 加粗文本&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;inline code 行内代码&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;短代码块：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168057736648797&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168057736648797&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-py&#34; data-lang=&#34;py&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --&amp;gt; comment&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;codeblock&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;p&gt;长代码块测试：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;details class=&#34;code-details my-6&#34;&gt;&#xA;  &lt;summary&gt;Show code (36 lines)&lt;/summary&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;  &lt;button class=&#34;code-copy-btn&#34; data-copy-code=&#34;code-1784168057736987407&#34; type=&#34;button&#34; aria-label=&#34;Copy code&#34;&gt;&#xA;    &lt;svg class=&#34;copy-icon&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;&gt;&lt;/rect&gt;&#xA;      &lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;    &lt;svg class=&#34;check-icon hidden&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;polyline points=&#34;20 6 9 17 4 12&#34;&gt;&lt;/polyline&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/button&gt;&#xA;  &lt;div id=&#34;code-1784168057736987407&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;createElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;canvas&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getContext&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2d&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;appendChild&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;margin&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;overflow&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;hidden&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;background&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;#000&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;resize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;innerWidth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;innerHeight&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;addEventListener&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;resize&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;resize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;resize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;particles&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;vx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;vy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;random&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;animate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fillStyle&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rgba(0, 0, 0, 0.05)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fillRect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;particles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;vy&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;beginPath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;arc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;PI&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fillStyle&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`hsl(&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;360&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;, 80%, 60%)`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fill&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;requestAnimationFrame&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;animate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;animate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;mermaid矢量图测试测试：&lt;/p&gt;</description>
    </item>
    <item>
      <title>电子产品消费碎碎念</title>
      <link>https://changyo.pages.dev/posts/2025/08/advice-on-consumption/</link>
      <pubDate>Sat, 02 Aug 2025 15:47:15 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/08/advice-on-consumption/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;这篇文章的内容本来是想写在上一篇文章当中的，但是考虑到话题相关度不高并且上一篇文章有被禁的风险，于是单独开一篇文章来好好聊聊消费的话题，也算是这几年自己网络消费经验的总结。如果有兴趣的读者，可以读一读上一篇文章。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://changyo.pages.dev/posts/2025/08/patriotism-critisize/&#34;&gt;当爱国成为一种营销&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这篇文章的消费正如标题所言，主要针对于电子产品的消费。但文章所体现出的消费原则，在其他方面或许对读者也会有所受用。&lt;/p&gt;&#xA;&lt;p&gt;我看过许多讲关于电子产品选购的建议，但很多文章都是聚焦于技术性，这样的文章虽然确实可以实际解决一些问题，但我不免觉得读起来有点“难以完全下咽”，于是我希望写一篇以消费者为主体的选购指南，从用户出发，关注用户的需求和选购时遇到的疑惑，帮助他们在大部分场景下做出最适合自己的选择。这种经验的传授或许那些一个个具体的参数比较要更易于接受。&lt;/p&gt;&#xA;&lt;p&gt;这里事先声明，这些消费建议均为个人经验的总结。我自己也比较喜欢鼓捣一些电子产品，在产品挑选这方面的也有不少研究。所以希望我的总结能够给大家带来一些帮助。(*^▽^*)&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;商品价值理论&#34;&gt;商品价值理论&lt;/h2&gt;&#xA;&lt;p&gt;任何一件商品。其价值都由两部分组成——功能价值和情绪价值。用钱购买商品本质上是在用钱购买它的价值。大部分商品的价值主要还是由功能价值组成，比如我们平时大部分消费的产品如厨具、日化等；当一件商品的情绪价值比重比较大时，它大概率会成为奢侈品。而对于本文所讨论的电子产品，大多数消费者都比较侧重于功能价值。但这也并不意味着情绪价值的作用可以忽略。我们常常能够看到很多消费者比较崇尚某些品牌，对他们的产品选择了无条件的信任。固然，一些优秀的厂商可以做到高水平的质控和售后保障，不辜负用户的期待。但如果有些厂商有所目的的去培养这样一群粉丝，却有可能反受其害。总之，商品价值主要由功能价值和情绪价值组成。&lt;/p&gt;&#xA;&lt;p&gt;我建议消费者们更多的关注功能价值，并且是关心和你的需求强相关的功能价值。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;消费指南&#34;&gt;消费指南&lt;/h2&gt;&#xA;&lt;h3 id=&#34;明确你的需求&#34;&gt;明确你的需求&lt;/h3&gt;&#xA;&lt;p&gt;这是最易懂的一点，也是最难做到一点，最容易半途而废被遗忘的一点。举个例子，大家就理解了。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;小明最近想买一个平板，目的是为了无纸化学习，减轻学习负担。他既不爱玩游戏，也不怎么追剧，只是想要一块平板代替纸质课本和作业。于是他打开了购物软件，搜索“平板”，结果五花八门的品牌、各式各样的型号涌入眼中，让他一时缓不过来。在他冷静之后，他想起自己想要的产品。于是浏览一番，找到了一个A品牌的平板。看了看功能详细介绍，基本都符合他的预期。可是毕竟要货比三家嘛，于是小明便去看了看其他品牌和型号了。但是这一看，却让他冷静不下来了。他一看，B品牌居然有着比A品牌更好的屏幕，分辨率又高，屏幕又大，宣传说它追剧的体验会会很棒；他一看C品牌，扬声器设备那么好，宣传说它的影音效果非常的令人享受；他一看D品牌居然内置了AI功能；而且是全局AI，都不需要专门下载一个AI软件了，一个生活助手实在太方便了。他一看E品牌，电池容量非常大，续航也非常持久，这样的话，充一天电就可以连续用好几天了……小明逐渐迷失在这些比较当中。他回过头来想想第一个品牌A。似乎除了书写体验好一些、系统稳定一些之外就没有什么值得称赞的优点了。于是他想追求更好，功能更全面的产品。但无论怎么找，除非他特别有钱买最贵的产品，否则他想要的产品总会有这或那的缺陷，但他总是担心这部分缺陷会影响到他最后的整个体验。&lt;/p&gt;&#xA;&lt;p&gt;小明就这样一直犹豫着。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;从这个故事我们能大致看出。小明在购物过程中逐渐迷失了自己的需求。于是被产品的宣传给牵着鼻子走。其实我们帮他明晰需求，就能够解决很多烦恼。&lt;/p&gt;&#xA;&lt;p&gt;小明买平板的重点是用来学习和替代纸张。那显然最核心的需求就是一个优秀的平板书写体验，它应该占最高的优先级；其次，考虑到学习的时间，续航也是一个很重要的点；而它又要用于书写，屏幕的大小也会对它的使用有比较大的影响。那么至于其他的呢？我觉得基本可以忽略。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;什么，你说刷新率只有60Hz，太低？拜托，不就是动画没有那么流畅吗，用平板来学习的人，天天盯着系统动画干嘛；&lt;/p&gt;&#xA;&lt;p&gt;什么，你说屏幕是LED的，分辨率才1080P，不高？拜托，你是拿来写字的，1080P基本满足了绝大部分场景，你的字迹难道细致到必须要4K的屏幕才能发挥出来吗，LED怎么你了，耗电量小还保护你的眼睛呢！而且我又不追剧，要那么好的屏幕干嘛；&lt;/p&gt;&#xA;&lt;p&gt;什么，你说扬声器数量少，音质不好？拜托，现在听歌不都是戴耳机吗，而你拿平板平时也就听听网课罢了，你要那么好的音质干嘛；&lt;/p&gt;&#xA;&lt;p&gt;什么，你要全局AI？拜托，现在全局AI基本都像一坨屎一样的，还不如直接下个豆包。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;其实我想说的是，我们很多人消费时对自己的需求都或多或少有个认识。但不太清晰，中途容易被厂家的各种宣传给带偏。导致自己产生了很多的伪需求。这部分伪需求在你最终消费时，会让你额外花去很多不必要的财产。等你买回来发现那些花里胡哨的功能你根本用不上。而你最期待的功能却十分的拉垮时，你是否会对这次消费感到失望呢？&lt;/p&gt;&#xA;&lt;h2 id=&#34;熟悉你的使用习惯&#34;&gt;熟悉你的使用习惯&lt;/h2&gt;&#xA;&lt;p&gt;这点同样重要，尤其是当你听取其他消费者的使用体验时。大部分消费者对产品的评价都是基于自身的使用情况，他们并不会将前因后果描述清楚，而是用非常模糊的没有标准的词语来表达他们的情绪。比如说外表太丑了，用起来太别扭了，太卡了，太耗电了……&lt;/p&gt;&#xA;&lt;p&gt;但是究竟怎样的标准才算美呢？究竟怎样的速率才算不卡呢？究竟怎样的操作设置才算顺手？怎样的耗电功率才能够算续航久呢？这些问题都没有标准答案，完全因人而异。可又对用户的体验产生了很大的影响。&lt;/p&gt;&#xA;&lt;p&gt;我们接着刚才的例子，来看看具体的体现和选择。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;小明最后明确了自己的目标。准备选择品牌A。他想看看其他用户的评价，但是这一看却又让他陷入了迷糊。有用户说，这续航太差了呀，才玩了两个小时就没电了，但是有的也说续航不错，记了一天笔记也没有问题；有的用户说内存完全不够呀，基础版的才下了多少软件就占满了，有的却说内存充足，对日常使用绰绰有余；有的用户说这系统功能太少了，用起来太无聊了，有的却说系统运行非常稳定，用起来非常的让人省心。&lt;/p&gt;&#xA;&lt;p&gt;小明想了想，自己买平板几乎只是用来学习，记笔记的耗电量也并不算太大，充满电是完全够用一天的。再加上他每天晚上都要回宿舍，只要每晚睡前给平板充一次电就 OK 了，所以续航不是问题。此外，小明不准备将平板当成一台副手机用，而是让它纯粹一些。所以基本不会下什么其他的软件，因此内存这块也根本不是问题。至于系统，只要稳定耐用就OK了。&lt;/p&gt;&#xA;&lt;p&gt;就这样，在明确了自己的使用习惯后，小明依然相信A品牌的产品是能够很好的满足自己的使用需求的。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;每个人都带着不同的目的消费，使用习惯又千差万别,对产品的评价也各有说法。于是我们最容易碰见的场景就是用同一台型号，同样配置的用户。A用起来非常的流畅，B用起来却卡顿无比，并且时有各种弹窗出现。这从中都折射出消费者不同的使用习惯。&lt;/p&gt;&#xA;&lt;p&gt;关于使用习惯，我还要多念叨几句，使用习惯和你的产品的寿命息息相关。我家中有一台10年前的老电脑，但我可以说它或许比国内大部分用户的电脑，运行起来更加流畅，体验也更加舒服。尽管它只有4GB内存，连1080P都不到的分辨率，但我很早就知道如何好好的维护一个电脑系统。在良好习惯的作用下，这台老电脑现在也依然比很多用户的电脑能打。手机也是同理，为什么有些人手机是各种广告和卡顿乱弹窗，有的人的手机却内外像一个艺术品。&lt;/p&gt;&#xA;&lt;p&gt;（当然有人也会反驳这个观点，因为电子产品对他们来说就是普通的消费品，既不必要也不愿意花时间去做所谓的养护。时机成熟，索性直接换一个算了。我无意评价这些人，这篇文章或许不太适应于这些人。但我认为一个良好的使用习惯对于产品的体验是有着实打实的影响)&lt;/p&gt;&#xA;&lt;h2 id=&#34;产品生态并非绝对重要&#34;&gt;产品生态并非绝对重要&lt;/h2&gt;&#xA;&lt;p&gt;如果在电子产品领域消费比较多的话，一定会碰到这样一个问题。手上的某某是X品牌的，而他家的品牌刚好也有我想要的产品类型。那么是不是最好就选择他们家的品牌呢？&lt;/p&gt;&#xA;&lt;p&gt;这个观念比较普遍，但究竟是对是错，还真的难以判断，需要具体分析。看看这个生态带来的所谓“帮助”，是否真的能够很大程度上解决你日常使用的难处、痛处，能否切实改善你的使用体验。&lt;/p&gt;&#xA;&lt;p&gt;有些产品经常用互联互通来宣传所谓的产品生态。但我觉得目前除非能够做到像小米智能家居那样程度的生态互联。其他什么的所谓传照片、传文件、同屏协作对于普通用户基本是毫无用处。现在大部分人传文件，都是直接QQ/微信，用起来或许比那些所谓的互联互通还要更加顺手和方便。&lt;/p&gt;&#xA;&lt;p&gt;而一些配件之类的产品选择则因人而异。有人喜欢相同品牌，因为它的兼容性和稳定性更强一些，而且有些功能是生态内独有的。但是有些喜欢以产品的功能为主，自己搭配，这样还能够体会到不同的产品生态。&lt;/p&gt;&#xA;&lt;p&gt;产品生态有时候就像一个围城，外面的人想进来，里面的人想出去。但它并不是绝对重要的。&lt;/p&gt;&#xA;&lt;p&gt;如果有时不想花精力去比较，那就直接选择生态内产品，保险一些。但我个人而言更喜欢体验不同生态的产品。&lt;/p&gt;&#xA;&lt;h2 id=&#34;合理预设情绪价值需求&#34;&gt;合理预设情绪价值需求&lt;/h2&gt;&#xA;&lt;p&gt;讲了这么多，似乎都是在谈功能价值。但是情绪价值也不容忽略。&lt;/p&gt;&#xA;&lt;p&gt;尤其是当我们购买一些贵重的物品时。我们总是会或多或少的期待，它能够给我们带来一些情绪上的满足。而我的建议正如小标题所言：合理预设。有时对产品的过多期待反而影响了使用的体验，当你回归并且聚焦于自身的需求时，一些产品别有用心的设计，或许就给你带来一些小小的惊喜。而且一个人在购买商品前后的需求是会发生变化的，买之前你觉得不一定能用到的功能或许真的用起来了呢。&lt;/p&gt;&#xA;&lt;p&gt;此外，需要重点讨论的便是品牌的崇拜。曾经我们很多人有过个人崇拜，甚至历史上有不少的事件是由于个人崇拜所引起。如今个人崇拜虽然有所减免，但品牌崇拜呢又逐渐的兴起。甚至出现了使用某一品牌就代表着自己高贵，更高人一等的观念。我觉得这在电子产品消费领域是非常幼稚的。&lt;/p&gt;&#xA;&lt;p&gt;电子产品的大部分价值都是来源于产品的功能性。甚至相当部分的情绪价值也是在这些功能性的基础上衍生出来的。真正由品牌所带来的情绪价值。其实并不是那么多。&lt;/p&gt;&#xA;&lt;p&gt;毕竟电子产品也并不是什么奢侈品。它不过就是不同的价位就对应着不同的功能和体验，仅此而已。&lt;/p&gt;&#xA;&lt;h2 id=&#34;多看评和线下体验&#34;&gt;多看评和&amp;amp;线下体验&lt;/h2&gt;&#xA;&lt;p&gt;其实大部分人如果不去特意了解的话，仅仅看测评也能解决90%以上的问题。虽然很多测评机构背后或多或少都会受到一些利益的驱动，对于某些问题有所忽略。但是对于绝大部分用户日常使用的功能，这些测评机构还是相当的良心且客观的。如果看完测评后心中有了想法。不妨直接去线下直营店体验一番。不过这条主要针对于手机、电脑、平板、手环等产品。如果是其他产品，想要获得直观的体验可能还是有些许困难的。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;总之这些建议就是我个人这么多年来在电子产品消费上的一些经验的总结。电子产品它本质上也是一种消费品。能够成为所谓“奢侈品”的电子产品并不多见。希望大家能够挑选到最符合自己需求的产品，而不一定是功能最全面的产品。“小而美”有时比“大而全”更让人喜爱。&lt;/p&gt;</description>
    </item>
    <item>
      <title>简易设计入门——给大众的设计学通识课 4</title>
      <link>https://changyo.pages.dev/posts/2025/06/design-tutorial-4/</link>
      <pubDate>Sat, 28 Jun 2025 14:46:01 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/06/design-tutorial-4/</guid>
      <description>&lt;p&gt;这是设计入门系列的第四篇阅读笔记，建议将前三篇笔记阅读完后在来读这一篇哦~&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://changyo.pages.dev/posts/2025/07/design-tutorial-1/&#34;&gt;简易设计入门——给大众的设计学通识课&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://changyo.pages.dev/posts/2025/07/design-tutorial-2/&#34;&gt;简易设计入门——给大众的设计学通识课 2&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://changyo.pages.dev/posts/2025/07/design-tutorial-3/&#34;&gt;简易设计入门——给大众的设计学通识课 3&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;今天我们来讲一讲四大原则中最后一个原则：&lt;strong&gt;对比&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;首先要指出，“对比”原则是四大原则中难度最大的，但同时效果也是最好的。如果运用得当，他产生的效果可以比前面三个原则更加强烈。但事实往往是，我们一般的设计中很难有意识地去使用这种原则；即使想要运用，很多时候也给人一种蹑手蹑脚的感觉，无法达到对比所想要的那种效果。&lt;/p&gt;&#xA;&lt;p&gt;所谓对比，就是突出不同元素之间的不同点。&lt;strong&gt;如果两个元素不完全相同,就应当使之不同,而且应当是截然不同.否则,这两个元素就会出现冲突,它们就不应该同时出现！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这句话可能会有点难以让你信服，但它其实揭示了设计中一个更深层次的思想：&lt;strong&gt;要足够的大胆,勇敢去尝试,千万不要畏手畏脚!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这也是我觉得对比这个原则比较难掌握的地方。下面我们通过一些例子来让你体会对比带来的震撼。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;对比的形式多种多样，包括颜色、字号、字体、空间等等。&lt;/p&gt;&#xA;&lt;p&gt;颜色但给人的感觉是最强烈的，字体次之。下面是一份新闻简报，从亲密性、对齐和重复原则来看，它做的很不错，但你第一眼看过去似乎并没有什么能够吸引你的眼球。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-1.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;新闻简报我们通过强化它的对比，再看一眼效果：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-2.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这一版将标题大小写修改了一下，这样可以让标题使用更大的字号，更紧致的字体，这个技巧在以后的设计中也会经常用到。&lt;/p&gt;&#xA;&lt;p&gt;当然，它最大的变化显然是黑色和纸张颜色的对比。黑底白字的标题十分具有吸引力，为了强调这种黑色，标题下方海加了一根细线，这样又形成两种对比，中间白色间隙和上方黑底互相对比，短黑线和标题底色的粗黑线形成对比；&lt;/p&gt;&#xA;&lt;p&gt;此外，子标题们使用了和标题一样的字体，它和正文细小的字体对比强烈，人们阅读新闻时往往先阅读标题，所以在这里强化标题的表现是明智的。&lt;/p&gt;&#xA;&lt;p&gt;除了对比之外，这里还强化了“重复”原则的表现，在页面底部多了一条中等粗细的黑线，如果你看过上一篇笔记的话，应该会知道它的视觉引导作用。（不知道就快去&lt;a href=&#34;https://changyo.pages.dev/posts/2025/07/design-tutorial-3/&#34;&gt;补一补&lt;/a&gt;！[○･｀Д´･ ○]）&lt;/p&gt;&#xA;&lt;p&gt;我们可以再看一个例子：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-3.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这张明信片在亲密性和对齐方式上做得还算合格，重复虽然有，但是太弱了。除了标题你或许很难看出它的重点。尤其是这个心形logo的颜色和整张纸的浅紫色太相近了，这就不能算是对比，只能称为“冲突”了。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-4.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;我们将背景换为了亮白，这样logo就很明显，而标题部分也用了深紫色的填充，就像前面一个例子一样，两种颜色形成了强烈的对比。而且我们也发现这个标题的字体变为手写字体，和下文的非衬线体又形成对比。还有一些其他细节也可以发掘。&lt;/p&gt;&#xA;&lt;p&gt;用这两个例子主要是为了说明我们平常在使用对比原则时最容易使用的方法就是改变底色，改变字体。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;这里再来谈一谈对比背后的大胆，&lt;strong&gt;对比本身的表现效果是最强烈的，甚至可以覆盖前面三种原则，要想表现出这种强烈的效果那设计者本身就要敢于去尝试，在一些细节处理上做得足够勇敢，要让对比足够的强烈！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-5.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这张明信片结构还算分明，但有些细节让人容易疑惑，比如你会发现中间的线条粗细和上下不同，这到底是有意为之还是设计者的疏忽？这个标题我们可不可以让它再显眼一些？&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-6.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;上面两种设计都有一个特点，就是线条的对比很明显，你不会觉得这是设计师的疏忽，下面那张设计中甚至直接把标题背景填充，像是把线条拉粗了很多倍。此外这两张明信片的标题都做的更加显眼了，不像之前似乎还有点缅甸。所以勇敢一些，突破你自己的想象！&lt;/p&gt;&#xA;&lt;p&gt;（有人或许会问如果全部做得大胆，那我如何做出那种精致的感觉呢？其实这种精致典雅感也是可以通过对比实现，下文的空间对比会讨论）&lt;/p&gt;&#xA;&lt;p&gt;再给一个例子，仔细体会吧~&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-7.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-8.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;除了常见的颜色、字体、字号的对比，还有视觉方向、空间的对比。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-9.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;我们看这页宣传单，关于颜色字体就不赘述，我们看一看文字的布局方向：&lt;/p&gt;&#xA;&lt;p&gt;标题是水平排列的，占据了整个长度；正文分为了五个模块，相当于五个竖直的窄列（其实这也是一种重复）；正文又是按照从左到右方向阅读的。—— &lt;strong&gt;一横一竖，也是一种对比。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;对比还可以让读者轻松的看出信息的结构，这点本来是亲密性的作用，但对比运用得当，效果往往更好。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-10.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;比如上面这张传单（它还是上面那张淡紫色明信片的例子），可以清晰的将信息划分为四层，因为这四层结构之间的对比非常强烈！&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-11.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;再看看这张（还是同一个例子），你也许也会被它质朴的设计所吸引，甚至想要收藏。其实这种精致典雅就是通过小而优雅的字体和大而连续的空白的对比产生的，你依然可以很明显地看出信息分为三层，尽管内容简洁，但你会忍不住想仔细多看两眼。&lt;/p&gt;&#xA;&lt;p&gt;这种设计在制作一些字幕时也很受欢迎！（至少我喜欢这种风格）&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;总而言之，对比是为了增强页面的视觉效果，帮助组织信息。对比突出的是不同元素间的差异，要实现有效的对比，你就得让两个元素截然不同，所以很多时候设计者必须要大胆，要敢于设计。不能在相似的元素间模糊，如果对比不够强烈，那它们就不应该同时出现！&lt;/p&gt;&#xA;&lt;p&gt;我们平时生活可能用的最多的对比就是颜色、字体、字号了，但空间布局的对比其实也可以有意的设计一下。注意加大对比力度，不要将两根粗细相似的线放一起，不要把深棕色文本和黑色背景进行对比，不要用多种类似的字体。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;OK，首先恭喜能够阅读到这的读者朋友们(*^▽^*) ，尤其要感谢从第一篇笔记一直阅读坚持到这的读者，既然你这么信任我，我也会尽力做到每篇文章都带给你们知识。我四篇文章其实主要是对原著的转写，概括和自我阐述，在这个过程中我逐渐理解了设计四大原则的强大之处。如果你在平时有意地使用这四大原则，甚至可以是一个一个原则落实，你都会发现自己平时的一些作品，无论是设计专业学生的作业，还是自己的论文，简历或者文章推送的排版，应该都会发现比较明显的提升。&lt;/p&gt;&#xA;&lt;p&gt;作为一个非设计专业学生，去学习这些比较基础的设计知识其实是很有趣的一个过程，此外，能够和自己的写作爱好结合起来传播知识更让人有成就感，我在一周之内完成了这四篇文章，看完这四篇笔记的读者基本具备了设计学的一些框架和理论。现在，你们可以多多留意路上的一些广告、宣传册，可以翻翻自己以前的作品，品味一下它的设计，然后心里想：啊，其实这里可以这样修改！······&lt;/p&gt;&#xA;&lt;p&gt;这四个原则介绍完了，但原著仍有很多内容，我会继续阅读，不过不会像现在这样高强度更新了。也欢迎大家继续订阅我的专栏！&lt;/p&gt;&#xA;&lt;p&gt;最后贴一张简历的设计样例吧，它综合运用了四个原则，让它从原来的普通变得引人，不妨细细品味它的设计细节吧~&lt;/p&gt;&#xA;&lt;p&gt;简历（修改前）:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-12.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>简易设计入门——给大众的设计学通识课 3</title>
      <link>https://changyo.pages.dev/posts/2025/06/design-tutorial-3/</link>
      <pubDate>Fri, 27 Jun 2025 14:46:06 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/06/design-tutorial-3/</guid>
      <description>&lt;p&gt;这是设计入门系列的第三篇读数笔记，建议先把前两篇阅读阅读完再继续阅读哦。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://changyo.pages.dev/posts/2025/07/design-tutorial-1/&#34;&gt;简易设计入门——给大众的设计学通识课&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://changyo.pages.dev/posts/2025/07/design-tutorial-2/&#34;&gt;简易设计入门——给大众的设计学通识课 2&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;今天我们来讲一讲第三个原则——&lt;strong&gt;重复&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;这里的重复把它理解为“&lt;strong&gt;一致性&lt;/strong&gt;”或许更容易接受。因为它不一定是某种元素反复出现，没有变化，它可以是某一种形式，比如字体，字号，某个格式，某条线或边界，颜色等等，它也可以是某些具有部分相同元素的意像的出现。所以用“一致性”来描述更好理解。但在行文中我们依然采用重复重复这个词汇。&lt;/p&gt;&#xA;&lt;p&gt;“重复”这个原则在长文本（比如10页的杂志报告等等）体现的最为明显。文章越长越需要一些反复出现的设计来提醒读者这都是同一篇文章。&lt;/p&gt;&#xA;&lt;p&gt;此外，在一些成系列的物件中，重复能够很好的地统一风格，让大家一眼就能看出他们都是属于某个公司的。比如一家公司要设计企业名片、信笺和信封，如果三者都采用统一的设计风格——也即重复——那么其他人可以很快地辨别出这次的信封和上周的名片是属于同一家公司的。你看，这不就强化了人心中的印象。&lt;/p&gt;&#xA;&lt;p&gt;我们绝大部分人其实都会无意识地运用重复这个原则，就像上一篇讲的“对齐”原则一样。但现在要做的，是强化这种意识，让这种表现更加的突出。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;strong&gt;有意的重复可以引导人的视觉移动&lt;/strong&gt;，人总是倾向于寻找下一个形式相似的元素。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这是上次设计的名片，你的视线移动会从上方一直移动到底部，然后就会大概率就会随便乱瞥。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-1.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;我们将最下面的电话号码给加粗，并且换成标题的字体。当你阅读到最后一行的时候，会不会感觉你的眼睛会回跳到标题，或许有可能，这就是重复的目的，把整个作品联系在一起，提供统一性。你会在这个&lt;strong&gt;整体&lt;/strong&gt;中反复阅读。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;strong&gt;重复对于多页出版物能够很好的保持一致性,让这些页合为一体.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-2.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-3.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;以上是杂志的两页（请忽略箭头），我们可以显然地看出他们属于同一本杂志，因为页面上太多的重复元素在暗示着它们属于同一主体。&lt;/p&gt;&#xA;&lt;p&gt;比如每页上方都有粗细不同的双线，下方重复出现单线，这是最明显的同一元素的重复；&lt;/p&gt;&#xA;&lt;p&gt;比如每个标题的字体、字号和字色都保持一致，正文同理；&lt;/p&gt;&#xA;&lt;p&gt;比如每个标题与上一部分的正文留有一致的空白，这其实也体现了亲密性；&lt;/p&gt;&#xA;&lt;p&gt;比如每页的外页角部分用相同样式的数字表示页码；&lt;/p&gt;&#xA;&lt;p&gt;比如每个页面整体看来有三条明显的边界，这是对齐的重复；&lt;/p&gt;&#xA;&lt;p&gt;比如一些符号 △ 的使用是不是也重复了，虽然三角形的朝向有所变化，但你会觉得很和谐&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;相信这些读者只要仔细观察就可以发掘，在自己的文章中有意运用则更好不过。比如我们可以先从标题入手，它的重复性很容易产生，但有些时候比较平庸，我们要让它们更加突出一些。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-4.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;我们可以考虑换种字色，同时尽量让小标题的句式格式一致。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-5.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;你看，我们仅仅做了三处修改，就让问斩变得更“硬”了起来。&lt;/p&gt;&#xA;&lt;p&gt;（想想文章标题是左对齐还是居中对齐，为什么？不理解请去阅读上一篇笔记。）&lt;/p&gt;&#xA;&lt;p&gt;当然，不一定完全一样才可以称为重复。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-6.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这份菜单中标题采用了不同颜色，但是我们却觉得界面更加丰富了。这其实是&lt;strong&gt;多样性的统一&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;strong&gt;重复可以统一多种物品的风格&lt;/strong&gt;，尤其是你在制作一个同系列的物品时。&lt;/p&gt;&#xA;&lt;p&gt;这里直接放出两个例子变很容易理解：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-7.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;想一想这里有哪些重复的表现，让你一眼就知道他们属于同一家公司？&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-8.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这三张图片也可以一眼看出来属于同一个活动的，因为他们很多的地方体现了重复的元素，用心观察，从对齐方式、字体、颜色、图案等等方面来体会这种“统一的美感”。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;重复还有一个好处就是可以简略某些信息的表达，或者说，我们只要展现重复元素的一部分，读者就能够自己去联想到之前的元素，从而自然而然将他们联系到一起。我们举个例子：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-9.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;当你第一眼看到这张图片时，是不是脑海中立马浮现出上一篇笔记中出现的那四张明信片？（如果没有，那快先去阅读“对齐”那篇笔记吧！）&lt;/p&gt;&#xA;&lt;p&gt;能够引起你的回忆的元素有很多，是&lt;strong&gt;重复&lt;/strong&gt;做到了这一点。当你看到这种斑驳的字体，暗紫色的配色，还有那只没有露全的眼睛时，你心中会惊讶：啊，他们都属于同一个整体！&lt;/p&gt;&#xA;&lt;p&gt;甚至你只要留下那半只眼睛，你也会坚持认为它们属于同一整体。重复让你在一定程度上可以简略信息的表达，剩下的联想读者会自己完成的。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;总而言之，重复是为了给作品提供统一性，强化整个页面的视觉表达。有意的重复可以突出你想要表达部分，从而在读者脑海中留下比较深刻的印象。&lt;/p&gt;&#xA;&lt;p&gt;重复并不一定是完全一致的重复，可以是某种形式的重复，可以是某些相似但有联系的元素重复，甚至可以是一种多样性中的统一。&lt;/p&gt;&#xA;&lt;p&gt;在你的作品中运用好重复原则，给读者留下一个更深的印象吧！&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;再来一次恬不知耻地宣传下我的MAD处女作(*^▽^*)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.bilibili.com/video/BV1ZAKWzFEYM/?share_source=copy_web&amp;amp;vd_source=8b55e1dae00622baa9e00f37af05ec66&#34;&gt;【利兹与青鸟/蔷薇宴】当樱花色飞舞时&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;感谢大家阅读！！&lt;/p&gt;</description>
    </item>
    <item>
      <title>简易设计入门——给大众的设计学通识课 2</title>
      <link>https://changyo.pages.dev/posts/2025/06/design-tutorial-2/</link>
      <pubDate>Thu, 26 Jun 2025 14:46:01 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/06/design-tutorial-2/</guid>
      <description>&lt;p&gt;这是设计入门系列的第二篇读书笔记，建议先阅读第一篇后再继续阅读哦。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://changyo.pages.dev/posts/2025/07/design-tutorial-1/&#34;&gt;简易设计入门——给大众的设计学通识课&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;这次我们来讲一讲第二个原则：&lt;strong&gt;对齐&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;首先对齐这个原则其实比较容易理解，或者说绝大部分人在设计一样东西时都会有意或者无意地去对齐。&lt;/p&gt;&#xA;&lt;p&gt;对齐就代表着一种有序，在视觉上给人一种秩序感。&lt;/p&gt;&#xA;&lt;p&gt;但我们现在再次强调这一原则，是为了加深这一概念，让你的每个作品都会有意（甚至是刻意地）去“对齐”。&lt;/p&gt;&#xA;&lt;p&gt;任何一件优秀的作品，每个元素都是用心设计的，即使是一种“非对齐”，那也是经过深思熟虑，可以安排的。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;所谓&amp;quot;对齐&amp;quot;, 就是页面上的每一项都应当与页面上的某个内容存在某种视觉联系.&lt;/p&gt;&#xA;&lt;p&gt;常见的对齐方式主要有:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;左对齐&lt;/li&gt;&#xA;&lt;li&gt;居中对齐&lt;/li&gt;&#xA;&lt;li&gt;右对齐&lt;/li&gt;&#xA;&lt;li&gt;两边对齐&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;在这里我想先把对齐的的最重要的原则提前告诉大家：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;对齐并不是指只能采用一种对齐方式,而是要与某一个点,某条线或者某一个边界对齐.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;但是在你得到更多训练或者有足够自信时，&lt;strong&gt;请尽量只使用一种对齐方式&lt;/strong&gt;。尤其是&lt;strong&gt;不要把居中对齐当做你的默认选项, 你应该先尽可能的尝试其他对齐方式&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;关于居中对齐&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;居中对齐是一种极其常见的但大多数时候很平庸的设计。将所有元素居中，给人一种很庄重的感觉，但是同时也让人乏味。&lt;/p&gt;&#xA;&lt;p&gt;以封面为例子：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;我们分析对齐时，可以采用这种划线的方式来强化对齐的参照物。这张名片采用了三种对齐方式，看起来很混乱。&lt;/p&gt;&#xA;&lt;p&gt;现在如果让大家去修改的话，大概率会修改为这样：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-1.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;可以看出元素的&lt;strong&gt;亲密性&lt;/strong&gt;体现的还是不错的，在对齐上，我们可以看到中间有一条线作为参照，&lt;strong&gt;但是这线的强度并不高&lt;/strong&gt;。但就像我前面说的，大多数人第一想到的都会是居中对齐，因为它看起来让作品有了那么一点点设计感。&lt;/p&gt;&#xA;&lt;p&gt;不过如果你看名片稍微久一点，是不是就觉得有点乏味，觉得平庸了？&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-2.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这版名片一眼看过去是不是比居中对齐更有设计感，更能多留住你的眼光？&lt;/p&gt;&#xA;&lt;p&gt;由于采用了右对齐，你可以明显的感觉到右边有一种边界感，这样整体带给你的设计感更强烈，让布局有了一种力度。左边的留白既不会让人讨厌，也可以加上企业的logo（最好淡化处理）显得丰富些。&lt;/p&gt;&#xA;&lt;p&gt;我们再看看一个例子：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-3.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这是一份报告的封面，左边的居中对齐其实是很常见的方式，但看起来显得很平庸；右边报告仅仅只是将文字全部换为左对齐，但是页面看起来比左边更加紧致，有特殊感。&lt;/p&gt;&#xA;&lt;p&gt;我们再看第三个例子：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-4.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这是一张明信片，采用了居中对齐。看上去其实挺平庸的。想一想如果改变一下对齐方式和其他会出现怎样的效果。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-5.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;第一幅图将他们改成了左对齐，并且加了一条虚线强化左边界，而这条虚线与右边的空白形成一种对比，给人一种开放的空间感；&lt;/p&gt;&#xA;&lt;p&gt;（第二幅图似乎有点问题，应该是要把所有文本右对齐的，但是电子版本显示出错误。但是你可以想象出右对齐时也是比较新颖的设计；）&lt;/p&gt;&#xA;&lt;p&gt;第三幅图则更加大胆一些，将眼睛作为背景淡化，文本采用右对齐，大胆奔放。&lt;/p&gt;&#xA;&lt;p&gt;如果是你，你会选择哪件呢？&lt;/p&gt;&#xA;&lt;p&gt;通过上面几个例子，其实主要就是给你强化&lt;strong&gt;不要下意识首先使用居中对齐这种方式&lt;/strong&gt;的意识，因为大多数时候他看起来很贫乏，看上去没有太大新意。尽量去先去尝试其他的对齐方式。（然而很多人可能和我一样懒惰就居中对齐应付了事，其实只要多花一点点心思就可以给人留下不错印象！）&lt;/p&gt;&#xA;&lt;p&gt;那么如果有些场景比较庄重，比如一些喜帖的设计，我们必须要用居中对齐该如何呢？&lt;/p&gt;&#xA;&lt;p&gt;那就尽量用一些小技巧，让你的设计看起来&lt;strong&gt;有趣&lt;/strong&gt;一些！&lt;/p&gt;&#xA;&lt;p&gt;比如文本居中对齐，但是文本框一定要居于页面中央吗？&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-6.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-7.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这两幅图就是个很好的例子。你依然可以看出采用了居中对齐，但是文本框和页面中线有一定错位，这种错位让作品的基调有趣起来！&lt;/p&gt;&#xA;&lt;p&gt;我们还可以想一想如何强调表达我们想要表达的内容：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-8.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这里填充了文字背景，让边界感更强，突出了文字内容。（当然这里还运用到了对比的原则）&lt;/p&gt;&#xA;&lt;p&gt;比如我们的版面大小一定要是常见的方形或者A4大小吗？可不可以让它变得瘦高或者宽矮些？&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-9.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-10.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-11.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;所以很多时候并不是某种设计一定平庸，加入一些小巧思，便可以让你的设计别具一格。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;我们再来讲一讲一些杂志排版方面的设计，虽然我们不一定能用到，但是这种设计思想值得借鉴。&lt;/p&gt;&#xA;&lt;p&gt;首先就是标题的对齐方式：&lt;/p&gt;</description>
    </item>
    <item>
      <title>简易设计入门——给大众的设计学通识课 1</title>
      <link>https://changyo.pages.dev/posts/2025/06/design-tutorial-1/</link>
      <pubDate>Mon, 23 Jun 2025 14:45:57 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/06/design-tutorial-1/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;最近在学做MAD（漫剪的一种形式），由于是第一次学习使用PR，所以很多设计方面的知识并不足。好在得到群内的一些大佬的帮助，最终效果看起来不错。尤其是在字幕的设计时，让我感觉到“设计”其实还是有很多的讲究的。但是作为一个非设计类专业的学生，并没有很多时间去学习专业的设计知识。&lt;/p&gt;&#xA;&lt;p&gt;但是偶然在群文件中看到一份电子书《写给大家看的设计书》，发现这本书刚好特别适合我这种不以设计为主业，只需要快速掌握一些设计原则的人群。现在刚好读了几十面，觉得对自己的启发还是很大的，所以干脆把读后感写在知乎，也方便大家能够快速上手设计&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;另外想看我做的MAD视频的，链接放在这(*^▽^*)：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.bilibili.com/video/BV1ZAKWzFEYM/?share_source=copy_web&amp;amp;vd_source=8b55e1dae00622baa9e00f37af05ec66&#34;&gt;【利兹与青鸟/蔷薇宴】当樱花色飞舞时&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;一般人需要掌握基本的设计，只需要掌握四大基本原则：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;对比 Contrast&lt;/li&gt;&#xA;&lt;li&gt;重复 Repetition&lt;/li&gt;&#xA;&lt;li&gt;对齐 Alignment&lt;/li&gt;&#xA;&lt;li&gt;亲密性 Proximity&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;我们今天先讲亲密性。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;亲密性，简而言之，就是让相关性强的元素放在一起，让相关性弱的元素分隔开来。&lt;/p&gt;&#xA;&lt;p&gt;但是这里设计到几个问题：&lt;/p&gt;&#xA;&lt;p&gt;如果判断那些元素间的关系具有亲密性?&lt;/p&gt;&#xA;&lt;p&gt;以何种形式/设计来区分不同亲密性的元素组合？&lt;/p&gt;&#xA;&lt;p&gt;具有强亲密性的元素之间又该如何设计体现他们的主次关系？&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;亲密性意味着元素之间存在关联&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;可以看看下面两幅图：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-1.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这两幅图充分体现了亲密性的内涵。所以如果你想尽量&lt;strong&gt;准确地&lt;/strong&gt;传达自己的想法，在内容编排上一定要深思熟虑。为什么这两个元素放在一起，它们是否可以表达共同主题，会不会歪曲我想表达的意思？&lt;/p&gt;&#xA;&lt;p&gt;我们以一份菜单的设计为例。&lt;/p&gt;&#xA;&lt;p&gt;你可以先先想一想，你会如何设计一份菜单？这里我们假设这份菜单就像一份广告传单。&lt;/p&gt;&#xA;&lt;p&gt;是不是上方有个大大的标题“菜单”/MENU或者其他的？&lt;/p&gt;&#xA;&lt;p&gt;是不是这个菜品要分为好几类：蔬菜，肉食，甜点？&lt;/p&gt;&#xA;&lt;p&gt;是不是有些菜品下面要做一些注释，比如选取的原材料的特殊提醒？&lt;/p&gt;&#xA;&lt;p&gt;是不是每道菜都要一个价格？&lt;/p&gt;&#xA;&lt;p&gt;我们先看一看一个失败的设计：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-2.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;（这份菜单是英文的，或许有语言障碍。但之后你会意识到好的设计可以跨越语言）&lt;/p&gt;&#xA;&lt;p&gt;这份菜单一眼看过去真的给人一种乱七八糟的感觉，非常的拥堵。除了上方大字号的名称和加了下划线和粗体的标题，你根本不愿意去一堆词语中找到你想要的菜，甚至你如果真的阅读完了会发现有些菜下面居然还有注释，但你第一眼根本看不出来！&lt;strong&gt;简直令人发指&lt;/strong&gt;！&lt;/p&gt;&#xA;&lt;p&gt;我们一步步分析这份菜单的失败之处：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;字体&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;先说字体，因为字体真的很重要。这菜单全部使用了TimesNewRoma（不知道的不用管，总之看的出全是一种字体）每个相同字母一模一样，你会潜意识认为似乎他们都表示同等重要地位的东西。虽然大标题和小标题用了加粗和下划线，但也容易淹没在其下的菜名中。不知道的还以为是招牌菜！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;字号&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;说实话，除了最上方一行，其他部分竟！然！字！号！一！模！一！样！&lt;/p&gt;&#xA;&lt;p&gt;即使你是个正常人，看到这点也会愤怒。字号和权重直接相关，一样的字号仿佛给人一种“不想顾客找到菜品”的感觉。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;行距&lt;/strong&gt; （重点！！）&lt;/p&gt;&#xA;&lt;p&gt;行距是一个很重要的点，（稍后会着重讲）甚至可以说它是划分不同亲密性元素组合的主要方式。但说实话，在阅读这本书前我基本不关注“行距”，相信大多数人和我一样想要更明显的分行时或许只是敲两下回车。（当然你如果实在知乎这样简陋的文字编辑器上创作那也没办法）。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;亲密性&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这份菜单的亲密性基本聊胜于无，除了两处加了下划线的标题外，但凡你想要认真的查询一些消息，几乎都要全部阅读一遍。如果我作为一个顾客，这种菜单一开始就给我留下了很烂的印象&amp;hellip;&amp;hellip;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;对齐&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这一点其实是属于另一个原则，但是在这份菜单中其实也能够找到对应的问题。比如我们是否可以将标题和菜名缩进不同程度来加强亲密性的划分；此外我们是不是可以将每道菜品的菜价统一对其余右边缘，方便用户获取信息。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;分析完这份菜单的问题，其实我们已经可以慢慢意识到设计（更具体一点的说，排版）的重要作用：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;即降低用户获取信息的成本, 让信息更容易被查询.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;当然设计的作用不止于此，这只是它的其中一部分，它应当还具有&lt;strong&gt;传递美感&lt;/strong&gt;，&lt;strong&gt;强化信息某一方面的表达&lt;/strong&gt;等等作用。&lt;/p&gt;&#xA;&lt;p&gt;我们先从这份简单的菜单开始，看看我们可以如何让这份菜单变得具有设计感，能够一下子吸引顾客的眼睛。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;先看下第一版我们可以做到什么程度：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-3.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;首先这份菜单一眼望上去，比原来整齐清晰了许多。即使你是一个不认识英文的顾客，也可以根据它知道Starters, Entrees是两种不同类型的菜品分类，在此之下字号稍小但是加了粗体的文字显然是菜名，而且每道菜右边都有个数字——显然就是价格了！而每道菜下面的细体字，你或许看不懂，或者懒得看，但肯定知道它是一些注释性的内容，只要当你想点这道菜时再稍加关注即可。&lt;/p&gt;&#xA;&lt;p&gt;而这种效果，&lt;strong&gt;仅仅通过改变字体,字号,行距,进而影响到亲密性的表达就能够实现.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-4.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;看到这份菜单，你可以很快的看出各个元素之间的亲密性关系。&lt;/p&gt;&#xA;&lt;p&gt;整体上，菜单分为餐馆名，开胃菜（Starters），正菜（Entrees）这三样；再细一层，以Starters为例，每个加粗的菜名极其下面的细体注释又构成一个元素块。每道菜和Starters构成隶属关系。&lt;/p&gt;&#xA;&lt;p&gt;这些元素的亲密性通过什么表现的呢？ &lt;strong&gt;空白&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;Starters与Entrees之间的行距 &amp;gt; 每道菜之间的行距 &amp;gt; 菜内注释的行距&lt;/p&gt;</description>
    </item>
    <item>
      <title>“初识”赢学”，及情绪价值的需求”</title>
      <link>https://changyo.pages.dev/posts/2025/03/introduction-to-win-theory/</link>
      <pubDate>Sat, 22 Mar 2025 16:45:25 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/03/introduction-to-win-theory/</guid>
      <description>&lt;p&gt;最近在微信公众号上看了 @新潮沉思录 的关于赢学的一篇文章，全文1.3万字左右，不算很长，但十分适合作为赢学的概论或导论。&lt;/p&gt;&#xA;&lt;p&gt;链接放在这，有兴趣的读者可以先去看看：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;mp.weixin.qq.com/s/YaDZjZW8GeiEa1N-TcTcIg&#34;&gt;荒诞的世界需要一个解释——赢学观察的兴起&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;而本文就是在我看完这篇文章后的读后感。（下文中会包含比较多的原文观点引用）。&lt;/p&gt;&#xA;&lt;h2 id=&#34;赢学的强大解释力&#34;&gt;赢学的强大解释力&lt;/h2&gt;&#xA;&lt;p&gt;通俗点说，赢学将整个世界的秩序看做一种弱化版的种姓制度。在这个制度下，属于最尊贵位置的自然是老美，所谓的“民主的灯塔”；而排在最低位的——相信国人或多或少都感受到些——是我们CHN和其他发展中国家。&lt;/p&gt;&#xA;&lt;p&gt;可以看到，这里的国家其实用肤色来代替也是可以的，因为根据大众的刻板印象，白人似乎就代表欧洲，黑人就代表非洲，黄皮肤人就不说。&lt;/p&gt;&#xA;&lt;p&gt;为什么叫“赢学”呢？&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;这里的“赢”其实是一种情绪价值。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;种姓高的人总是陶醉于自己的身份和阶级，这种情绪有了种姓低者的衬托更加突出。在他们的潜意识里，他们就是比下层人高贵，就是比下层人先进。所以在这些人眼中，自己一直在赢。&lt;/p&gt;&#xA;&lt;p&gt;而不管下层人再怎么努力，把自己的绩效刷高，种姓低者永远不可能跨越自身所处的种姓层次。你绩效高就是抄袭、没技术含量，你不可能发生任何科技的创新，只能一直输。&lt;/p&gt;&#xA;&lt;p&gt;这就是“赢感”的来源。&lt;/p&gt;&#xA;&lt;p&gt;所以这可以解释很多国际上对中国的态度问题。&lt;/p&gt;&#xA;&lt;p&gt;为什么中国经济发展迅猛，产业不断升级，但一些欧美国家始终觉得中国制造不出高端产品？因为这么高精尖的东西，自然只有“婆罗门”或是“刹帝利”才能产生。中国是“偷窃”了他们的技术。&lt;/p&gt;&#xA;&lt;p&gt;为什么中国以前造出四代机后，欧洲、日本等国纷纷紧接着宣布自己国家方案的四代机？因为他们觉得“达利特”都能制造出的东西，我这么高贵的种姓显然也必须能够制造，而且一定比中国好。&lt;/p&gt;&#xA;&lt;p&gt;诸如此类&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;除了解决国际上的态度问题，还可以解释国内一些公知和洋殖的产生原因。&lt;/p&gt;&#xA;&lt;p&gt;达利特虽然不可能成为刹帝利或者婆罗门，但是他们内部也是有着高低贵贱的划分。&lt;/p&gt;&#xA;&lt;p&gt;一些达利特们为了摆脱自己的身份，竭尽全力去模仿高种姓者的行为生活，在精神上已经托付给了他们，这个过程称为“&lt;strong&gt;梵化&lt;/strong&gt;”，他们被称为达利特中的&lt;strong&gt;领班&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;他们会不知廉耻地把批判矛头对着国内，痛斥国人，全然忘了自己的身份。&lt;/p&gt;&#xA;&lt;p&gt;你问他他们知道自己是谁吗？他显然不敢承认。为了消除自己身上残存的身份信息，他们吃素食，喝咖啡，大谈所谓环保主义，大谈保护动物的生命（你咋会觉得人不如动物呢？），甚至买绿卡，过洋节。一切的一切，就是为了告诉周围人：我不是你们低贱的达利特，就算我成为不了刹帝利，那我也是最接近他的高贵的达利特领班，&lt;strong&gt;“我比你们更高贵”，所以我又赢了&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;所以当他们看到老美又有什么新发明时，像主人的狗犬一样狂吠，嚷嚷着民主灯塔，科技之光。**因为在他们看来，老美赢了，那就是自己也赢了。**老美从国内索取大量情绪价值时，自己也收获了一些情绪价值。这就是“&lt;strong&gt;共轭赢感&lt;/strong&gt;”。&lt;/p&gt;&#xA;&lt;p&gt;但你也会发现这些人似乎基本不会活跃在中文互联网以外的舆论场上。为什么？&lt;/p&gt;&#xA;&lt;p&gt;因为他们在欧美那根本尝不到赢感，种姓是无法跨越的，在外只会源源不断的输。但是在国内就不一样了，国内可以从对比中彰显自己的身份，从而获得赢的情绪价值，将国民贬低得越厉害，自己收获的情绪价值就越多。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;日耳蛮制定的种姓天梯里，中国是最底层的达利特 → 逆民自我想象（脑补）自己是达利特里 “梵化” 程度更高，更听话，更得日耳蛮刹帝利姥爷 “赏识” 的 “领班” → “领班” 对普通达利特具有优越性，普通达利特情况越差，就反衬得 “领班” 情况越好 → 达利特领班开始通过主动贬低其他不具备 “领班” 地位的达利特的方式来提高自己的优越感，证明自己更 “赢”&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;到现在来看，那些欧美国家似乎一直在赢赢赢。他们从我们这攫取了大量情绪价值，最终导致我们民族自信心不足，如果再严重些，恐怕就要怀疑我们这个民族的地位了。&lt;/p&gt;&#xA;&lt;p&gt;自信这种东西很重要，有自信不一定有突破，但是没有自信就真的只能当一辈子达利特了。&lt;/p&gt;&#xA;&lt;h2 id=&#34;种姓天梯的破裂来自绩效的压力和deepseek的冲击&#34;&gt;种姓天梯的破裂：来自绩效的压力和deepseek的冲击&lt;/h2&gt;&#xA;&lt;p&gt;赢不是随随便便就可以获得的，它毕竟是一种精神世界的价值，需要现实世界作为基础。&lt;/p&gt;&#xA;&lt;p&gt;而在当今这个格局下，为这种制度合理性提供绩效基础的就是&lt;strong&gt;美国&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;不可否认的是，在冷战结束后的一段时间内，美国是现实世界绩效标杆的顶点，这为为那些种姓高者提供了天然的物质基础，也更能够肆无忌惮的去嘲讽其他国家的科技。&lt;/p&gt;&#xA;&lt;p&gt;但是中国这几年的发展实在过快，中国的绩效增长已经超过了很多发达国家。这在种姓制度里是非常不合理，因为我种姓高者理应比达利特发展的更好。所以为了维护这个制度，那些欧美国家也被迫加快发展。这其中压力最大的就是美国。那些不算太高位置的国家或许还可以说我美爹多么多么厉害，继续不要脸地去索取情绪价值，但美国必须自己为自己绩效背书。否则，美国被超越了，整个制度也就不不复存在了。美国压力也越来越大。&lt;/p&gt;&#xA;&lt;p&gt;在ChatGPT刚出来的一段时间内，美国的绩效得到一次难得的实打实的强化。它不像那些什么民主、文化、礼仪等等虚无缥缈的东西，而是可以落实到产业中，带来巨大价值。美国借着这个AI的热点，勉强让自己又保住了世界顶点的位置，种姓制度又得到一次修补。&lt;/p&gt;&#xA;&lt;p&gt;所以在那段时间，唱衰中国的声音异常增多，认为美国会成为全球永远霸主的观点也不在少数。&lt;/p&gt;&#xA;&lt;p&gt;美帝国主义，又再一次从全球攫取大量情绪价值。&lt;strong&gt;直到deepseek的到来。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;原文认为deepseek开源导致股价下跌是“&lt;strong&gt;一个非常典型的现实影响亚空间，亚空间又反过来影响现实的案例&lt;/strong&gt;”。&lt;/p&gt;&#xA;&lt;p&gt;我简单点复述一下，就是deepseek通过“程序员”这类强绩效主义者将大量负面情绪传到了赢学的精神世界，导致出现一个大窟窿，这种情绪价值的流失反过来影响到了现实世界中股市这类靠信心和情绪支持的行业。&lt;/p&gt;&#xA;&lt;p&gt;最后我们可以因此得出一个有意思的结论：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;群体情绪价值的需求就是一个客观事实。同时，现实世界与情绪世界之间的互相影响是真实存在的。另一方面也说明，在赢学闭环构建的世界里，最薄弱的链条就是那些行业特质导致有强烈绩效主义价值倾向的群体，这些群体的情绪共振，会在闭环上打开窟窿，导致源源不断的情绪价值损失，而这种损失会直接伤害那些依靠情绪共振支撑的现实领域。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;文章后面还探讨了懂王最近一些古怪行为背后的解释以及基于“人对情绪价值的需求是客观的”这一前提推导出的的“平等社会孕育出不平等”，这些观点都很有趣，感兴趣的读者可以自己去阅读完整内容。&lt;/p&gt;&#xA;&lt;p&gt;我接下来要谈的，是另一个关键词：情绪价值&lt;/p&gt;&#xA;&lt;h2 id=&#34;情绪价值精神世界的货币&#34;&gt;情绪价值：精神世界的货币&lt;/h2&gt;&#xA;&lt;p&gt;我们从前文可以看出，人类对情绪价值的需求是客观存在的。当一个个体想要情绪价值时，他有很多种方式实现，方式很简单也很低廉；但是当一个群体需要情绪价值时，这些方法显然是不足的，于是为了满足这种庞大的需求，世界级的种姓制度也就建立起来，也由此构成日耳蛮赢学的核心观点。&lt;/p&gt;&#xA;&lt;p&gt;我初步了解了蛮学这套理论后惊叹于它对世界各种现象强大的解释能力，他几乎快要治好了我在国际政治看法上的精神内耗。&lt;/p&gt;&#xA;&lt;p&gt;此外，我还对“人对情绪价值的需求是客观的”这个观点很感兴趣。&lt;/p&gt;&#xA;&lt;p&gt;我以前在知乎上看过一些“如何和女孩子聊天”“如何和上司/领导聊天”等等问题，很多回答都重点强调要顺着对方情绪去回答，少考虑自己感受。现在发现其实就用一句话来解决即可：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;满足对方需求提供情绪价值。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;我们把情绪价值比作精神世界的一种货币，你给人家赠送了这么多情绪价值，人家自然要回报一些。在精神世界中不好回报，那就在现实世界中回馈吧。&lt;/p&gt;&#xA;&lt;p&gt;所以，如果我们在这里认为情绪价值在精神世界中的地位和钱在现实世界中的地位相同的话，就可以理解很多现象。&lt;/p&gt;&#xA;&lt;p&gt;古代很多奸臣阿谀奉承，获得皇帝大量赏赐，那是因为他给皇帝提供足够的情绪价值，一些官员的升迁也同此理；&lt;/p&gt;&#xA;&lt;p&gt;一些女生愿意和不太宽裕的男生在一起，因为男生可以为她提供别人提供不了的情绪价值，比如被珍视感，幸福感；&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于个人建站的一点思考</title>
      <link>https://changyo.pages.dev/posts/2025/03/about-personal-blog-website/</link>
      <pubDate>Tue, 11 Mar 2025 15:44:56 +0800</pubDate>
      <guid>https://changyo.pages.dev/posts/2025/03/about-personal-blog-website/</guid>
      <description>&lt;h2 id=&#34;历程&#34;&gt;历程&lt;/h2&gt;&#xA;&lt;p&gt;最近几天在菜鸟教程上看到有HTML和CSS教程，心中忽然想起6年前刚刚接触编程的心中的一个小愿望：建一个个人网站！&lt;/p&gt;&#xA;&lt;p&gt;于是，果断打开链接，同时开始学CSS，HTML。&lt;/p&gt;&#xA;&lt;p&gt;在我眼里看来，HTML就像markdown语法一样，无非是记一些不同用途的元素，然后在元素上加一些实现特定功能的标签罢了（这里对它的看法正确与否姑且不论）。而CSS和JavaScript是为了给这些元素加上一些漂亮的过渡动画。&lt;/p&gt;&#xA;&lt;p&gt;于是我就阅读得非常快，颇找回了一种高中背单词时的感觉。连续几天每天学习了几个小时后，看着自己简陋的页面，感觉有点难绷。&lt;/p&gt;&#xA;&lt;p&gt;当然困难并没有什么，我知道不管学习什么都会有困难，就像刚开始学C++只能写hello，world一样。但是学HTML等等的过程中，却给我的感觉并非那么容易用“遇到困难定义”。&lt;/p&gt;&#xA;&lt;p&gt;我在寒假曾经和豆包连续对话了四个小时，让它给我做一个网页（只能在本地运行），这个页面的效果我很满意，背景虚化且能切换，文字浮现动画，字体的艺术感&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image.gif&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;所以这不禁让我有了一个疑惑，我们究竟有必要自己从头到尾搭建一个网站吗？现在AI这么发达，Cursor都能根据一张图片帮你做完一张HTML网页，而且网站的模版那么多，不乏有优秀者。我们究竟有必要自己造一个轮子吗？&lt;/p&gt;&#xA;&lt;h2 id=&#34;reinvent-the-wheel-create-from-scratch&#34;&gt;Reinvent the wheel? Create from scratch?&lt;/h2&gt;&#xA;&lt;p&gt;这种想法一直困扰着我，昨晚打开手机刷了会知乎，有些倦怠时，想起了自己建站的想法。于是在知乎上搜了搜。&lt;/p&gt;&#xA;&lt;p&gt;（这里真想说某乎的风气逐渐变差，十个搜索结果里面6成以上都是意义不大的推销宣传，或是小白速通教程。）&lt;/p&gt;&#xA;&lt;p&gt;我找到了一个问题询问建站的准备的，看完发现建站并非想象般容易。要购买服务器，购买域名，要域名备案，要做好数据库管理，最后才是设计网页。但是这个设计网页也并不简单，一张静态的网页似乎难度不大，但这种网站没什么价值，显然你得设计好几张，其次你还得不停地维护和更新，还要注重网站的隐私安全，在网站上写博客也没有你在公众号和知乎上那么容易。&lt;/p&gt;&#xA;&lt;p&gt;如果想要建站的话，或许你大部分时间都在鼓捣着页面设计，你可以做的简单点，但像我这种心里有点幻想的肯定想看到酷炫的交互式页面，清新的网页设计，相比在网页设计上花更多的心思。&lt;/p&gt;&#xA;&lt;p&gt;过程的漫长和艰难迫使我停下来思考这件事情本身。前文所写的问题又逐渐浮现。&lt;/p&gt;&#xA;&lt;p&gt;我继续在知乎上寻找参考（这里想再吐槽一下某乎，自疫情以后问答质量显著下滑，讲故事的人感觉越来越多）。&lt;/p&gt;&#xA;&lt;p&gt;我有点无奈，于是想到了到国外的stackoverflow去寻找，一搜persnonal website，立马第一个就是相关问题。&lt;/p&gt;&#xA;&lt;p&gt;我看了看提问者的描述，发现和我的想法很多类似之处。继续往下看看不同答主的回答，很多有用的建议，给我心头的疑惑解开了一些。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这位答主讲的很切实，也帮我认清了自己想建站的目的。&lt;/p&gt;&#xA;&lt;p&gt;炫酷的网页设计是一方面，但我想以后把它当做一个日记本，每天记录自己的一些感想，还有更重要的，将自己的计算机学习过程中的一些经验发在网页上以便帮助他人。&lt;/p&gt;&#xA;&lt;p&gt;这想法有几点可以细细思考：&lt;/p&gt;&#xA;&lt;p&gt;首先炫酷的网页设计是需要花大量时间的，我看过一些优秀的特效动画，HTML、CSS、JavaScript加起来两三千行是有的，这个任务量对我来说有点中，我的代码量量级还停留在百行。做日记本的想法不错，但是在个人网站上写日记不像知乎、公众号，编辑器已经给好了，而是需要我们在底层代码上做好更改。如果只是一些文字还好，但要是多模态该如何呢？图片视频的加入并非简单，而且我的文章一定会含有代码，要有不同的字样。记录学习经验是很好的时，也是我觉着这个阶段更重要的时。我应该更关注我的文章本身，而不是那些炫酷动画。（因为要做出这些动画实在花时间！！）如果是个人建站，没有名气，又如何传播自己的经验呢？这几点思考将我的模糊的愿望具体化了一些，让我渐渐想明白这个阶段更想做的事情。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;想清楚自己究竟想做什么是一件重要也很容易忽略的事，大部分人在获得视觉、听觉的快感后会有一种空洞感，而我希望做完我想做的事情后有一种奉献的价值感。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;image-1.png&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这位答主说的也很棒。他认为一个nice looking, complete的网站比一个poorly done, imcomplete网站要更令人印象深刻。其中有句话令我印象深刻：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Potential employers may like to see that you are capable of reusing tried and trued solutions instead of trying to create everything from scratch without a good reason.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;正中我下怀。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;creatw from scratch固然可以让别人觉得很厉害，但之后呢？如果仅仅是为了炫技，那内心也太空虚了。 Reuse 并非一个贬义词，写代码的目的就是为了&lt;strong&gt;代码能够复用&lt;/strong&gt;。如果我只是为了听到别人对我个人建站这个“伟大事迹”的赞美，我觉得我一定很难坚持去运营。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://changyo.pages.dev/introduction/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/introduction/</guid>
      <description>&lt;p&gt;Hello there 👋, and a warm welcome to my blog!&lt;/p&gt;&#xA;&lt;p&gt;My name is &lt;strong&gt;Zhixi&lt;/strong&gt;, but I prefer to be called &lt;strong&gt;ChangYo&lt;/strong&gt;, as it is my pen name.&lt;/p&gt;&#xA;&lt;p&gt;This page serves to introduce you to both this website and myself. However, I know it&amp;rsquo;s impossible to tell you every little detail about this Blog—that would surely bore my readers. Nor can I recount decades of experience here, even if my journey has been somewhat unique.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Profile</title>
      <link>https://changyo.pages.dev/profile/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://changyo.pages.dev/profile/</guid>
      <description>&lt;p&gt;Personal profile and social links.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
