<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://blog.attilio.cc/</id>
  <title type="text">Attilio</title>
  <subtitle type="text">ShaddockNH3</subtitle>
  <updated>2026-11-01T00:00:00.000Z</updated>
  <author><name>ShaddockNH3</name></author>
  <link rel="alternate" href="https://blog.attilio.cc/"/>
  <link rel="self" href="https://blog.attilio.cc/atom.xml"/>
  <generator uri="https://github.com/CuteLeaf/Firefly">Firefly v6.16.8</generator>
    <entry>
      <id>https://blog.attilio.cc/posts/npee/eg-pol/</id>
      <title type="text">考研冲刺前的总结 —— 英语（二）与政治</title>
      <published>2026-11-01T00:00:00.000Z</published>
      <updated>2026-11-01T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/npee/eg-pol/"/>
      <summary type="text">考研冲刺前的总结 —— 英语（二）与政治</summary>
      <content type="html"><![CDATA[<section><h2>时间线<a href="#时间线"><span>#</span></a></h2><p>英语仔细阅读：第 19 周 - 第 28 周，共 10 周。掌握仔细阅读的基本方法，写完 07 - 18 的仔细阅读</p><p>英语套卷：第 29 周 - 第 32 周，共 5 周，14 年 - 20 年真题所有客观题（也就是 07-13 年的完型和新题型没做，不过这里新题型只用写 11,12,13，完型看情况了）</p><p>英语套卷：第 33 周 - 第 34 周：翻译和作文的简单研究，以及每天同时进行早年阅读重刷（10-11）</p><p>英语套卷：第 35 周：以 21 年真题为例，深度研究一份，然后模考一份 22 来点感觉，作文与翻译研究明白怎么学</p><p>政治：第 29 周 - 第 42 周，共 14 周。先花 6 周的时间刷一遍选择题（徐涛马原强化课 + 苍盾），也就是第 34 周结束，再花 6 周的时间 2 刷一遍选择题（肖背诵手册，肖 8 的选择题），再花 2 周的时间背大题。</p></section>
<section><h2>政治前言<a href="#政治前言"><span>#</span></a></h2><p>政治比我想象中的更猎奇。</p></section>
<section><h2>马原必背<a href="#马原必背"><span>#</span></a></h2><p>上层建筑</p><ul>
<li>政治法律制度、国家政权机构</li>
</ul><p>社会意识形式</p><ul>
<li>道德、意识与哲学，是上层建筑，但是是意识形态（或者观念上层建筑</li>
</ul></section>
<section><h2>政治经济学<a href="#政治经济学"><span>#</span></a></h2><p><a href="https://www.bilibili.com/video/BV1YnYL6SESt/?share_source=copy_web&amp;vd_source=3fbbb3c2ad24817002f9c39fad247a3b" target="_blank">30 分钟学完｜政治经济学、科学社会主义，速成课【空卡】</a></p></section>
<section><h2>英语前言<a href="#英语前言"><span>#</span></a></h2><p>突然意识到近些年的英语在慢慢变简单，所以不要因为早年的英语分低而丢失自信心，但也不要狂妄…吗？</p><p>更新于 10 月 24 日，突然发现英语问题会非常非常严重啊！</p><p>现在是写了 2021 年的完型和阅读 ab，完型 -3，在可接受范围之内，但是 a 篇错了 2 个，b 篇整篇文章还是看了翻译才终于搞明白是什么意思（尽管全对，但是花了 30min+）。</p><p>但是复盘下来，发现这些阅读并不难，而且要知道 2021 年的阅读算简单的阅读了，那我这样算什么？</p><p>今天是考研报名截止日，也改不了了，所以拼尽全力去补。</p><p>以后每天早上先过来背半个小时单词，然后学 75min 英语，再开始学数学。</p><p>主要是其实并不难，但是我依旧想当然，一开始没有逐字逐句翻译去理解，所以明天也需要复盘，再加上最近确实太摆了。</p><p>目标是客观题拿 50 至少。</p></section>
<section><h2>一些准则<a href="#一些准则"><span>#</span></a></h2><p>在英语阅读里，一句话的逆否命题必然是对的。</p><p>例如，我因为可以展现理想中的自己享受 facebook = 我为了逃避不修边幅的自己而享受 facebook。</p></section>
<section><h2>做题顺序<a href="#做题顺序"><span>#</span></a></h2><p>阅读 A/B 篇 -&gt; 作文 -&gt; 阅读 C/D 篇 -&gt; 新题型 -&gt; 翻译 -&gt; 完型。</p></section>
<section><h2>完型<a href="#完型"><span>#</span></a></h2><blockquote><p>方法论来源于刘琦老师，保 6，争 8，拼 10，但我认为我自己得稳 8。</p></blockquote><p>考研完型不是选出来的，是找出来的，即从文章里找线索。</p><p>如果句子没有明显情感倾向，那么选中性词（包括翻译也是）</p><p>改变条件，必然结果相反。（例如实验 A 是抿嘴唇，倾向是是成功，那么实验 B 改变了条件，必然是失败）</p><p>不确定先跳，不然一对一片，一错一片。</p><p>意思相同同时不选。</p><p>首段首句为全文中心，段落首句为段落中心。</p><p>感觉后面再看课没什么意义了，就这样吧。</p><section><h3>完型词汇积累<a href="#完型词汇积累"><span>#</span></a></h3><ul>
<li>go through：完成</li>
<li>do away：废除</li>
<li>catch up：赶上</li>
<li>put up：容忍</li>
<li>lean towards：倾向于</li>
<li>send out：分发</li>
<li>give away：泄露</li>
<li>self-deceptive：自欺欺人的</li>
<li>self-reliant：自立的</li>
<li>self-destructive：自毁的</li>
<li>self-evident：不言而喻的</li>
<li>hold onto：抓住</li>
<li>accuont for：解释</li>
</ul></section></section>
<section><h2>阅读<a href="#阅读"><span>#</span></a></h2><blockquote><p>方法论来自于唐迟老师，以及自己的总结，我认为四篇阅读至少得拿 36 分。</p></blockquote><section><h3>整体做题方法 - 阅读<a href="#整体做题方法---阅读"><span>#</span></a></h3><p>答案一定不是选出来的，而应该是比对出来的。</p><ul>
<li>标段落</li>
<li>通读问题（仅仅问题，不需要选项），找出关键字，串联题干逻辑，推测文章主题
<ul>
<li>找出关键字，锁定词汇</li>
<li>找出明显的态度词，例如 help 对应好的态度</li>
</ul>
</li>
<li>根据题目大致推断这道题在哪个段落（这是自己的方法），没推断出来也问题不大</li>
<li>翻译与做题
<ul>
<li>抓情感色彩词</li>
<li>梳理句间逻辑关系，如果没有转折那么前后句肯定是态度一致的</li>
<li>逐词比对，逐项排除，但对于可能正确的选项，也要在文章里找到明确的依据</li>
</ul>
</li>
</ul></section><section><h3>阅读词汇积累<a href="#阅读词汇积累"><span>#</span></a></h3><ul>
<li>mess up：搞砸</li>
<li>inexcusable：不可原谅</li>
<li>density：密度</li>
</ul></section></section>
<section><h2>新题型<a href="#新题型"><span>#</span></a></h2><p>英 2 新题型有两类，一种是小标题，另一种是多项对应题。</p><blockquote><p>方法论来源于刘琦老师，追求满分。</p></blockquote><section><h3>时间要求 - 新题型<a href="#时间要求---新题型"><span>#</span></a></h3><p>&lt;= 20min。</p></section><section><h3>小标题<a href="#小标题"><span>#</span></a></h3><ol>
<li>先通读标题，记住标题对文章进行整体理解</li>
<li>做题时不必拘泥于原文顺序，最好先简单后难，具体做的时候关注首段后和转折后（转折后优先），找出语段特征</li>
<li>做出最终判断时，必须找到明确的匹配关系（即同义替换或复现）</li>
</ol><p>看完小标题后，不允许多想，然后去读文章。</p><p>有转折和让步先看转折和让步，没有的话看首句，首句没有信息看末尾句（但是此时信息就弱了，所以应该全段读，然后找出下论断的句子，比如 so 等，例如 2020 年的题目）</p><p>注意不能同词根连连看，得意思连连看（但其实也基本上）。在做小标题的时候，基本只用看首句和转折后，其他不需要看，直接去判断即可。</p><p>不必拘泥于原文顺序，选不出来直接先跳，因为先易后难。</p></section><section><h3>多项对映题<a href="#多项对映题"><span>#</span></a></h3><ol>
<li>读左侧一栏 5 题干，确定定位词，专有名词 &gt; 普通名词 &gt; 动词 &gt; 副词或形容词</li>
<li>找到定位词在原文中出现的所有位置，通读所有定位句，并概括。定位词可能在原文多次出现</li>
<li>左侧题干对比右侧选项，找复现或同义词替换选项（复现：原词再现；同义词替换：同义词 / 近义词改写</li>
</ol><p>只要碰到同义句改写，那么立刻选答案，不需要多想。</p><p>人名在原文中第一次出现用的是全名，第二次及之后出现用的只有姓。</p><p>关键词存在多处定位，需把每处内容看完再判断；考察内容偏细节，多关注文中任务所说的话；部分题目设计行南距，对于命题长难句需拆分理解。</p></section></section>
<section><h2>翻译<a href="#翻译"><span>#</span></a></h2><section><h3>时间要求<a href="#时间要求"><span>#</span></a></h3><p>&lt;= 20min。</p></section><section><h3>翻译的评分标准<a href="#翻译的评分标准"><span>#</span></a></h3><p>信 达 准确。</p></section><section><h3>翻译方法<a href="#翻译方法"><span>#</span></a></h3><ol>
<li>找出谓语动词（三态一否）</li>
<li>找出连词，初步切分句子并确定主干（并列连词 and，从属连词 which）</li>
<li>梳理修饰成分，进一步切分句子（从句外是主干）</li>
</ol></section><section><h3>其他需要注意<a href="#其他需要注意"><span>#</span></a></h3><ol>
<li>被动变主动</li>
<li>并列句按照两个简单句处理</li>
</ol></section><section><h3>2010 翻译<a href="#2010-翻译"><span>#</span></a></h3><p>7-8 分</p><ul>
<li>
<p>“稳定性”在这些日子逐渐变成一个热词，但是对于泰德·宁来说，这个概念永远有个人意义。</p>
</li>
<li>
<p>“可持续性”（或承受力）如今成为了一个流行词，但对泰德·宁来说，这个概念永远有其特殊的个人意义。</p>
</li>
<li>
<p>他已经度过人生中一段痛苦的不稳定生活，这件事让他清楚地认识到稳定的价值必须通过每日的行动和选择来表达</p>
</li>
<li>
<p>在经历了人生中一段痛苦的不可持续生活后，他清楚地认识到，以可持续性为导向的价值观必须通过每日的行动和选择来体现。</p>
</li>
<li>
<p>宁回忆起他在 19 世纪 90 年代卖保险的一年</p>
</li>
<li>
<p>宁回忆起 20 世纪 90 年代末那令人困惑的一年，当时他正在卖保险。（注：修正世纪错误，补上 confusing）</p>
</li>
<li>
<p>他经历了互联网的爆炸，但是他对他的在波德尔旅社的工作十分失望。</p>
</li>
<li>
<p>他经历了互联网泡沫的膨胀与破灭，由于急需一份工作，便与博尔德市的一家代理机构签了约。（注：修正 boom and burst, desperate, agency 的翻译，理顺逻辑关系）</p>
</li>
<li>
<p>这过的并不好。“这真的很差，因为这不是我所热爱的。”宁在陷入换工作还是销量可能下降的困境中说。</p>
</li>
<li>
<p>但情况并不顺利。“这的确是个糟糕的决定，因为那激不起我的工作热情。”宁说道。不出所料，他对这份工作的进退两难导致了销售业绩不佳。（注：bad move 译为糟糕的决定；whose 引导的定语从句需要单独成句翻译，translated into 是导致/转化为的意思）</p>
</li>
<li>
<p>“我很痛苦。我十分焦虑以至于我会在午夜的时候醒来并且盯着天花板。我没有钱并且我需要工作。每个人都说：‘只需要等待，你会绕过转角的，给点时间就可以了。’”</p>
</li>
<li>
<p>“我很痛苦。我焦虑万分，以至于常常在半夜惊醒，盯着天花板发呆。我身无分文，需要这份工作。大家都说：‘等等吧，给点时间，你会渡过难关的。’”</p>
</li>
</ul></section><section><h3>2011 翻译<a href="#2011-翻译"><span>#</span></a></h3><p>8 - 9 分</p><p>Who would have thought that, globally, the IT industry produces about the same volume of greenhouse gases as the world’s airlines do—roughly 2 percent of all CO₂ emissions?</p><p>谁能想到呢？全球 IT 产业排放的温室气体——和全世界的航班排放的量等同，都是大约 2% 的二氧化碳。</p><p>订：谁能想到，全球 IT 产业排放的温室气体总量（volume）与全球航空业相当（或：一样多）——约占全球二氧化碳总排放量的 2%？</p><p>Many everyday tasks take a surprising toll on the environment. A Google search can leak between 0.2 and 7.0 grams of CO₂, depending on how many attempts are needed to get the”right” answer. To deliver results to its users quickly, then, Google has to maintain vast data centres around the world, packed with powerful computers.While producing large quantities of CO₂, these computers emit a great deal of heat, so the centres need to be well air-conditioned, which uses even more energy.</p><p>每天的每一个任务都对环境造成令人惊讶的恶果。</p><p>订：许多日常工作都会对环境造成惊人的危害。</p><p>一次谷歌搜索释放 0.2 克到 7.0 克的二氧化碳，释放的具体量取决于需要多少次尝试才能得到正确答案。</p><p>订：每用谷歌搜索一次就会释放出 0.2 克至 7.0 克的二氧化碳，释放量的多少取决于使用者需要尝试多少次才能得到“正确”的答案。</p><p>为了给用户更快的搜索结果，随后，谷歌必须去在全世界维护大量的数据中心，这些数据中心里面有着性能强大的计算机。</p><p>订：为了把搜索结果迅速传输给用户，因此（then），谷歌不得不在全球范围内建立（或维护）大型数据中心，并配备大功率计算机。</p><p>当产生大量的二氧化碳时，这些电脑还释放相当多的热量，所以数据中心还需要控制空气条件，这还需要使用更多的能量。</p><p>订：除了排放大量二氧化碳，这些计算机还释放大量热量，因此数据中心还需要良好的空调环境，而这又会消耗更多的能量。</p><p>However, Google and other big tech providers monitor their efficiency closely and make improvements. Monitoring is the first step on the road to reduction, but there is much more to be done, and not just by big companies.</p><p>然而，谷歌和其他科技巨头们对他们的效率密切关注，并且做出很多改进。</p><p>订：不过，谷歌和其他大型技术供应商已密切监控其（数据中心的）工作效率并做出改进。</p><p>监控只是减少排放的第一步，但是这还有很多需要做，不只是大公司。</p><p>订：监控只是减排的第一步，需要做的还有很多，而且这不仅仅是大公司的事情。</p><p>吸取的教训：每个东西的意思都要翻译出来。</p></section><section><h3>2021 翻译<a href="#2021-翻译"><span>#</span></a></h3><p>6-7</p><p>We tend to think that friends and family members are our biggest sources of connection, laughter, and warmth. While that may well be true, researchers have also recently found that interacting with strangers actually brings a boost in mood and feelings of belonging that we didn’t expect.</p><ul>
<li>
<p>我倾向于认为朋友和家庭成员是我们联系，笑声和温暖最大的来源。</p>
</li>
<li>
<p>订：我们倾向于认为，朋友和家人是我们情感联结、欢笑和温暖的最大来源。</p>
</li>
<li>
<p>这些确实很有可能是事实，不过最近研究院已经发现和陌生人交流事实上也带来情绪上的提升和一种我们从未期待的归属感。</p>
</li>
<li>
<p>订：虽然这很可能是事实，不过研究人员最近也发现，与陌生人交流其实也会带来情绪的提升和归属感，这是我们之前未曾预料到的。</p>
</li>
</ul><p>In one series of studies, researchers instructed Chicago-area commuters using public transportation to strike up a conversation with someone near them. On average,participants who followed this instruction felt better than those who had been told to stand or sit in silence. The researchers also argued that when we shy away from casual interactions with strangers, it is often due to a misplaced anxiety that they might not want to talk to us. Much of the time, however, this belief is false. As it turns out, many people are actually perfectly willing to talk—and may even be flattered to receive your attention.</p><ul>
<li>
<p>在一系列的实验中，研究人员建议芝加哥地区的通勤者在乘坐公共交通中，去突发的和他们相邻的人来一场对话。</p>
</li>
<li>
<p>订：在一系列研究中，研究人员要求芝加哥地区乘坐公共交通的通勤者，与旁边的人攀谈（开始交谈）。</p>
</li>
<li>
<p>平均下来，那些遵循这些建议的比那些被告知单独站着或安静的坐着的人感觉更好。</p>
</li>
<li>
<p>订：平均而言，遵循这一要求的参与者，比那些被要求默默站着或坐着的人感觉更好。</p>
</li>
<li>
<p>研究人员还发现对陌生人随意的讲话感到害羞这一现象一般来源于错位的尴尬——他们很有可能不想和我们说话。</p>
</li>
<li>
<p>订：研究人员还提出，当我们回避与陌生人的随意交流时，通常是因为一种不必要的焦虑，即担心他们可能不想跟我们说话。</p>
</li>
<li>
<p>然而，在大多数时候，这种相信是错误的。</p>
</li>
<li>
<p>订：然而，在大多数情况下，这种想法是错误的。</p>
</li>
<li>
<p>恰恰相反，事实上，很多人非常有意愿去聊天——并且甚至可能变得分散，为了收到你的关注。</p>
</li>
<li>
<p>订：事实证明，很多人其实非常乐意交谈——甚至可能会因为得到你的关注而感到受宠若惊（荣幸）。</p>
</li>
</ul></section><section><h3>2021 翻译立即二刷<a href="#2021-翻译立即二刷"><span>#</span></a></h3><ul>
<li>
<p>We tend to think that friends and family members are our biggest sources of connection, laughter, and warmth.</p>
</li>
<li>
<p>词块：We，tend think，定语从句（xxx 是最大的来源）</p>
</li>
<li>
<p>我们倾向于认为朋友和家庭成员是我们连接，欢笑和温暖的最大来源。</p>
</li>
<li>
<p>我们倾向于认为朋友和家庭成员是我们互联，欢笑和温暖的最大来源。</p>
</li>
<li>
<p>情感联结</p>
</li>
<li>
<p>While that may well be true, researchers have also recently found that interacting with strangers actually brings a boost in mood and feelings of belonging that we didn’t expect.</p>
</li>
<li>
<p>词块：研究员们，近期发现，和陌生人交流。</p>
</li>
<li>
<p>这或许是对的，但近期研究员们已经发现，和陌生人交流事实上会带来意想不到的情绪上涨和归属感。</p>
</li>
<li>
<p>这或许是对的，但近期研究员们已经发现，出乎意料的，和陌生人交流事实上会带来情绪上涨和归属感。</p>
</li>
<li>
<p>情绪提升，这是我们此前未预料到的（放最后）</p>
</li>
<li>
<p>In one series of studies, researchers instructed Chicago-area commuters using public transportation to strike up a conversation with someone near them.</p>
</li>
<li>
<p>词块：在一些列的研究调查中；研究员们；指示；芝加哥地区；通勤者；公共交通；发起交流；他们附近的人；</p>
</li>
<li>
<p>在一系列的研究调查中，研究员们指示芝加哥地区的通勤者们在公共交通通勤时，和他们附近的人发起交流。</p>
</li>
<li>
<p>在一系列的研究调查中，研究员们指示芝加哥地区的通勤者们在使用公共交通通勤时，和他们附近的人发起交流。</p>
</li>
<li>
<p>要求，与旁边的乘客攀谈</p>
</li>
<li>
<p>On average,participants who followed this instruction felt better than those who had been told to stand or sit in silence.</p>
</li>
<li>
<p>词块：平均下来；参与者们；遵循建议；那些被指示站着或者静静坐着（不交流）；干到更好</p>
</li>
<li>
<p>平均下来，比起哪些被指示站着或静静坐着不交流的人而言，这些遵守指示的参与者感到更好。</p>
</li>
<li>
<p>平均下来，比起那些被指示站着或静静坐着不交流的人而言，这些遵守指示的参与者感到更好。</p>
</li>
<li>
<p>The researchers also argued that when we shy away from casual interactions with strangers, it is often due to a misplaced anxiety that they might not want to talk to us.</p>
</li>
<li>
<p>词块：研究员们也发现；回避；由于不必要的担心；</p>
</li>
<li>
<p>研究员们也发现，我们回避和陌生人交流，常常是由于不必要的担心，害怕他们不愿意和我们讲话。</p>
</li>
<li>
<p>研究员们也发现，当我们回避和陌生人交流时，常常是由于不必要的担心，害怕他们可能不愿意和我们讲话。</p>
</li>
<li>
<p>提出</p>
</li>
<li>
<p>Much of the time, however, this belief is false. As it turns out, many people are actually perfectly willing to talk—and may even be flattered to receive your attention.</p>
</li>
<li>
<p>词块：然而在大多数时候，这种想法是错误的；事实上；事实非常想聊天；荣幸；受到关注</p>
</li>
<li>
<p>然而在大多数时候，这种想法是错误的。事实上，很多人有非常强烈的意愿去聊天，并且他们甚至可能因为受到你的关注而感到荣幸。</p>
</li>
<li>
<p>然而在大多数时候，这种想法是错误的。事实上，很多人有非常强烈的意愿去聊天，甚至，他们可能因为受到你的关注而感到荣幸。</p>
</li>
</ul></section><section><h3>2022 翻译<a href="#2022-翻译"><span>#</span></a></h3><p>初版：5-6</p><p>订 1：9</p><p>订 2：12</p><ul>
<li>
<p>Although we try our best, sometimes our paintings rarely turn out as originally planned.</p>
</li>
<li>
<p>词块：尽管，我们竭尽全力做到最好；有时；我们离开了我们原有的计划；painting，猜测并意译为事件的结果（因为是完成的作品）；几乎离我们原有计划很远</p>
</li>
<li>
<p>初译：尽管，我们竭尽全力做到最好，但有时事件的结果和我们预期的相差甚远。</p>
</li>
<li>
<p>精修：尽管我们竭尽全力做到最好，但有时，事件的结果和我们原来计划的相去甚远。</p>
</li>
<li>
<p>订正 1：尽管，我们竭尽全力做到最好，但有时我们的画作和我们原来计划的表现出来相去甚远。</p>
</li>
<li>
<p>订正 2：（很少符合最初的计划）</p>
</li>
<li>
<p>Changes in the light, the limitations of your painting materials, and the lack of experience and technique mean that what you start out trying to achieve may not come to life the way that you expected.</p>
</li>
<li>
<p>词块：为了改变这一光景；绘画材料的缺失（猜测意译为完成该事件的前提），经验和技术的缺少，意味着；你；可能达到你预期中的生活方式；尝试</p>
</li>
<li>
<p>初译：为了改变这一光景，，经验和技术的确实，意味着你努力尝试去达到的，可能并不会达到你预期的生活方式。</p>
</li>
<li>
<p>词块 2：换种想法；条件的限制，经验和技术的缺失；意味着；你开始尝试去达到的东西；可能并不会如你预期的方式进入你的生活；</p>
</li>
<li>
<p>初译 2：换种想法，前提条件的限制和经验技术的缺失意味着你开始想要努力完成的事情，可能并不会如你预期的方式进入你的生活。</p>
</li>
<li>
<p>订正 1：光线的改变，绘画材料的限制和经验技术的缺乏意味着你画出来的作品可能达不到你的期待。（确实不会翻译这里）</p>
</li>
<li>
<p>Although this can be frustrating and disappointing, it turns out that this can actually be good for you.</p>
</li>
<li>
<p>词块：尽管这会导致沮丧和失望；但这可以；真切；对你很好，帮到你；</p>
</li>
<li>
<p>初译：尽管这会导致沮丧和失望，但恰恰相反，事实上这对你来说是件好事。</p>
</li>
<li>
<p>精修：尽管意识到了这点会让你沮丧和失望，但恰恰相反，这事实上对你来讲是件好事。</p>
</li>
<li>
<p>订正 2：尽管意识到了这点会让你沮丧和失望，这事实上对你来讲是件好事。</p>
</li>
<li>
<p>Unexpected results have two benefits: you pretty quickly learn to deal with disappointment and realise that when one door closes, another opens.</p>
</li>
<li>
<p>词块：意料之外的预期结果有两个好处；你很好，很快，学会如何处理失望；意识到上帝为你关上了一扇门，但是会打开另一扇；</p>
</li>
<li>
<p>初译：意料之外的结果有两个好处：你会非常快地学会如何处理失望，也会意识到：上帝为你关上了一扇门，但会打开另一扇。</p>
</li>
<li>
<p>精修：意料之外的预期结果有两个好处，你会非常快的学会如何处理失望，也会意识到：上帝为你关上了一扇门，但会打开另一扇。</p>
</li>
<li>
<p>You also quickly learn to adapt and come up with creative solutions to the problems the painting presents, and thinking outside the box will become your second nature.</p>
</li>
<li>
<p>词块：你也会很快学会；如何适应；有创造力的解决办法，学会；跳出框架思考；焕发第二春；</p>
</li>
<li>
<p>初译：你也会很快学会如何适应和“追随”对现有问题有创造力的解决方案，跳出框架思考将给到你带来第二春。</p>
</li>
<li>
<p>精修：你也会很快学会如何适应和探索现有问题的创造性解决方案，跳出框架思考将会给你带来第二春。</p>
</li>
<li>
<p>订 1：你也会很快学会如何适应和探索现有绘画问题的创造性解决方案，跳出框架思考将会给你带来第二春。</p>
</li>
<li>
<p>订 2：你也会很快学会如何适应和探索现有绘画问题的创造性解决方案，跳出框架思考将会变成你的第二天性。</p>
</li>
<li>
<p>In fact, creative problem-solving skills are incredibly useful in daily life, with which you’ re more likely to be able to find a solution when a problem arises.</p>
</li>
<li>
<p>词块：事实上；解决问题的方法；有创造力的；极大的；在日常生活中有用；你更有可能找到一个问题的解决方法，当这个问题出现；</p>
</li>
<li>
<p>初译：事实上，有创造力的解决问题这个的技能在日常生活中极其有用，当一个问题发生的时候，你更有可能找到解决方案。</p>
</li>
<li>
<p>精修：事实上，有创造性的问题解决方案这个技能在日常生活中极其有用，当一个问题发生的时候，你更有可能有这个能力找到解决方案。</p>
</li>
</ul></section><section><h3>翻译自己总结的做题方法<a href="#翻译自己总结的做题方法"><span>#</span></a></h3><ol>
<li>找主谓宾，句子结构</li>
<li>找出词块</li>
<li>拼接组词</li>
<li>通读润色</li>
</ol><p>碰到不认识的词，根据语境推测模糊过去。</p></section></section>
<section><h2>小作文与图表作文<a href="#小作文与图表作文"><span>#</span></a></h2><section><h3>这份东西怎么用<a href="#这份东西怎么用"><span>#</span></a></h3><p>真题区当题库用，模板区当骨架用。<strong>模板只是参考，句子必须换掉一半再背</strong>——市面模板人人一套，阅卷老师一天看几百份，撞句就是低分。</p><p>三个数字记牢：</p>

<table><thead><tr><th>项</th><th>数量</th><th>说明</th></tr></thead><tbody><tr><td>小作文外壳</td><td>2 套</td><td>去信、回信，<strong>第二句起完全共用</strong>，只有打头那句换调子</td></tr><tr><td>大作文外壳</td><td>1 套</td><td>首段 4 句 + 中段 2 因 + 尾段 3 句</td></tr><tr><td>功能词块</td><td>11 组小 + 5 类大</td><td>中间全部靠块拼，不背整篇</td></tr></tbody></table><p>背诵优先级：</p><ol>
<li>先背 <strong>小作文的头两行 + 尾两行</strong>（两套共用，实际只有 3 句），这是小作文的地基；</li>
<li>再背 <strong>小作文 6 个高频块</strong>（介绍、邀请、建议、致歉、感谢、投诉），够覆盖 2010-2026 的 14 年；</li>
<li>最后背大作文的 <strong>首段 4 句 + 中段 2 个原因句 + 尾段 3 句</strong>，话题词块靠考前突击。</li>
</ol><blockquote><p>标「译」的是给人看的中文，考场不写。</p></blockquote><hr /></section><section><h3>第一部分 小作文真题（2010-2026）<a href="#第一部分-小作文真题2010-2026"><span>#</span></a></h3><section><h4>年份-任务速查<a href="#年份-任务速查"><span>#</span></a></h4>

<table><thead><tr><th>年份</th><th>任务 1</th><th>任务 2</th><th>外壳</th></tr></thead><tbody><tr><td>2010</td><td>感谢接待</td><td>邀请来访</td><td>回信</td></tr><tr><td>2011</td><td>祝贺升学</td><td>给大学建议</td><td>去信</td></tr><tr><td>2012</td><td>投诉质量</td><td>要求解决</td><td>去信（投诉）</td></tr><tr><td>2013</td><td>告知义卖细节</td><td>鼓励参与</td><td>去信（通知）</td></tr><tr><td>2014</td><td>说明生活习惯</td><td>询问当地建议</td><td>去信</td></tr><tr><td>2015</td><td>介绍夏令营</td><td>招募志愿者</td><td>通知</td></tr><tr><td>2016</td><td>感谢祝贺</td><td>给翻译建议</td><td>回信</td></tr><tr><td>2017</td><td>接受邀请</td><td>介绍讲座要点</td><td>回信</td></tr><tr><td>2018</td><td>道歉说明</td><td>另约时间</td><td>去信（致歉）</td></tr><tr><td>2019</td><td>建议辩题</td><td>说明安排</td><td>去信（建议）</td></tr><tr><td>2020</td><td>介绍景点</td><td>给游览建议</td><td>去信</td></tr><tr><td>2021</td><td>邀请参会</td><td>说明细节</td><td>去信（邀请）</td></tr><tr><td>2022</td><td>介绍美食节</td><td>邀请留学生</td><td>去信（邀请）</td></tr><tr><td>2023</td><td>二选一建议</td><td>给理由</td><td>回信（建议）</td></tr><tr><td>2024</td><td>提出调查计划</td><td>询问意见</td><td>去信</td></tr><tr><td>2025</td><td>介绍短剧</td><td>邀请参演</td><td>去信（邀请）</td></tr><tr><td>2026</td><td>谈视频感受</td><td>想了解更多</td><td>回信</td></tr></tbody></table><p>规律：<strong>前五年偏「说明 + 请求」，近五年全是「介绍 + 邀请」和「建议 + 理由」</strong>。所以 2027 大概率还是这两类之一。</p></section><section><h4>2010 小作文<a href="#2010-小作文"><span>#</span></a></h4><p>You have just come back from the U. S. as a member of a Sino-American cultural exchange program. Write a letter to your American colleague to</p><ol>
<li>express your thanks for his/ her warm reception;</li>
<li>welcome him/ her to visit China in due course.</li>
</ol><p>You should write about 100 words on ANSWER SHEET 2.</p><p>Do not sign your own name at the end of the letter. Use “Zhang Wei” instead.</p><p>Do not write your address. (10 points)</p></section><section><h4>2011 小作文<a href="#2011-小作文"><span>#</span></a></h4><p>Suppose your cousin Li Ming has just been admitted to a university. Write him/ her a letter to</p><ol>
<li>congratulate him/ her, and</li>
<li>give him/ her suggestions on how to get prepared for university life.</li>
</ol><p>You should write about 100 words on ANSWER SHEET 2.</p><p>Do not sign your own name at the end of the letter. Use “Zhang Wei” instead.</p><p>Do not write the address. (10 points)</p></section><section><h4>2012 小作文<a href="#2012-小作文"><span>#</span></a></h4><p>Suppose you have found something wrong with the electronic dictionary that you bought from an online store the other day. Write an email to the customer service center to</p><ol>
<li>make a complaint, and</li>
<li>demand a prompt solution.</li>
</ol><p>You should write about 100 words on ANSWER SHEET 2.</p><p>Do not sign your own name at the end of the letter. Use “Zhang Wei” instead.</p><p>Do not write the address. (10 points)</p></section><section><h4>2013 小作文<a href="#2013-小作文"><span>#</span></a></h4><p>Suppose your class is to hold a charity sale for kids in need of help. Write your classmates an email to</p><ol>
<li>inform them about the details, and</li>
<li>encourage them to participate.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead.</p><p>Do not write your address. (10 points)</p></section><section><h4>2014 小作文<a href="#2014-小作文"><span>#</span></a></h4><p>Suppose you are going to study abroad and share an apartment with John, a local student. Write him an email to</p><ol>
<li>tell him about your living habits, and</li>
<li>ask for advice about living there.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead.</p><p>Do not write your address. (10 points)</p></section><section><h4>2015 小作文<a href="#2015-小作文"><span>#</span></a></h4><p>Suppose your university is going to host a summer camp for high school students. Write a notice to</p><ol>
<li>briefly introduce the camp activities, and</li>
<li>call for volunteers.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your name or the name of your university.</p><p>Do not write your address. (10 points)</p></section><section><h4>2016 小作文<a href="#2016-小作文"><span>#</span></a></h4><p>Suppose you won a translation contest and your friend, Jack, wrote an email to congratulate you and ask for advice on translation. Write him a reply to</p><ol>
<li>thank him, and</li>
<li>give your advice.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead.</p><p>Do not write your address. (10 points)</p></section><section><h4>2017 小作文<a href="#2017-小作文"><span>#</span></a></h4><p>Suppose you are invited by Professor Williams to give a presentation about Chinese culture to a group of international students. Write a reply to</p><ol>
<li>accept the invitation, and</li>
<li>introduce the key points of your presentation.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead.</p><p>Do not write your address. (10 points)</p></section><section><h4>2018 小作文<a href="#2018-小作文"><span>#</span></a></h4><p>Suppose you have to cancel your travel plan and will not be able to visit Professor Smith. Write him an email to</p><ol>
<li>apologize and explain the situation, and</li>
<li>suggest a future meeting.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead.</p><p>Do not write your address. (10 points)</p></section><section><h4>2019 小作文<a href="#2019-小作文"><span>#</span></a></h4><p>Suppose Professor Smith asked you to plan a debate on the theme of city traffic. Write him an email to</p><ol>
<li>suggest a specific topic with your reasons, and</li>
<li>tell him about your arrangements.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead. (10 points)</p></section><section><h4>2020 小作文<a href="#2020-小作文"><span>#</span></a></h4><p>Suppose you are planning a tour of a historical site for a group of international students. Write them an email to</p><ol>
<li>tell them about the site, and</li>
<li>give them some tips for the tour.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead. (10 points)</p></section><section><h4>2021 小作文<a href="#2021-小作文"><span>#</span></a></h4><p>Suppose you are organizing an online meeting. Write an email to Jack, an international student, to</p><ol>
<li>invite him to participate, and</li>
<li>tell him the details.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead. (10 points)</p></section><section><h4>2022 小作文<a href="#2022-小作文"><span>#</span></a></h4><p>Suppose you are planning a campus food festival. Write an email to the international students in your university to</p><ol>
<li>introduce the food festival, and</li>
<li>invite them to participate.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead. (10 points)</p></section><section><h4>2023 小作文<a href="#2023-小作文"><span>#</span></a></h4><p>An art exhibition and a robot show are to be held on Sunday, and your friend David asks you which one he should go to. Write him an email to</p><ol>
<li>make a suggestion, and</li>
<li>give your reason(s).</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead. (10 points)</p></section><section><h4>2024 小作文<a href="#2024-小作文"><span>#</span></a></h4><p>Suppose you and Jack are going to do a survey on the protection of old houses in an ancient town. Write him an email to</p><ol>
<li>put forward your plan, and</li>
<li>ask for his opinion.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead. (10 points)</p></section><section><h4>2025 小作文<a href="#2025-小作文"><span>#</span></a></h4><p>Suppose you are planning a short play based on a classic Chinese novel. Write your friend John an email to</p><ol>
<li>introduce the play, and</li>
<li>invite him to take part in it.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name. Use “Li Ming” instead. (10 points)</p></section><section><h4>2026 小作文<a href="#2026-小作文"><span>#</span></a></h4><p>Suppose your friend Jack has shared with you a video of his family’s travel in China. Write an email to tell him</p><ol>
<li>how you feel about the video, and</li>
<li>your wish to learn more about their travel.</li>
</ol><p>You should write about 100 words on the ANSWER SHEET.</p><p>Do not use your own name in your email; use “Li Ming” instead. (10 points)</p><hr /></section></section><section><h3>第二部分 小作文模板（2 套外壳 + 11 组词块）<a href="#第二部分-小作文模板2-套外壳--11-组词块"><span>#</span></a></h3><section><h4>先想明白：为什么 2 套就够<a href="#先想明白为什么-2-套就够"><span>#</span></a></h4><p>小作文的题干永远是「两个信息点」。所以：</p><ul>
<li>中间 = 2 个块（块 1 干任务 1，块 2 干任务 2），块从下面的库里抽；</li>
<li>开头只管一件事：<strong>我是谁、我为什么写</strong>；</li>
<li>结尾只管一件事：<strong>把球踢回给对方</strong>（等你回话 / 等你来 / 等你改）。</li>
</ul><p>于是「外壳 2 套 × 词块 11 组」就能覆盖 17 年真题。真正要背的只有开头两行、结尾两行，而这两套是<strong>同一份</strong>。</p></section><section><h4>模板 A：去信（我发起）<a href="#模板-a去信我发起"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear [称呼],</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: [用不定式或从句说清请求].</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>[块 1：干题干第一个点]</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>[块 2：干题干第二个点]</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it.</span></div></div><div><div><div>10</div></div><div><span>Either way, a line by [时间] will do.</span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>13</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>译：
这是一封很短的邮件，只说一件事：……。
（两块正文）
哪一部分对你不合适，就说，我们改。不管怎样，……之前给我一行回复就好。</p><blockquote><p><strong>风格版</strong>（好看但有风险，小作文 100 词不建议用，大作文可以）：</p><p><code>Some things deserve to be put in writing rather than left to a passing remark, and this is one of them: …</code> / <code>If any part of this sits awkwardly with your plans, say so plainly — a plan that has to be forced is worse than one that has to be rewritten. Whichever way you lean, a line by [时间] will do.</code></p></blockquote></section><section><h4>模板 B：回信（我回应）<a href="#模板-b回信我回应"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear [称呼],</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short reply with one purpose: [用不定式或从句说清回答].</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>[块 1]</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>[块 2]</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it.</span></div></div><div><div><div>10</div></div><div><span>Either way, a line by [时间] will do.</span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>13</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>译：
这是一封很短的回复，只说一件事：……。
剩下的都是细节。
（其余与去信一字不差。）</p><blockquote><p>两套从<strong>第二句起完全相同</strong>，结尾、签名、块库一字不改，只有打头那句换调子（email / reply）。</p><p><strong>小作文不要写「交代自己怎么写信」的句子</strong>（诸如 “here are the details”、“the details follow”），那是元话语，占字数不传信息。破题句只承担一件事：说明这是请求还是答复。</p><p><strong>换语气</strong>：给教授写信时，开头换成 <code>A matter of some importance has brought me to write: [点题].</code>，结尾第二句换成 <code>I would welcome your comments before anything is settled.</code>；投诉信里收尾换成 <code>I am not after a long explanation; a workable solution by [时间] is all I ask.</code></p></blockquote></section><section><h4>写作口径（很影响分）<a href="#写作口径很影响分"><span>#</span></a></h4><ul>
<li><strong>称呼</strong>：给朋友/同学 <code>Dear John,</code>；给教授 <code>Dear Professor Smith,</code>；不知道是谁 <code>Dear Sir or Madam,</code>；给一群人 <code>Dear friends,</code> / <code>Dear international students,</code>。</li>
<li><strong>落款</strong>：<code>Yours sincerely,</code>（知道姓名的信）或 <code>Yours faithfully,</code>（不知姓名）；给朋友可 <code>Take care,</code>。姓名一律 <code>Li Ming</code>。</li>
<li><strong>开头分场合</strong>：朋友 / 同学 / 留学生 → <code>This is a short email with one purpose: to …</code>（有个人腔）；教授 / 公司 / 机构 → <code>I am writing to …</code>（<strong>这里该用常规句</strong>，正式语域才是得体）；通知 → 不用第一人称。</li>
<li><strong>冒号后面接不定式或从句，不要接名词短语</strong>——<code>with one purpose: your invitation</code> 语义不成立（那不是 purpose，是话题）。</li>
<li><strong>通知/告示不写称呼</strong>，见后文附录。</li>
<li>字数：<strong>100 词左右，95-115 最稳</strong>。大纲写的正是「100 词左右」，长度不符会「酌情扣分」，低于 90 词开始吃亏；超过 130 词只是徒增出错概率。</li>
</ul></section><section><h4>想上 9 分：三条结构位（大纲要求「丰富的语法结构」）<a href="#想上-9-分三条结构位大纲要求丰富的语法结构"><span>#</span></a></h4><p>只写简单句，小作文最多停在 8 分——第五档原文是「使用丰富的语法结构和词汇」。但不用整段重写，<strong>每封信用一条就够</strong>，插在块 1 里：</p>

<table><thead><tr><th>结构</th><th>现成句（换词即用）</th></tr></thead><tbody><tr><td>定语从句</td><td><code>The meeting, which will run for an hour, starts at eight.</code></td></tr><tr><td>非谓语</td><td><code>Three students report for ten minutes each, leaving the last half hour for questions.</code></td></tr><tr><td>条件状语</td><td><code>If the time does not suit you, say so and we will move it.</code></td></tr></tbody></table><blockquote><p>一条够用，两条封顶。堆三条会挤掉信息点，反而掉档。</p></blockquote><p><strong>硬规则：不许照抄题干句子。</strong> 大纲原文——「允许在作文中使用提示语中出现过的个别关键词或词组，但使用提示语中出现的句子将被扣分」。所以 2025 那句 <code>invite him to take part in it</code> 不能原样搬，要写成 <code>have you on stage</code>。</p><hr /></section><section><h4>中间块库（11 组，按任务抽两块）<a href="#中间块库11-组按任务抽两块"><span>#</span></a></h4><p>每个块 2 句，约 22-28 词。<strong>用完记得把方括号换成具体信息，别连括号一起抄。</strong></p><section><h5>块 1｜介绍活动（时间地点 + 内容亮点）<a href="#块-1介绍活动时间地点--内容亮点"><span>#</span></a></h5><blockquote><p>The event falls on [日期], from [时间] to [时间], at [地点]. What makes it worth a trip is [最亮的环节], on top of [第二亮点].</p></blockquote><p>译：活动定在……，地点在……。值得跑一趟的是……，除此之外还有……。</p></section><section><h5>块 2｜介绍事物（定义 + 实际好处）<a href="#块-2介绍事物定义--实际好处"><span>#</span></a></h5><blockquote><p>[对象] is best described as [一句大白话定义] — nothing fancy, but it does [核心功能] well. The practical payoff is simple: less time on [麻烦事], more on [要紧事].</p></blockquote><p>译：……可以说是……——不花哨，但……做得很扎实。实际好处很简单：少花时间在……上，多花在……上。</p></section><section><h5>块 3｜邀请（为什么是你 + 来了能得到什么）<a href="#块-3邀请为什么是你--来了能得到什么"><span>#</span></a></h5><blockquote><p>I am asking you in particular because [为什么是你], and I think [具体环节] would be your kind of thing. Bring [同伴/作品] along if you feel like it.</p></blockquote><p>译：我特意找你，是因为……，而且我觉得……会正合你口味。愿意的话把……带上。</p></section><section><h5>块 4｜建议（给一个做法 + 给一个理由）<a href="#块-4建议给一个做法--给一个理由"><span>#</span></a></h5><blockquote><p>For a start, [做法一] — it costs you almost nothing and pays off quickly. Once that becomes a habit, [做法二] will feel natural rather than forced.</p></blockquote><p>译：先做……——几乎不费成本，见效还快。等它成了习惯，……就水到渠成，不用硬撑。</p></section><section><h5>块 5｜致歉 / 取消（认错 + 补救）<a href="#块-5致歉--取消认错--补救"><span>#</span></a></h5><blockquote><p>The plan has to be called off on my side, and the fault is entirely mine: [原因一句话,别找借口]. To make up for it, I have [补救方案], and I will [进一步承诺].</p></blockquote><p>译：计划在我这边得取消，责任全在我：……。作为补偿，我已经……，并且我会……。</p></section><section><h5>块 6｜投诉（事实 + 要求）<a href="#块-6投诉事实--要求"><span>#</span></a></h5><blockquote><p>The problem showed up almost immediately: [具体表现,带时间和次数]. I am not after an explanation so much as a fix — [具体要求], preferably before [时间].</p></blockquote><p>译：问题几乎是立刻就出现了：……。我要的不是解释，而是解决——……，最好在……之前。</p></section><section><h5>块 7｜感谢（具体到一件事 + 影响）<a href="#块-7感谢具体到一件事--影响"><span>#</span></a></h5><blockquote><p>Looking back, [对方做的具体事] made a real difference; without it, [后果]. I still owe you one, and I intend to pay it back properly.</p></blockquote><p>译：回头看，……确实起了作用；没有它，……。我还欠你一份人情，而且我打算好好还。</p></section><section><h5>块 8｜祝贺（肯定成绩 + 夸付出）<a href="#块-8祝贺肯定成绩--夸付出"><span>#</span></a></h5><blockquote><p>Congratulations are in order, and they are well earned: [成绩]. What impresses me most is not the result itself but the [坚持/取舍] behind it.</p></blockquote><p>译：恭喜，而且实至名归：……。最让我佩服的不是结果，而是背后的……。</p></section><section><h5>块 9｜申请 / 自荐（岗位 + 两条资格）<a href="#块-9申请--自荐岗位--两条资格"><span>#</span></a></h5><blockquote><p>I would like to be considered for [岗位/名额]. Two things make me a reasonable fit: [资格一], and [资格二].</p></blockquote><p>译：我想申请……。有两点让我还算合适：……，以及……。</p></section><section><h5>块 10｜询问 / 求建议（问两点 + 为什么信你）<a href="#块-10询问--求建议问两点--为什么信你"><span>#</span></a></h5><blockquote><p>Before I commit, I would like your read on two points: [问题一], and [问题二]. You have been through this yourself, so your judgment carries more weight than any guidebook.</p></blockquote><p>译：在定下来之前，我想听听你对两点的看法：……，还有……。你自己走过这一遭，你的判断比任何攻略都管用。</p></section><section><h5>块 11｜推荐（推什么 + 怎么用）<a href="#块-11推荐推什么--怎么用"><span>#</span></a></h5><blockquote><p>My recommendation is [对象], and the reason is simple: [理由]. If you go, start with [具体入口] — that is where it shows its best side.</p></blockquote><p>译：我推荐……，理由很简单：……。真去的话，从……开始——那里最见它的好处。</p><hr /></section></section><section><h4>附：通知 / 告示 外壳（2015 考过，2026 大纲新增会议纪要）<a href="#附通知--告示-外壳2015-考过2026-大纲新增会议纪要"><span>#</span></a></h4><p>通知不写称呼、不写客套，<strong>标题居中 + 正文 + 落款</strong>，就这三块。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Notice</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>[活动名称]</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>[背景一句] ... is scheduled for [日期] at [地点], and the organizers are now [动作].</span></div></div><div><div><div>6</div></div><div><span>[内容] It opens with [亮点一], and then moves on to [亮点二].</span></div></div><div><div><div>7</div></div><div><span>[号召] Those interested are welcome to sign up at [地点] before [时间].</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>The Students' Union</span></div></div><div><div><div>10</div></div><div><span>[日期]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>会议纪要（大纲新形式，本质是「记录 + 结论」，用同一套块）：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Minutes of the [会议名称]</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>Time: [时间]      Place: [地点]      Present: [参会人]</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>Chaired by [主持人], the meeting opened with [议题一].</span></div></div><div><div><div>6</div></div><div><span>[某人] proposed [方案], and after discussion it was agreed that [结论].</span></div></div><div><div><div>7</div></div><div><span>It was also decided that [后续安排], with [负责人] in charge.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>[记录人]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>要背的功能句只有三句：</p><ul>
<li><code>... was scheduled for [时间] at [地点], and the response so far has been encouraging.</code></li>
<li><code>It was agreed that [结论], though [保留意见] still needs to be looked at.</code></li>
<li><code>Those interested are welcome to sign up at [地点] before [时间].</code></li>
</ul><hr /></section></section><section><h3>第三部分 大作文真题（2010-2026）<a href="#第三部分-大作文真题2010-2026"><span>#</span></a></h3><p>题干统一长这样，不用逐字背：</p><blockquote><p>Write an essay based on the chart below. In your essay, you should 1) interpret the chart, and 2) give your comments. Write your answer in about 150 words on the ANSWER SHEET. (15 points)</p><p>图按真题原图重绘，单位与类别名保留原样；个别数值为原图目测值。</p></blockquote><section><h4>2010｜手机订阅数：发展 vs 发达<a href="#2010手机订阅数发展-vs-发达"><span>#</span></a></h4><div><div><div>2000-2008 年发展中国家手机订阅数 单位 十亿20002003200620084.543.532.521.510.50十亿
</div><div>2000-2008 年发展中国家手机订阅数 单位 十亿20002003200620084.543.532.521.510.50十亿
</div></div></div>

<table><thead><tr><th>年份</th><th>发展中</th><th>发达</th></tr></thead><tbody><tr><td>2000</td><td>0.4</td><td>0.7</td></tr><tr><td>2008</td><td>4.0</td><td>1.0</td></tr></tbody></table><p>坑：两条线<strong>在 2003 年前后交叉</strong>，发展中国家反超。写「一个暴涨、一个原地踏步、中途换位」，别只写「都增长了」。</p></section><section><h4>2011｜国内轿车市场品牌份额<a href="#2011国内轿车市场品牌份额"><span>#</span></a></h4><div><div><div>2009 年国内轿车市场品牌份额 单位 百分比国产日系美系4035302520151050百分比
</div><div>2009 年国内轿车市场品牌份额 单位 百分比国产日系美系4035302520151050百分比
</div></div></div>

<table><thead><tr><th>品牌</th><th>2008</th><th>2009</th></tr></thead><tbody><tr><td>国产</td><td>25</td><td>32</td></tr><tr><td>日系</td><td>35</td><td>25</td></tr><tr><td>美系</td><td>12</td><td>12</td></tr></tbody></table><p>坑：<strong>日系掉、国产升，一升一降刚好换位</strong>；美系两年不动，是「稳定项」。这题不写「都涨」就对了。</p></section><section><h4>2012｜某公司员工工作满意度（表格）<a href="#2012某公司员工工作满意度表格"><span>#</span></a></h4>

<table><thead><tr><th>年龄段</th><th>满意</th><th>不清楚</th><th>不满意</th></tr></thead><tbody><tr><td>≤40 岁</td><td>16.7%</td><td>50.0%</td><td>33.3%</td></tr><tr><td>41-50 岁</td><td>0.0%</td><td>36.0%</td><td>64.0%</td></tr><tr><td>&gt;50 岁</td><td>40.0%</td><td>50.0%</td><td>10.0%</td></tr></tbody></table><p>坑：三点反常识——<strong>41-50 岁满意率是 0</strong>；三组「不清楚」都在 36%-50%；越年轻不一定越满意。写「中年段最不满 + 大面积态度模糊」。</p></section><section><h4>2013｜某高校学生兼职情况<a href="#2013某高校学生兼职情况"><span>#</span></a></h4><div><div><div>某高校各年级学生兼职比例 单位 百分比大一大二大三大四1009080706050403020100百分比
</div><div>某高校各年级学生兼职比例 单位 百分比大一大二大三大四1009080706050403020100百分比
</div></div></div><p>坑：前三档几乎平着走（67→72），<strong>大四陡然跳到 88.24</strong>。全文重心就放在「大四为什么跳」。</p></section><section><h4>2014｜20 年间城乡人口变化<a href="#201420-年间城乡人口变化"><span>#</span></a></h4><div><div><div>1990-2010 年中国城镇人口 单位 百万人1990200020109008007006005004003002001000百万人
</div><div>1990-2010 年中国城镇人口 单位 百万人1990200020109008007006005004003002001000百万人
</div></div></div>

<table><thead><tr><th>年份</th><th>城镇</th><th>乡村</th></tr></thead><tbody><tr><td>1990</td><td>300</td><td>834</td></tr><tr><td>2000</td><td>458</td><td>807</td></tr><tr><td>2010</td><td>666</td><td>674</td></tr></tbody></table><p>坑：<strong>2010 年两条线几乎交汇</strong>（666 vs 674），这是全图最有戏剧性的点；城镇 20 年涨了 120% 以上。</p></section><section><h4>2015｜某市居民春节假期花销（饼图）<a href="#2015某市居民春节假期花销饼图"><span>#</span></a></h4><div><div><div>40%20%20%20%"某市居民春节假期花销占比 单位 百分比"新年礼物 [40]交通 [20]聚餐宴请 [20]其他 [20]
</div><div>40%20%20%20%"某市居民春节假期花销占比 单位 百分比"新年礼物 [40]交通 [20]聚餐宴请 [20]其他 [20]
</div></div></div><p>坑：<strong>礼物一家占了四成</strong>，其余三项整齐地各两成。写「人情支出压过一切」，别把三项平均写成一笔流水账。</p></section><section><h4>2016｜某高校学生旅游目的（饼图）<a href="#2016某高校学生旅游目的饼图"><span>#</span></a></h4><div><div><div>37%33%9%6%15%"某高校学生旅游目的占比 单位 百分比"欣赏风景 [37]缓解压力 [33]结交朋友 [9]培养独立 [6]其他 [15]
</div><div>37%33%9%6%15%"某高校学生旅游目的占比 单位 百分比"欣赏风景 [37]缓解压力 [33]结交朋友 [9]培养独立 [6]其他 [15]
</div></div></div><p>坑：前两项合计七成，<strong>「看」和「喘口气」是同一件事的两面</strong>；培养独立只有 6%，别写成主流。</p></section><section><h4>2017｜博物馆数量与参观人数（双折线）<a href="#2017博物馆数量与参观人数双折线"><span>#</span></a></h4><div><div><div>2013-2015 年博物馆参观人数 单位 十万人次201320142015800070006000500040003000200010000十万人次
</div><div>2013-2015 年博物馆参观人数 单位 十万人次201320142015800070006000500040003000200010000十万人次
</div></div></div>

<table><thead><tr><th>年份</th><th>博物馆数量（家）</th><th>参观人数（十万人次）</th></tr></thead><tbody><tr><td>2013</td><td>4165</td><td>6378</td></tr><tr><td>2014</td><td>4510</td><td>7177</td></tr><tr><td>2015</td><td>4697</td><td>7811</td></tr></tbody></table><p>坑：两条线<strong>同步上升</strong>，但数量只涨了 13%，人数涨了 22%——「馆多了一点，人多了很多」。两个单位不同，绝不能直接比大小。</p></section><section><h4>2018｜选择餐厅的关注因素（饼图）<a href="#2018选择餐厅的关注因素饼图"><span>#</span></a></h4><div><div><div>36%27%24%8%5%"2017 年某市消费者选择餐厅的关注因素 单位 百分比"特色 [36.3]服务 [26.8]环境 [23.8]价格 [8.4]其他 [4.7]
</div><div>36%27%24%8%5%"2017 年某市消费者选择餐厅的关注因素 单位 百分比"特色 [36.3]服务 [26.8]环境 [23.8]价格 [8.4]其他 [4.7]
</div></div></div><p>坑：<strong>价格只排第四（8.4%）</strong>，而特色、服务、环境合计 86.9%。这题的立意天然是「从吃饱到吃好」。</p></section><section><h4>2019｜本科毕业生去向（分组柱状）<a href="#2019本科毕业生去向分组柱状"><span>#</span></a></h4><div><div><div>某高校 2018 年本科毕业生去向 单位 百分比就业升学创业80706050403020100百分比
</div><div>某高校 2018 年本科毕业生去向 单位 百分比就业升学创业80706050403020100百分比
</div></div></div>

<table><thead><tr><th>去向</th><th>2013</th><th>2018</th></tr></thead><tbody><tr><td>就业</td><td>68.1%</td><td>60.7%</td></tr><tr><td>升学</td><td>26.3%</td><td>34.0%</td></tr><tr><td>创业</td><td>1.3%</td><td>2.6%</td></tr></tbody></table><p>坑：<strong>就业降 7.4、升学报 7.7，几乎一比一搬家</strong>；创业虽翻倍，绝对值仍只有 2.6%，不能吹成「创业热」。</p></section><section><h4>2020｜大学生手机阅读目的（饼图）<a href="#2020大学生手机阅读目的饼图"><span>#</span></a></h4><div><div><div>60%21%17%2%"某高校学生手机阅读目的 单位 百分比"学习知识 [59.5]消磨时间 [21.3]获取信息 [17]其他 [2.2]
</div><div>60%21%17%2%"某高校学生手机阅读目的 单位 百分比"学习知识 [59.5]消磨时间 [21.3]获取信息 [17]其他 [2.2]
</div></div></div><p>坑：近六成是「学习知识」，只有两成是「消磨时间」——<strong>反直觉</strong>，别按刻板印象写成「都在刷手机玩」。</p></section><section><h4>2021｜某市居民体育锻炼方式<a href="#2021某市居民体育锻炼方式"><span>#</span></a></h4><div><div><div>某市居民体育锻炼方式 单位 百分比独自锻炼和朋友和家人团体活动1009080706050403020100百分比
</div><div>某市居民体育锻炼方式 单位 百分比独自锻炼和朋友和家人团体活动1009080706050403020100百分比
</div></div></div><p>坑：<strong>各项相加超过 100%</strong>，说明是多选，不能画饼图、不能写成「占比结构」。真正看点是「独自 &gt; 结伴」。</p></section><section><h4>2022｜我国快递业务量（总体 vs 农村）<a href="#2022我国快递业务量总体-vs-农村"><span>#</span></a></h4><div><div><div>2018-2020 年我国快递业务量总体 单位 十亿件2018201920209080706050403020100十亿件
</div><div>2018-2020 年我国快递业务量总体 单位 十亿件2018201920209080706050403020100十亿件
</div></div></div>

<table><thead><tr><th>年份</th><th>总体</th><th>其中农村</th></tr></thead><tbody><tr><td>2018</td><td>51</td><td>12</td></tr><tr><td>2019</td><td>64</td><td>15</td></tr><tr><td>2020</td><td>83</td><td>30</td></tr></tbody></table><p>坑：农村从 15 涨到 30，<strong>一年翻倍</strong>，是增速之王；但农村本身包含在总体里，两组不能相加。</p></section><section><h4>2023｜我国居民健康素养水平（折线）<a href="#2023我国居民健康素养水平折线"><span>#</span></a></h4><div><div><div>2012-2021 年我国居民健康素养水平 单位 百分比2012201520182021302826242220181614121086420百分比
</div><div>2012-2021 年我国居民健康素养水平 单位 百分比2012201520182021302826242220181614121086420百分比
</div></div></div>

<table><thead><tr><th>年份</th><th>2012</th><th>2013</th><th>2014</th><th>2015</th><th>2016</th><th>2017</th><th>2018</th><th>2019</th><th>2020</th><th>2021</th></tr></thead><tbody><tr><td>%</td><td>8.80</td><td>9.48</td><td>9.79</td><td>10.25</td><td>11.58</td><td>14.18</td><td>17.06</td><td>19.17</td><td>23.15</td><td>25.40</td></tr></tbody></table><p>坑：<strong>前五年慢慢爬，后四年突然加速</strong>（2019 之后斜率明显变陡）。写「拐点在 2019」，比写「一路增长」高一个档。</p></section><section><h4>2024｜劳动实践课的主要收获（条形图）<a href="#2024劳动实践课的主要收获条形图"><span>#</span></a></h4><div><div><div>某高校劳动实践课学生主要收获 单位 百分比学知识练动手心情舒畅会合作1009080706050403020100百分比
</div><div>某高校劳动实践课学生主要收获 单位 百分比学知识练动手心情舒畅会合作1009080706050403020100百分比
</div></div></div><p>坑：<strong>知识与动手都过 84，合作只有 32.6</strong>——这是同一门课里的「长短腿」，立意必须是「补短板」，不是「效果好」。</p></section><section><h4>2025｜某社区老年人日常休闲活动<a href="#2025某社区老年人日常休闲活动"><span>#</span></a></h4><div><div><div>某社区老年人主要日常休闲活动 单位 百分比看电视散步养花阅读下棋1009080706050403020100百分比
</div><div>某社区老年人主要日常休闲活动 单位 百分比看电视散步养花阅读下棋1009080706050403020100百分比
</div></div></div><p>坑：<strong>越省力的活动越受欢迎</strong>（电视 90.8 / 下棋 18.4），这条隐性规律才是评论的抓手；各项非互斥，不能用饼图。</p></section><section><h4>2026｜关于儿童户外活动的看法<a href="#2026关于儿童户外活动的看法"><span>#</span></a></h4><div><div><div>关于儿童户外活动作用的看法 单位 百分比满足好奇心促进观察力强身健体亲子互动605550454035302520151050百分比
</div><div>关于儿童户外活动作用的看法 单位 百分比满足好奇心促进观察力强身健体亲子互动605550454035302520151050百分比
</div></div></div><p>坑：前两项<strong>只差 0.1 个百分点</strong>，属于并列第一；而且这是「看法」不是「效果」，不能写成「户外活动确实提高了观察力」。</p><hr /></section></section><section><h3>第四部分 大作文模板（1 套，11 句）<a href="#第四部分-大作文模板1-套11-句"><span>#</span></a></h3><section><h4>骨架<a href="#骨架"><span>#</span></a></h4><p>三段共 11 句，约 155 词。<strong>粗体是固定句，方括号是当天换的词。</strong></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>第一段 描述 + 定性（4 句）</span></div></div><div><div><div>2</div></div><div><span>S1  The chart turns something we usually only sense into numbers: [主题名词短语], measured across [调查对象或时间段].</span></div></div><div><div><div>3</div></div><div><span>S2  [动态] Between [起点] and [终点], [A] climbed from [x] to [y], while [B] moved only from [x] to [y].</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>[静态] The leading item is [A], at [x]%, with [B] following at [y]%.</span></div></div><div><div><div>5</div></div><div><span>S3  Put the two ends together and the gap is [差额]: [倍数] times over, which is hard to dismiss as noise.</span></div></div><div><div><div>6</div></div><div><span>S4  In plain words, [一句人话结论，不超过 15 词].</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>第二段 两个原因（4 句）</span></div></div><div><div><div>9</div></div><div><span>S5  Two forces usually sit behind a shift like this, and neither is mysterious.</span></div></div><div><div><div>10</div></div><div><span>S6  The first is structural: [政策/技术/经济] has driven the cost of [某行为] down, so what used to be a luxury has quietly become a default.</span></div></div><div><div><div>11</div></div><div><span>S7  The second is personal: people now weigh [价值] differently — [旧标准] counts for less than [新标准].</span></div></div><div><div><div>12</div></div><div><span>S8  [可选·让步] Not everyone welcomes it, and the worry about [担忧] is not unreasonable.</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>第三段 判断 + 建议（3 句）</span></div></div><div><div><div>15</div></div><div><span>S9  Where does that leave us? [趋势判断：还会走一段 / 已接近天花板].</span></div></div><div><div><div>16</div></div><div><span>S10 The trend will not reverse on its own; the sensible response is to [宏观建议].</span></div></div><div><div><div>17</div></div><div><span>S11 For individuals, the point [follows from the diagnosis / is simpler]: [个体建议] — that is how a trend turns into a benefit rather than a statistic.</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><blockquote><p><strong>骨架上有四个槽最容易写坏</strong>，2021 那篇就是栽在第 1、4 条上：</p><ol>
<li><strong>S2 的括注位</strong>——单位、口径、是否可多选，一律塞进括号，最多 5 词：<code>Exercising alone leads at 54.3% (multiple answers allowed)</code>。<strong>不要为它单开一句</strong>，那会变成技术说明，还可能被当成算错。</li>
<li><strong>S3 是读图句，不是评图句</strong>——只许出现「差距、倍数、拐点」，<code>shares add up to more than a hundred</code> 这种自我解释删掉。</li>
<li><strong>S5 要防「伪二分」</strong>——两个原因必须来自不同系统：一个是外部结构（成本、政策、技术），一个是内部动机（观念、情绪、算计）。如果两条都能归到同一件事，说明你只找到一个原因，第二条换成「让步 / 对比」。</li>
<li><strong>S11 通常要带因果桥</strong>——<code>the point follows from the diagnosis</code> 后面必须接一条<strong>由第二段原因推出的动作</strong>；只有建议与原因显然对应时，才用 <code>the point is simpler</code>。诊断和药方反着来，是第四档的典型特征。</li>
</ol><p><strong>骨架自带的四种结构</strong>（大纲要「丰富的语法结构」和「多种衔接手法」，这里已经够，不要再堆）：</p><ul>
<li>倍数/差距句（S3）：<code>…, which is hard to dismiss as noise.</code></li>
<li>因果从句（S6）：<code>…drove the cost down, so what used to be a luxury has become a default.</code></li>
<li>让步句（S8，可选）：<code>Not everyone welcomes it, and the worry about … is not unreasonable.</code></li>
<li>条件推演（S11）：<code>if calendars keep people apart, put the partner into the calendar.</code></li>
</ul><p>衔接手法每段一个就够：<code>The first / The second</code>、<code>Put differently</code>、<code>That said</code>、<code>Either way</code>。骨架里已有三处，<strong>不要再加 firstly / moreover / last but not least</strong>——那是第三档的衔接。</p><p>S1 的三种备选，按图的「气质」挑，别三篇都用同一句：</p><ul>
<li>反差明显：<code>Two numbers in the chart tell the whole story, and they pull in opposite directions.</code></li>
<li>单一趋势：<code>The chart records a shift that took [年数] years to complete and about three sentences to describe.</code></li>
<li>静态占比：<code>Ask people one question and the answers line up in a way that is almost too neat to be accidental.</code></li>
</ul></blockquote><p>译（S1-S4）：
图表把一件我们平时只能感觉的事变成了数字：……，调查范围是……。
从……到……，……从……升到……，而……只从……动到……。（静态题改：占比最高的是……，为……%，其后是……，为……%。）
把两头放在一起看，差距是……：……倍，很难当成噪声忽略。
说人话：……。</p><p>译（S5-S8）：
这种变化背后通常有两股力量，且都不神秘。
第一股是结构性的：……把……的成本压低了，于是原来的奢侈品悄悄变成了默认选项。
第二股是个人的：人们衡量……的尺子变了——……不如……重要了。
当然不是人人都欢迎，对……的担心并非没有道理。</p><p>译（S9-S11）：
那这意味着什么？……。
趋势不会自己掉头，所以理性的反应是……。
对个人来说更简单：……——趋势才能变成红利，而不只是一个统计数字。</p><blockquote><p>想让尾段更「文」一点，S9 或 S11 可换成（<strong>三篇里最多用一次</strong>，否则通篇都在抒情）：</p><ul>
<li><code>The numbers are only a mirror; what matters is what we choose to see in it.</code></li>
<li><code>A trend is not a verdict — it is an invitation to decide what comes next.</code></li>
<li><code>Statistics record where we have been; they say nothing about where we are willing to go.</code></li>
</ul><p>**尾段的建议必须接回第二段的原因。**第二段说「日程难对齐」，第三段就该说「把搭档写进日程」，而不是「顺其自然」。诊断和药方反着来，阅卷会判收束不力。</p><p>反过来，只有<strong>有争议</strong>的题（2019 学历、2020 手机阅读、2025 老人看电视）才用 <code>neither to cheer nor to panic</code> 这版；中性题用它，会像在对着一个没人吵的问题喊口号。</p></blockquote></section><section><h4>用 2025 真题走一遍（考场原速）<a href="#用-2025-真题走一遍考场原速"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: the leisure habits of older people in one community, measured across five activities.</span></div></div><div><div><div>2</div></div><div><span>The leading item is watching TV, at 90.8%, with walking following at 68.3%.</span></div></div><div><div><div>3</div></div><div><span>Put the two ends together and the gap is 72.4 percentage points — nearly five times over, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the easier an activity is, the more welcome it is.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious.</span></div></div><div><div><div>7</div></div><div><span>The first is structural: cheaper screens and round-the-clock broadcasting have driven the cost of entertainment down, so what used to require a trip outside has quietly become a default at home.</span></div></div><div><div><div>8</div></div><div><span>The second is personal: many older people now weigh comfort above novelty — a familiar programme feels safer than an unfamiliar chess partner.</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>Where does that leave us? The preference for low-effort leisure is unlikely to fade on its own.</span></div></div><div><div><div>11</div></div><div><span>The sensible response is neither to cheer nor to panic, but to make the alternatives easier to reach: more shaded walking paths, more chess tables in the courtyard.</span></div></div><div><div><div>12</div></div><div><span>For individuals, the point is simpler: walk with them instead of urging them to — that is how a trend turns into a benefit rather than a statistic.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>（168 词，全部用骨架长出来的，没有一句是「模板腔」。）</p></section><section><h4>六种题型的首段改法<a href="#六种题型的首段改法"><span>#</span></a></h4>

<table><thead><tr><th>题型</th><th>真题</th><th>S2 换成</th><th>S3 换成</th></tr></thead><tbody><tr><td>单柱趋势</td><td>2014、2022</td><td>climbed from … to …</td><td>差距 / 翻倍倍数</td></tr><tr><td>分组对比</td><td>2011、2019</td><td>A fell from … to …, while B rose from … to …</td><td>一升一降、换位</td></tr><tr><td>静态占比</td><td>2025、2026</td><td>The leading item is … at …%, with … at …%</td><td>头尾差多少个百分点</td></tr><tr><td>饼图</td><td>2015、2016、2018、2020</td><td>A alone accounts for …%, with B and C at …% each</td><td>前三项合计占多少</td></tr><tr><td>折线</td><td>2017、2023</td><td>rose from … to … over nine years</td><td>拐点在哪一年</td></tr><tr><td>表格</td><td>2012</td><td>按行说：the youngest group … , the middle group …</td><td>最反常识的那一格</td></tr></tbody></table><p>**S2/S3 只换这两句，S1、S4 和整个二、三段一字不动。**这是这套模板的全部工作量。</p></section><section><h4>五大话题词块（考前一周背）<a href="#五大话题词块考前一周背"><span>#</span></a></h4><section><h5>经济消费<a href="#经济消费"><span>#</span></a></h5><ul>
<li><code>disposable income</code> 可支配收入 / <code>purchasing power</code> 购买力</li>
<li><code>spending has shifted from goods to experiences</code> 花钱从买东西转向买体验</li>
<li><code>the cost of … has been driven down</code> ……的成本被压低了</li>
<li><code>a buyer's market</code> 买方市场</li>
<li>定性句：<code>What looks like a spending boom is really a change in what people are willing to pay for.</code></li>
</ul></section><section><h5>教育就业<a href="#教育就业"><span>#</span></a></h5><ul>
<li><code>credential pressure</code> 学历压力 / <code>a tighter job market</code> 更紧的就业市场</li>
<li><code>signal competence to employers</code> 向雇主释放能力信号</li>
<li><code>practical skills are valued over paper qualifications</code> 实操能力压过一纸文凭</li>
<li>定性句：<code>Behind the numbers sits a generation hedging its bets against an uncertain job market.</code></li>
</ul></section><section><h5>科技文化<a href="#科技文化"><span>#</span></a></h5><ul>
<li><code>lower the threshold for …</code> 降低……的门槛</li>
<li><code>technology has quietly rewritten the default</code> 技术悄悄改写了默认选项</li>
<li><code>cultural confidence</code> 文化自信 / <code>heritage on screen</code> 荧幕上的传统</li>
<li>定性句：<code>Convenience, once a bonus, has become the standard against which everything else is judged.</code></li>
</ul></section><section><h5>社会民生<a href="#社会民生"><span>#</span></a></h5><ul>
<li><code>an ageing population</code> 老龄化 / <code>public services</code> 公共服务</li>
<li><code>the gap between … and …</code> ……与……之间的落差</li>
<li><code>leave no one behind</code> 一个都不落下</li>
<li>定性句：<code>The chart measures habits, but what it really exposes is who has access and who does not.</code></li>
</ul></section><section><h5>生态健康<a href="#生态健康"><span>#</span></a></h5><ul>
<li><code>health literacy</code> 健康素养 / <code>a low-carbon routine</code> 低碳日常</li>
<li><code>prevention is cheaper than cure</code> 预防比治疗便宜</li>
<li><code>sustainable in the long run</code> 长期可持续</li>
<li>定性句：<code>A healthier population is less a medical achievement than a daily habit repeated by millions.</code></li>
</ul></section></section><section><h4>反套话对照表（左边这些别写）<a href="#反套话对照表左边这些别写"><span>#</span></a></h4>

<table><thead><tr><th>市面常见（会被看穿）</th><th>换成</th></tr></thead><tbody><tr><td>As is vividly depicted in the chart</td><td>The chart turns something we usually only sense into numbers</td></tr><tr><td>It is universally acknowledged that</td><td>Few would dispute that …（或直接陈述事实）</td></tr><tr><td>With the rapid development of society</td><td>换成具体机制：cheaper screens / tighter job market</td></tr><tr><td>Every coin has two sides</td><td>Not everyone welcomes it, and the worry about … is not unreasonable</td></tr><tr><td>It is high time that we took measures</td><td>The trend will not reverse on its own; the sensible response is to …</td></tr><tr><td>Last but not least</td><td>（直接删掉，用内容承接）</td></tr><tr><td>plays an increasingly important role</td><td>has quietly become a default</td></tr><tr><td>This phenomenon is worth our attention</td><td>（删；改成一句判断句）</td></tr><tr><td>can not be ignored</td><td>很难当成噪声：hard to dismiss as noise</td></tr><tr><td>Only in this way can we …</td><td>that is how a trend turns into a benefit</td></tr></tbody></table></section><section><h4>考前自查（30 秒）<a href="#考前自查30-秒"><span>#</span></a></h4><ol>
<li><strong>单位</strong>写了吗？十亿件 / 十万人次 / 百万人 / 百分点，别混。</li>
<li><strong>对象</strong>写清了吗？某高校 / 某市 / 某社区，不能推广成「我国」。</li>
<li>没时间轴的静态图，<strong>绝不能写「逐年上升」</strong>。</li>
<li>多选数据（2021、2025）<strong>不能画饼图、不能说合计 100%</strong>；也不要专门写一句解释「合计超过 100%」，那是技术说明，不是解读。</li>
<li>「看法」≠「事实」（2026），别写成「确实提高了」。</li>
<li>第二段有没有<strong>两股不同的力量</strong>？只写一条就是 12 分档。</li>
<li>结尾有没有落到<strong>具体动作</strong>？「加强宣传」这种等于没写。</li>
<li><strong>有没有照抄题干句子</strong>？大纲明写「使用提示语中出现的句子将被扣分」。</li>
<li>字数落在区间里了吗（小 95-115、大 150-180）？长度不符会被「酌情扣分」；书写别潦草，影响阅读直接降一档。</li>
</ol></section><section><h4>迭代流程（10 月起怎么滚）<a href="#迭代流程10-月起怎么滚"><span>#</span></a></h4><ol>
<li>先用这 3 套写出<strong>第一版</strong>，别边写边改；</li>
<li>拿 2010-2026 真题逐篇限时写：小作文 12 分钟、大作文 25 分钟，写完自己按评分点数一遍；</li>
<li>把原题 + 自己的作文 + 评分标准丢给 AI，只问三件事：<strong>信息点漏没漏、哪句是中式英语、哪句能换更地道的说法</strong>；</li>
<li>只改<strong>固定句</strong>（小作文头尾、S1、S5、S10），块库里的句子不要动——改多了就背不住；</li>
<li>每三轮把高频替换词沉淀回上面的话题词块表，模板才算真变成自己的。</li>
</ol><hr /></section></section><section><h3>附录：起初那版（原样保留，只换变量名）<a href="#附录起初那版原样保留只换变量名"><span>#</span></a></h3><section><h4>变量名对照<a href="#变量名对照"><span>#</span></a></h4>

<table><thead><tr><th>旧写法</th><th>新写法</th><th>差别</th></tr></thead><tbody><tr><td><code>[称呼]</code></td><td><code>[称呼]</code></td><td>不变</td></tr><tr><td><code>[承接任务]</code> / <code>[动作核心]</code></td><td><code>[点题]</code></td><td>旧版填动词短语，新版填<strong>一句结论</strong>，信息量更大</td></tr><tr><td><code>【肉块 1】</code> <code>【肉块 2】</code> <code>【肉块 3·可选】</code></td><td><code>[块 1]</code> <code>[块 2]</code></td><td>旧版三块，新版两块（第三块常被字数吃掉）</td></tr><tr><td><code>[要点 1]</code> / <code>[方面 1]</code></td><td><code>[块 1]</code></td><td>同上</td></tr><tr><td><code>[期待点]</code></td><td>不需要</td><td>新版结尾只要「一行回复」，不再二次邀约</td></tr></tbody></table></section><section><h4>旧版·回信<a href="#旧版回信"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear [称呼],</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>It was such a pleasant surprise to hear from you, and I truly appreciate your [kind words / thoughtful invitation / prompt email].</span></div></div><div><div><div>4</div></div><div><span>In response to what you mentioned, I would be more than delighted to [承接任务].</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>To give you a clearer picture, here is how I view the matter:</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>【块 1】On the one hand, priority should be given to [要点 1].</span></div></div><div><div><div>9</div></div><div><span>【块 2】Equally important is [要点 2], which will surely [带来某种良性结果].</span></div></div><div><div><div>10</div></div><div><span>【块 3·可选】As an added bonus, it would be wonderful to [要点 3].</span></div></div><div><div><div>11</div></div><div><span>I genuinely hope this clarifies things a bit.</span></div></div><div><div><div>12</div></div><div><span>Please let me know if you would like me to elaborate on any particular part.</span></div></div><div><div><div>13</div></div><div><span>Looking forward to our next interaction!</span></div></div><div><div><div>14</div></div><div>
</div></div><div><div><div>15</div></div><div><span>Warm regards,</span></div></div><div><div><div>16</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>旧版·发信<a href="#旧版发信"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear [称呼],</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>I hope this note finds you well.</span></div></div><div><div><div>4</div></div><div><span>With [关键事件] just around the corner, I am reaching out to [动作核心].</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>To ensure everything proceeds seamlessly, I have organized the essentials as follows:</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>【块 1】First, as far as [方面 1] is concerned, [具体展开 1~2 句].</span></div></div><div><div><div>9</div></div><div><span>【块 2】Meanwhile, I would be immensely grateful if you could shed some light on [方面 2].</span></div></div><div><div><div>10</div></div><div><span>【块 3·可选】As an added bonus, it would be wonderful to [要点 3].</span></div></div><div><div><div>11</div></div><div><span>Feel free to voice your thoughts if anything needs fine-tuning.</span></div></div><div><div><div>12</div></div><div><span>Thank you so much for your understanding, and I cannot wait to [期待点].</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>15</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>旧版·图表作文三段表（原表照录，仅加一列判词）<a href="#旧版图表作文三段表原表照录仅加一列判词"><span>#</span></a></h4>

<table><thead><tr><th>段</th><th>功能</th><th>原句</th><th>判</th></tr></thead><tbody><tr><td>一</td><td>概述</td><td>The provided chart vividly illustrates the striking changes regarding [图表主题] over the period from [年份 A] to [年份 B].</td><td>改——<code>vividly illustrates</code> 是图表八股第一号</td></tr><tr><td>一</td><td>数据 A</td><td>Specifically, the figure for [主导项] [experienced a phenomenal surge / accounted for the lion’s share], moving from [数据 1] to [数据 2].</td><td>留半句——<code>moving from…to…</code> 好用，<code>lion's share</code> 已泛滥</td></tr><tr><td>一</td><td>数据 B</td><td>[In sharp contrast / In parallel], the data for [次要项] [remained relatively stable / registered a downward trajectory].</td><td>留——对比词表可用</td></tr><tr><td>一</td><td>值得注意</td><td>What is particularly noteworthy is that [最核心交叉点], which highlights a profound transition.</td><td>改——<code>profound transition</code> 空洞，等于没说</td></tr><tr><td>二</td><td>联系主旨</td><td>Such statistical patterns, beyond doubt, can be deeply associated with the trend of [核心主旨].</td><td>删——纯过渡，浪费一句</td></tr><tr><td>二</td><td>引出原因</td><td>Then, what driving forces have propelled this prevailing phenomenon? Generally speaking, several interrelated factors account for it.</td><td>改——设问句占 20 词，只换来「有几个原因」</td></tr><tr><td>二</td><td>原因 1</td><td>To begin with, the robust economic growth along with [技术/政策红利] has laid a solid foundation for [现象], unlocking unprecedented possibilities.</td><td>留骨架——<code>laid a solid foundation for</code> 稳，<code>unprecedented</code> 删</td></tr><tr><td>二</td><td>原因 2</td><td>Furthermore, the general public nowadays places greater emphasis on [个人追求], which inevitably shifts their choices.</td><td>留——观念类原因的标准写法</td></tr><tr><td>三</td><td>建议 1</td><td>To foster a healthier and more sustainable environment, it is highly advisable for relevant authorities to formulate forward-looking guidelines.</td><td>改——任何题都能套，阅卷一眼看穿</td></tr><tr><td>三</td><td>建议 2</td><td>Meanwhile, individuals are expected to cultivate a rational mindset rather than following the trend blindly.</td><td>改——<code>rational mindset</code> 空</td></tr><tr><td>三</td><td>举例</td><td>For instance, striking a balance between [积极面 A] and [潜在风险 B] will undoubtedly steer this trend toward a promising future.</td><td>留句式——<code>steer … toward</code> 好用</td></tr></tbody></table></section><section><h4>两版对照：各让一步<a href="#两版对照各让一步"><span>#</span></a></h4>

<table><thead><tr><th>维度</th><th>旧版</th><th>新版</th></tr></thead><tbody><tr><td>句式来源</td><td>LinkedIn 商务邮件腔（<code>I am reaching out to</code>）</td><td>论文/散文腔（<code>rather than left to a passing remark</code>）</td></tr><tr><td>抗撞句</td><td>差，全网都能搜到原句</td><td>好，句子是我拼的，搜不到</td></tr><tr><td>信息密度</td><td>低：开头两句 45 词只说「我收到信了」</td><td>高：开头 20 词已点题</td></tr><tr><td>容错率</td><td><strong>高</strong>：内容写空也能保 9-10 分</td><td>低：块写砸就没有安全句兜底</td></tr><tr><td>背诵量</td><td>两套各一整篇</td><td>两套共用一套头尾</td></tr><tr><td>图表结构</td><td>三段十一句，稳但空</td><td>三段十一句，骨架其实借的就是它</td></tr></tbody></table><p>结论：</p><ul>
<li><strong>骨架用新版</strong>（结构没变，还是旧版那套三段十一句，只是把空话换成真话）；</li>
<li><strong>兜底留旧版两句</strong>：时间不够时，<code>I would be immensely grateful if you could shed some light on …</code> 和 <code>it is highly advisable for relevant authorities to formulate …</code> 直接抄上去，句子本身没错，只是不新鲜；</li>
<li>旧版的 <code>Warm regards,</code> 可以留给朋友信，比 <code>Yours sincerely,</code> 松一点。</li>
</ul><hr /></section></section><section><h3>第五部分 全真题套写（2010-2026，34 篇）<a href="#第五部分-全真题套写2010-202634-篇"><span>#</span></a></h3><p>全部用上面那 3 套骨架写成，<strong>没有一个句子是临场编的</strong>。年份后标的是用的外壳 / 首段类型。</p><section><h4>一、小作文（17 篇）<a href="#一小作文17-篇"><span>#</span></a></h4><section><h5>2010｜回信 · 感谢 + 邀请<a href="#2010回信--感谢--邀请"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Mr. Brown,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short reply with one purpose: to thank you for the fortnight you gave me.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>Looking back, your patience with my halting English made a real difference; without it I would have eaten alone every night. I still owe you one.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>So come and see China when your term allows: the night market near my campus would be your kind of thing. Bring your camera.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by June will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2011｜去信 · 祝贺 + 建议<a href="#2011去信--祝贺--建议"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Li Ming,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: to congratulate you on the admission letter and to offer two pieces of advice.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>Congratulations are in order, and they are well earned: two years at that desk finally paid off. What impresses me most is not the result but the persistence behind it.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>For a start, learn to live with a roommate before term begins — it costs you a week and saves you a year. Once that becomes a habit, budgeting will feel natural rather than forced.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line before September will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2012｜去信 · 投诉 + 要求<a href="#2012去信--投诉--要求"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Sir or Madam,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>I am writing to complain about the dictionary I bought from you last month.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>The problem showed up almost immediately: three keys stick, the screen flickers, and the battery dies within an hour of a full charge. The box itself arrived dented, which may explain the rest.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>I am not after an explanation so much as a fix — a replacement unit, preferably before the new term starts.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>I would rather settle this quietly than take it further. A workable solution by next Friday is all I ask.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2013｜去信 · 义卖细节 + 号召<a href="#2013去信--义卖细节--号召"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear classmates,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: to tell you what happens on Saturday and to ask for your help.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>The sale falls on Saturday, from nine to four, at the south gate of the library. What makes it worth a morning is that everything on those tables was donated, so the money goes only to the children.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>Two hours at the toy table is all we ask; bring a friend, since the crowd is the advertisement.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Thursday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2014｜去信 · 生活习惯 + 求建议<a href="#2014去信--生活习惯--求建议"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear John,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: to tell you how I live and to ask two questions about living there.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>I keep early hours and cook most nights; music after eleven is the one thing I cannot sleep through. Weekends I am out, so the bathroom is yours.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>Before I commit, I would like your read on two points: how quickly the landlord answers a broken boiler, and whether a bike is enough for the winter term.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line before August will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2015｜通知 · 夏令营 + 招募志愿者<a href="#2015通知--夏令营--招募志愿者"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Notice</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>Summer Camp for High School Students</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>The camp is scheduled for July 15 at the university sports centre, and the organizers are now recruiting volunteers.</span></div></div><div><div><div>6</div></div><div><span>It opens with a campus tour, and then moves on to two days of science workshops run by our own labs.</span></div></div><div><div><div>7</div></div><div><span>Volunteers will guide the tours, run the workshops and stay with the groups at night, and each will receive a certificate.</span></div></div><div><div><div>8</div></div><div><span>The camp runs from nine to five, and lunch is provided on site.</span></div></div><div><div><div>9</div></div><div><span>Those interested are welcome to sign up at Room 203 before July 1.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>The Students' Union</span></div></div><div><div><div>12</div></div><div><span>June 20</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2016｜回信 · 感谢 + 翻译建议<a href="#2016回信--感谢--翻译建议"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Jack,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short reply with one purpose: to thank you for your congratulations and to answer your question about translation.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>Looking back, that contest taught me more than any course; the only method that worked was translating one paragraph a day, out loud. I still owe that habit a debt.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>For a start, stop hunting for the perfect word — write the sentence first and polish it afterwards. Once that becomes a habit, your drafts will read like English rather than translated Chinese.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by June will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2017｜回信 · 接受邀请 + 讲座要点<a href="#2017回信--接受邀请--讲座要点"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Professor Williams,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>I am writing to accept your invitation, and to set out the three points I would cover.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>I would be glad to speak, and I would keep to three points: how festivals survive in cities, why food travels better than language, and what foreign students usually misread about both.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>Before I commit, I would like your read on one thing: how long the audience can sit still, so I can cut the slides to fit the hour.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Friday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2018｜去信 · 道歉取消 + 另约<a href="#2018去信--道歉取消--另约"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Professor Smith,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>I am writing to postpone my visit, and to explain why before you plan around it.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>The plan has to be called off on my side, and the fault is entirely mine: my visa interview was moved to exactly that week, and missing it would cost me the term.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>To make up for it, I have booked a slot in the first week of December, and I will send the material ahead so that the meeting is not wasted.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Friday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2019｜去信 · 建议辩题 + 安排<a href="#2019去信--建议辩题--安排"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Professor Smith,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>I am writing to propose a topic for the debate, and to say how I would run it.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>My suggestion is "Should city centres be closed to private cars?", a question that splits a room faster than any other and one every student has a stake in.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>The arrangements are simple: two teams of three, eight minutes a side, then twenty minutes of questions from the floor. I will circulate the reading list a week ahead.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Friday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2020｜去信 · 介绍古迹 + 游览提示<a href="#2020去信--介绍古迹--游览提示"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear friends,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: to tell you about Saturday's walk and to give you two tips.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>The site is best described as a Ming-era street that never quite became a museum — nothing fancy, but it still smells of woodsmoke in the morning.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>Two tips before you come: wear shoes you can walk in for three hours, and bring cash, because the noodle stall at the corner takes nothing else.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Thursday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2021｜去信 · 邀请参会 + 细节<a href="#2021去信--邀请参会--细节"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Jack,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: I would like to invite you to our online meeting this Thursday.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>The meeting runs from eight to nine on Tencent Meeting, room 815-220-337. Three students will report for ten minutes each, leaving the last half hour for questions.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>I am asking you in particular because half the room has never spoken to a student outside China, and one honest question from you would do more than my slides.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Wednesday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2022｜去信 · 美食节介绍 + 邀请<a href="#2022去信--美食节介绍--邀请"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear international students,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: to tell you about the food festival and to invite you.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>The festival falls on Friday, from five till nine, with twenty stalls from eleven provinces. What makes it worth a detour is that every dish is cooked on the spot, not delivered in boxes.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>I am asking you in particular because your table would be the only one with a story from outside China — bring one dish; we will find you a stove.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Wednesday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2023｜回信 · 二选一 + 理由<a href="#2023回信--二选一--理由"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear David,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short reply with one purpose: to tell you which exhibition to choose.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>Take the robot show. The art exhibition will still be there next month, while half the machines on display are prototypes that may never be shown again.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>My recommendation is simple: go early, and start with the arm that plays chess — that is where it shows its best side. If you have an hour left, the speech booth is the second stop.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Saturday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2024｜去信 · 调查计划 + 询问意见<a href="#2024去信--调查计划--询问意见"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Jack,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: to put forward my plan for the survey and to ask for your opinion.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>My plan is three days, three streets: we photograph the facades in the morning, interview whoever will talk in the afternoon, and leave a one-page questionnaire at the teahouses.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>Before I commit, I would like your read on two points: how many houses we can realistically cover in a day, and whether to ask residents about relocation at all.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line before the weekend will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2025｜去信 · 短剧介绍 + 邀请<a href="#2025去信--短剧介绍--邀请"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear John,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short email with one purpose: to invite you to join our short play.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>The play takes one chapter of a classic novel — the part where a clever servant outwits a magistrate — and turns it into forty minutes of comedy on a bare stage.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>I am asking you in particular because the servant needs an accent that is not mine, and yours would make the joke land. Rehearsals are Sunday afternoons.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line by Friday will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2026｜回信 · 视频感受 + 想了解更多<a href="#2026回信--视频感受--想了解更多"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Dear Jack,</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>This is a short reply with one purpose: to tell you what I thought of your video and to ask two questions.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>Watching your mother argue with a ticket machine, and then win, was the best three minutes of my week; it made me homesick for a country I am already in.</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>Before I plan anything similar, I would like your read on two points: which city that night market was in, and how you persuaded your father to try the skewers.</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>If any part of it does not suit you, say so and we will adjust it. Either way, a line when you are free will do.</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>Yours sincerely,</span></div></div><div><div><div>12</div></div><div><span>Li Ming</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section><section><h4>二、大作文（17 篇）<a href="#二大作文17-篇"><span>#</span></a></h4><section><h5>2010｜动态 · 手机订阅<a href="#2010动态--手机订阅"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: mobile subscriptions in two worlds, measured across eight years.</span></div></div><div><div><div>2</div></div><div><span>Between 2000 and 2008, subscriptions in developing countries climbed from 0.4 to 4 billion, while developed ones moved only from 0.7 to 1.</span></div></div><div><div><div>3</div></div><div><span>Put the two ends together and the gap is tenfold — hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, a phone stopped being a luxury exactly where people had waited longest.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a shift like this, and neither is mysterious. The first is structural: cheap handsets and shared towers drove the cost down, so an office tool became a household object. The second is personal: for many families a number was the first address they ever had.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The rich half has found its ceiling; the other half has not. The trend will not reverse on its own; the sensible response is to keep spectrum open to newcomers. For individuals, the point is simpler: a phone is only as useful as the market that resells it.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2011｜分组对比 · 汽车品牌份额<a href="#2011分组对比--汽车品牌份额"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Two numbers in the chart tell the whole story, and they pull in opposite directions.</span></div></div><div><div><div>2</div></div><div><span>In 2008 Japanese brands led at 35% and domestic ones trailed at 25%; a year later the order reversed, 25% against 32%.</span></div></div><div><div><div>3</div></div><div><span>One year, seven points, and a decade-old hierarchy was gone — hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the badge on the bonnet stopped deciding the sale.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a shift like this, and neither is mysterious. The first is structural: domestic makers moved their quality up while keeping prices below imported rivals. The second is personal: a car is increasingly bought as transport rather than as proof of taste, and buyers now read resale value before they read the logo.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The gap will keep narrowing until quality, not nationality, is what separates the three. The trend will not reverse on its own; the sensible response is to compete on safety tests rather than on slogans. For individuals, the point is simpler: compare the service bill, not the advertisement.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2012｜表格 · 员工满意度<a href="#2012表格--员工满意度"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: how three age groups rate the same company, measured in one survey.</span></div></div><div><div><div>2</div></div><div><span>The middle group is the puzzle: not one of them ticked "satisfied", while 64% ticked the opposite.</span></div></div><div><div><div>3</div></div><div><span>Zero against forty — the youngest and the oldest are happier than the people in between, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, contentment dips exactly where ambition peaks.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: the promotion ladder narrows between forty and fifty, so effort stops producing reward. The second is personal: this is when mortgages and school fees arrive together, and a flat salary feels like a verdict.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The middle of a career is where loyalty is cheapest to lose. The trend will not reverse on its own; the sensible response is to rotate roles and talk about paths before people look outside. For individuals, the point is simpler: ask for a review rather than a raise.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2013｜单柱趋势 · 学生兼职<a href="#2013单柱趋势--学生兼职"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: how many students in each year take part-time work, measured across four grades.</span></div></div><div><div><div>2</div></div><div><span>Between the first year and the fourth, the share climbed from 67.8% to 88.2%, with most of that gain in the final year.</span></div></div><div><div><div>3</div></div><div><span>Twenty points, most of it coming late, is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the closer graduation gets, the more the timetable bends.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a shift like this, and neither is mysterious. The first is structural: internships became the entry ticket to most industries, so experience stopped being optional and became a cost of applying. The second is personal: students price a line on the CV above an afternoon of rest.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The final-year jump suggests panic as much as planning. The trend will not reverse on its own; the sensible response is to cap weekly hours and treat marks as part of the same investment. For individuals, the point is simpler: choose the job that teaches a skill, not the one that pays the most.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2014｜单柱趋势 · 城乡人口<a href="#2014单柱趋势--城乡人口"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: where people in this country live, measured across two decades.</span></div></div><div><div><div>2</div></div><div><span>Between 1990 and 2010, the urban population climbed from 300 million to 666 million, while the rural figure fell from 834 to 674.</span></div></div><div><div><div>3</div></div><div><span>The two lines met almost exactly in 2010, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, a country that farmed for a thousand years finished moving to town in twenty.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a shift like this, and neither is mysterious. The first is structural: factories and service jobs clustered where the roads already met. The second is personal: schools and hospitals decide where a family sleeps, and the countryside was short of both.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The flow is slowing, but it has not stopped. The trend will not reverse on its own; the sensible response is to fund schools where the newcomers live, and to make farming pay at the other end. For individuals, the point is simpler: count the rent before counting the wage.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2015｜饼图 · 春节花销<a href="#2015饼图--春节花销"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: how one city spends during the Spring Festival, measured in four categories.</span></div></div><div><div><div>2</div></div><div><span>Gifts alone account for 40%, with transport, dinners and everything else splitting the remaining sixty evenly.</span></div></div><div><div><div>3</div></div><div><span>Four yuan in every ten go on presents, while the other three categories split the rest almost evenly, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the festival is bought before it is enjoyed.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: a gift has a market price, while a conversation does not, so the visible part of affection is the part that gets budgeted. The second is personal: most people spend to avoid being talked about, not to be talked about.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The forty percent will not fall on its own. The trend will not reverse on its own; the sensible response is to make time the gift that everyone can afford. For individuals, the point is simpler: one fewer box, one more evening.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2016｜饼图 · 旅游目的<a href="#2016饼图--旅游目的"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: why students travel, measured across five answers.</span></div></div><div><div><div>2</div></div><div><span>Scenery takes 37% and relief from pressure 33%, while independence trails at 6%.</span></div></div><div><div><div>3</div></div><div><span>Two motives account for seventy percent of the trips, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, students are not running towards a place so much as away from a timetable.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: cheap tickets and two-day gaps in the term made the weekend trip a normal purchase rather than a rare adventure. The second is personal: an exam schedule leaves little room for anything that cannot be photographed and posted.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The appetite for escape is unlikely to fade. The trend will not reverse on its own; the sensible response is to keep student discounts and hostel beds within reach. For individuals, the point is simpler: stay one day longer instead of seeing one more city.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2017｜折线 · 博物馆<a href="#2017折线--博物馆"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: the country's museums and the people walking through them, measured from 2013 to 2015.</span></div></div><div><div><div>2</div></div><div><span>Visitors rose from 6,378 to 7,811 ten-million-person-times, while the number of museums grew more modestly, from 4,165 to 4,697.</span></div></div><div><div><div>3</div></div><div><span>Attendance grew almost twice as fast as the buildings did, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the queues got longer while the walls stayed the same.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a shift like this, and neither is mysterious. The first is structural: free admission turned a Sunday outing into a habit, and new galleries gave that habit somewhere to go. The second is personal: a museum is cheap, indoor and photogenic, which is exactly what a family with two children and one afternoon needs.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The pressure will move from building halls to managing crowds. The trend will not reverse on its own; the sensible response is to spread demand with timed entry and evening openings. For individuals, the point is simpler: go on a Tuesday, not a holiday.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2018｜饼图 · 选餐厅<a href="#2018饼图--选餐厅"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: what diners look for when they choose a restaurant, measured across five factors.</span></div></div><div><div><div>2</div></div><div><span>Speciality takes 36.3%, service 26.8% and atmosphere 23.8%, while price trails at 8.4%.</span></div></div><div><div><div>3</div></div><div><span>Three non-price factors account for 86.9%, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, people no longer go out to eat; they go out to be served.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: delivery apps quietly took over the cheap, quick meal, leaving restaurants to compete on everything else. The second is personal: a dinner is now judged by what can be photographed and remembered, and a discount photographs badly.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? Price will keep sliding down this list. The trend will not reverse on its own; the sensible response is to let kitchens publish what they actually do well. For individuals, the point is simpler: pay for the dish, not for the lighting.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2019｜分组对比 · 毕业去向<a href="#2019分组对比--毕业去向"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Two numbers in the chart tell the whole story, and they pull in opposite directions.</span></div></div><div><div><div>2</div></div><div><span>Between 2013 and 2018, employment fell from 68.1% to 60.7%, while further study rose from 26.3% to 34.0%.</span></div></div><div><div><div>3</div></div><div><span>In five years, 7.4 points left the job market and 7.7 entered a classroom — hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the queue for a degree got longer because the queue for a job got slower.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a shift like this, and neither is mysterious. The first is structural: a bachelor's degree no longer clears the first filter, so students buy a second. The second is personal: staying on feels like progress and postpones a decision nobody feels ready to make.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? A master's will soon be the entry ticket, not the advantage. The sensible response is neither to cheer nor to panic, but to stop screening by diploma and start testing by task. For individuals, the point is simpler: know what the extra year buys before paying for it.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2020｜饼图 · 手机阅读<a href="#2020饼图--手机阅读"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: why students open a book on a phone, measured across four answers.</span></div></div><div><div><div>2</div></div><div><span>Learning takes 59.5% and passing time 21.3%, while gathering information accounts for 17.0%.</span></div></div><div><div><div>3</div></div><div><span>Almost three in five read to learn something, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the pocket has become the library.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: cheap data turned every dead ten minutes into reading time, and a phone is the only book people always carry. The second is personal: reading in fragments feels productive in a way that scrolling does not, and students are quietly grading themselves.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? Attention is now the scarce resource, not access. The sensible response is neither to cheer nor to panic, but to put serious material where the reading already happens. For individuals, the point is simpler: finish one long piece a week, not twenty short ones a day.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2021｜静态占比 · 锻炼方式<a href="#2021静态占比--锻炼方式"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: how one city exercises, measured across four arrangements.</span></div></div><div><div><div>2</div></div><div><span>Exercising alone leads at 54.3%, with friends at 47.7%, family at 23.9% and group classes at 15.8%.</span></div></div><div><div><div>3</div></div><div><span>Solo exercise outnumbers every shared arrangement, and the gap to a class reaches forty points.</span></div></div><div><div><div>4</div></div><div><span>In plain words, fitness has become a private appointment.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: gym memberships and running apps made a workout something you can start at eleven at night. The second is personal: a shared class needs a shared calendar, and adult calendars rarely agree.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The preference for solo training will hold as long as schedules stay crowded. The trend will not reverse on its own; the sensible response is to keep parks lit and tracks free, since the cheapest gym is public space. For individuals, the point follows from the diagnosis: if calendars keep people apart, put the partner into the calendar — one fixed hour is enough.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2022｜单柱趋势 · 快递业务量<a href="#2022单柱趋势--快递业务量"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: parcels moved across the country, measured from 2018 to 2020.</span></div></div><div><div><div>2</div></div><div><span>Total volume climbed from 51 to 83 billion, while the rural share jumped from 12 to 30 in the same period.</span></div></div><div><div><div>3</div></div><div><span>Rural deliveries more than doubled in a single year, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the last mile finally reached the village.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a shift like this, and neither is mysterious. The first is structural: pickup stations and shared truck routes cut the cost of a village parcel to almost nothing. The second is personal: once a farmer can sell directly, a phone becomes a shopfront rather than a toy.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The growth will slow, but the map will keep filling in. The trend will not reverse on its own; the sensible response is to build recycling into the packaging before the rubbish does. For individuals, the point is simpler: combine orders, and keep the boxes for the next move.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2023｜折线 · 健康素养<a href="#2023折线--健康素养"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: health literacy across the country, measured over ten years.</span></div></div><div><div><div>2</div></div><div><span>Between 2012 and 2021 the level rose from 8.8% to 25.4%, and the slope steepens visibly after 2019.</span></div></div><div><div><div>3</div></div><div><span>Sixteen points in a decade, with more than half gained in the last three years, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, people learned to read their own bodies.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a shift like this, and neither is mysterious. The first is structural: public campaigns put basic knowledge on billboards, in lifts and on the evening news. The second is personal: a family that has nursed someone through an illness reads differently afterwards.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The curve will flatten once the easy gains are gone. The trend will not reverse on its own; the sensible response is to aim the next campaign at the villages and the oldest readers. For individuals, the point is simpler: check who wrote the advice before forwarding it.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2024｜静态占比 · 劳动课收获<a href="#2024静态占比--劳动课收获"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: what students say they gained from a labour course, measured across four outcomes.</span></div></div><div><div><div>2</div></div><div><span>Knowledge leads at 91.3% and hands-on skill follows at 84.8%, while teamwork sits at 32.6%.</span></div></div><div><div><div>3</div></div><div><span>Fifty-nine points separate the top and the bottom, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the course teaches the hands and forgets the room.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: a class of forty, marked individually, will always reward work that can be done alone. The second is personal: students treat a credit as a checklist, and cooperation cannot be ticked off quickly.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? A skill nobody practises is a skill nobody keeps. The trend will not reverse on its own; the sensible response is to make one project impossible to finish without a partner. For individuals, the point is simpler: choose the task that needs a second pair of hands.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2025｜静态占比 · 老年人休闲<a href="#2025静态占比--老年人休闲"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: how older people in one community fill their day, measured across five activities.</span></div></div><div><div><div>2</div></div><div><span>Watching television leads at 90.8%, with walking at 68.3% and chess at only 18.4%.</span></div></div><div><div><div>3</div></div><div><span>Seventy-two points separate the first and the last, which is hard to dismiss as noise.</span></div></div><div><div><div>4</div></div><div><span>In plain words, the easier an activity is, the more welcome it is.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: a screen demands nothing but a socket, while a chess partner demands a phone call and a walk. The second is personal: after seventy, novelty costs more energy than it returns, and a familiar programme feels safer than an unfamiliar table.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The preference for low-effort leisure will not fade on its own. The trend will not reverse on its own; the sensible response is to put the alternatives within a hundred metres: shaded paths, benches, a table under the tree. For individuals, the point is simpler: walk with them instead of urging them to.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h5>2026｜静态占比 · 儿童户外活动看法<a href="#2026静态占比--儿童户外活动看法"><span>#</span></a></h5><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>The chart turns something we usually only sense into numbers: what people believe outdoor play does for children, measured across four answers.</span></div></div><div><div><div>2</div></div><div><span>Curiosity takes 54.6% and observation 54.5%, while fitness trails at 37.2% and family time at 33.2%.</span></div></div><div><div><div>3</div></div><div><span>The top two are a tenth of a point apart; the bottom two lag twenty points behind.</span></div></div><div><div><div>4</div></div><div><span>In plain words, adults praise what outdoor play does for the mind, and forget what it does for the legs.</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>Two forces usually sit behind a pattern like this, and neither is mysterious. The first is structural: a playground safe enough for a parent is often too far to walk to. The second is personal: a belief costs nothing and requires no shoes.</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>Where does that leave us? The chart records opinions, not results, and the gap between them is where policy belongs. The trend will not reverse on its own; the sensible response is to build the safe route before advertising the benefits. For individuals, the point is simpler: go outside with the child; the belief follows the habit.</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section><section><h4>三、套写索引<a href="#三套写索引"><span>#</span></a></h4>

<table><thead><tr><th>年份</th><th>小作文外壳</th><th>用到的块</th><th>大作文首段型</th></tr></thead><tbody><tr><td>2010</td><td>回信</td><td>7 + 3</td><td>动态·双线</td></tr><tr><td>2011</td><td>去信</td><td>8 + 4</td><td>分组对比</td></tr><tr><td>2012</td><td>去信</td><td>6（拆两段）</td><td>表格</td></tr><tr><td>2013</td><td>去信</td><td>1 + 3</td><td>单柱趋势</td></tr><tr><td>2014</td><td>去信</td><td>2 + 10</td><td>单柱趋势</td></tr><tr><td>2015</td><td>通知</td><td>—</td><td>饼图</td></tr><tr><td>2016</td><td>回信</td><td>7 + 4</td><td>饼图</td></tr><tr><td>2017</td><td>回信</td><td>3 + 10</td><td>折线</td></tr><tr><td>2018</td><td>去信</td><td>5 + 10</td><td>饼图</td></tr><tr><td>2019</td><td>去信</td><td>11 + 自写安排</td><td>分组对比</td></tr><tr><td>2020</td><td>去信</td><td>2 + 4</td><td>单柱趋势</td></tr><tr><td>2021</td><td>去信</td><td>1 + 3</td><td>静态占比</td></tr><tr><td>2022</td><td>去信</td><td>1 + 3</td><td>单柱趋势</td></tr><tr><td>2023</td><td>回信</td><td>11 + 2</td><td>静态占比</td></tr><tr><td>2024</td><td>去信</td><td>3 + 10</td><td>静态占比</td></tr><tr><td>2025</td><td>去信</td><td>1 + 3</td><td>静态占比</td></tr><tr><td>2026</td><td>回信</td><td>2 + 10</td><td>静态占比</td></tr></tbody></table><blockquote><p>17 篇小作文只动用了 11 个块里的 10 个——<strong>块 9（申请 / 自荐）一次都没考过</strong>，可以不背。真正高频的是块 1、2、3、10，四个就够应付一半年份。</p></blockquote><hr /></section></section><section><h3>附录二：评分标准（大纲口径）与模板校准<a href="#附录二评分标准大纲口径与模板校准"><span>#</span></a></h3><section><h4>一、评分是怎么进行的<a href="#一评分是怎么进行的"><span>#</span></a></h4><ol>
<li><strong>先定档，再在档内给分</strong>——不是逐句扣分。所以”某句写得漂亮”救不了整篇，反过来一句废话也未必致命，关键在整体落在哪一档。</li>
<li>**A 节（小作文，10 分）**评分重点：信息点覆盖、内容组织、语言准确、<strong>格式与语域</strong>。</li>
<li>**B 节（大作文，15 分）**评分重点：内容完整、组织连贯、<strong>语法结构与词汇多样</strong>、语言准确。</li>
<li><strong>可以用题干里的词，但不能照抄题干句子</strong>——大纲原文：「允许在作文中使用提示语中出现过的个别关键词或词组，但使用提示语中出现的句子将被扣分。」</li>
<li><strong>长度不符「酌情扣分」</strong>；拼写标点按对交际的影响程度考虑；英美拼写均可；<strong>书写差到影响阅读，降一个档次</strong>。</li>
</ol></section><section><h4>二、小作文（A 节，10 分，一档 2 分）<a href="#二小作文a-节10-分一档-2-分"><span>#</span></a></h4>

<table><thead><tr><th>档</th><th>分数</th><th>判据（摘要）</th></tr></thead><tbody><tr><td>第五档</td><td>9-10</td><td>全部要点；<strong>丰富的语法结构和词汇</strong>；自然流畅、几乎无错；<strong>多种衔接</strong>；格式语域贴切；完全达到预期效果</td></tr><tr><td>第四档</td><td>7-8</td><td>全部要点，允许漏 1-2 个次重点；较丰富；基本准确，只有尝试复杂结构或高级词时出错；衔接恰当、层次清晰</td></tr><tr><td>第三档</td><td>5-6</td><td>漏一些但含多数要点；结构词汇够用；有错但不影响理解；简单衔接；格式基本合理</td></tr><tr><td>第二档</td><td>3-4</td><td>漏要点或写无关内容；结构单调、词汇有限；错误多影响理解；衔接不当</td></tr><tr><td>第一档</td><td>1-2</td><td>明显遗漏主要内容；大量错误妨碍理解；无格式与语域概念</td></tr></tbody></table></section><section><h4>三、大作文（B 节，15 分，一档 3 分）<a href="#三大作文b-节15-分一档-3-分"><span>#</span></a></h4>

<table><thead><tr><th>档</th><th>分数</th><th>判据（摘要）</th></tr></thead><tbody><tr><td>第五档</td><td>13-15</td><td>内容完整、要点阐述充分；语法词汇丰富；流畅、几乎无错；多种衔接、层次清晰；语域恰当</td></tr><tr><td>第四档</td><td>10-12</td><td>要点齐全，少数要点阐述不充分；较丰富；基本准确；衔接得当</td></tr><tr><td>第三档</td><td>7-9</td><td>多数要点；结构词汇够用；有错不影响理解；简单衔接</td></tr><tr><td>第二档</td><td>4-6</td><td>漏要点或含无关内容；结构单调；错误较多</td></tr><tr><td>第一档</td><td>1-3</td><td>明显遗漏；妨碍理解</td></tr></tbody></table></section><section><h4>四、字数与卷面<a href="#四字数与卷面"><span>#</span></a></h4><ul>
<li>小作文 <strong>100 词左右</strong>、大作文 <strong>150 词左右</strong>，长度不符会酌情扣分。经验值：小作文低于 90、大作文低于 130 开始明显吃亏（各机构按每少 10 词扣 1 分上下的比例估，属经验，非大纲原文）。</li>
<li>大作文<strong>不写标题</strong>，不写地址；小作文署名固定 <code>Li Ming</code>。</li>
<li>大作文必须分段（三段最稳），段间空一行；小作文不分段也可以，但分段更清楚。</li>
<li>别涂改、别用花体——书写影响阅读会降一档，这是十年来唯一一条”硬扣”。</li>
</ul></section><section><h4>五、标准 → 模板动作（这张表才是重点）<a href="#五标准--模板动作这张表才是重点"><span>#</span></a></h4>

<table><thead><tr><th>大纲条目</th><th>模板里的位置</th><th>落地动作</th></tr></thead><tbody><tr><td>信息点覆盖</td><td>小作文 块 1 + 块 2</td><td>题干几个点就几个块，一块不漏</td></tr><tr><td>格式与语域</td><td>称呼 / 落款 / 通知外壳</td><td>朋友 <code>Dear John</code>，不知姓名 <code>Dear Sir or Madam</code>，通知不写称呼</td></tr><tr><td>丰富的语法结构</td><td>小作文三条结构位；大作文 S3 S6 S8 S11</td><td>小作文一条、两条封顶；大作文骨架已含四类，不用再堆</td></tr><tr><td>多种衔接手法</td><td>大作文 S5 / S9 / S11</td><td>每段一个显性衔接，全篇三处封顶</td></tr><tr><td>内容完整（B 节）</td><td>首段 4 句 + 中段 2 因 + 尾段 3 句</td><td>描述 / 解读 / 评论三样齐</td></tr><tr><td>语言准确</td><td>11 组块库 + 5 类话题词块</td><td>现场只换名词和数字，不造新句式</td></tr><tr><td>不抄题干句子</td><td>块库全部改写</td><td>题干的动词短语一律换说法（<code>take part in</code> → <code>be on stage</code>）</td></tr><tr><td>长度</td><td>小 95-115 / 大 150-180</td><td>写完全文数字数；低于下限补一个<strong>细节句</strong>，不要靠形容词凑</td></tr><tr><td>书写</td><td>考场</td><td>不用花体，只划一处改错</td></tr></tbody></table></section><section><h4>六、拿这套模板去对照：现在几档<a href="#六拿这套模板去对照现在几档"><span>#</span></a></h4><ul>
<li><strong>小作文</strong>：信息点、格式、语域都在第五档线上，卡住的是”结构单一”。所以判 <strong>8 分稳，补一条结构位争 9 分</strong>。</li>
<li><strong>大作文</strong>：三段齐全、衔接显性、四类结构 ✓，判 <strong>12-13 是常态</strong>。上 14 卡在第二段的原因够不够具体——这一项模板给不了，只能靠平时积累（所以有第五部分那 17 篇打底）。</li>
<li>这套模板的天花板不是语言，是<strong>内容的具体程度</strong>。19 分的作文（小 9 + 大 14）里，模板贡献大约 24 分中的 20 分，剩下 4 分靠素材。</li>
</ul></section></section></section>
<section><h2>单词<a href="#单词"><span>#</span></a></h2><ul>
<li>come to terms with sth：接受（令人不快的事实）</li>
<li>evaporate：蒸发，逐渐消失</li>
<li>in terms of sth：就…而言</li>
<li>identical：完全相同的</li>
<li>extraneous：无关的</li>
<li>ornament：装饰品</li>
<li>census：人口普查</li>
<li>exacerbate：使恶化</li>
<li>ethically：道德上的</li>
<li>conversation：交谈，谈话</li>
<li>pondar：沉思</li>
</ul></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/novel/share/</id>
      <title type="text">书源分享</title>
      <published>2026-10-28T00:00:00.000Z</published>
      <updated>2026-10-28T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/novel/share/"/>
      <summary type="text">自用书源分享，包含番茄小说，起点小说以及轻小说，持续更新中</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>包含起点、番茄以及轻小说。</p><p>对于番茄小说，建议搜作者名，其多名特性导致最终名可能非 Web 存储名。</p><p>炸了尽量就更新。</p></section>
<section><h2>分享<a href="#分享"><span>#</span></a></h2><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>3</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"番茄小说"</span><span>,</span></div></div><div><div><div>4</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>5</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"https://novel.cooks.tw"</span><span>,</span></div></div><div><div><div>6</div></div><div><span>    </span><span>"bookUrlPattern"</span><span>: </span><span>"https?:</span><span>\\</span><span>/</span><span>\\</span><span>/novel</span><span>\\</span><span>.cooks</span><span>\\</span><span>.tw</span><span>\\</span><span>/api</span><span>\\</span><span>/novel</span><span>\\</span><span>/detail</span><span>\\</span><span>/</span><span>\\</span><span>d+.*"</span><span>,</span></div></div><div><div><div>7</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>1</span><span>,</span></div></div><div><div><div>8</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>9</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>10</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>11</div></div><div><span>    </span><span>"header"</span><span>: </span><span>"{</span><span>\"</span><span>User-Agent</span><span>\"</span><span>:</span><span>\"</span><span>Mozilla/5.0 (Android 11; Mobile; rv:147.0) Gecko/147.0 Firefox/147.0</span><span>\"</span><span>,</span><span>\"</span><span>Accept-Language</span><span>\"</span><span>:</span><span>\"</span><span>zh-CN,zh-TW;q=0.9,zh;q=0.8,en;q=0.6</span><span>\"</span><span>,</span><span>\"</span><span>Referer</span><span>\"</span><span>:</span><span>\"</span><span>https://novel.cooks.tw/</span><span>\"</span><span>}"</span><span>,</span></div></div><div><div><div>12</div></div><div><span>    </span><span>"jsLib"</span><span>: </span><span>"function Base(){return 'https://novel.cooks.tw';}function J(s){try{return JSON.parse(String(s||'{}'));}catch(e){return {};}}function T(v){if(v===null||v===undefined)return '';return String(v).replace(/&lt;br</span><span>\\</span><span>s*</span><span>\\</span><span>/?&gt;/gi,'</span><span>\\</span><span>n').replace(/&lt;p[^&gt;]*&gt;/gi,'</span><span>\\</span><span>n').replace(/&lt;</span><span>\\</span><span>/p&gt;/gi,'</span><span>\\</span><span>n').replace(/&lt;[^&gt;]+&gt;/g,'').replace(/&amp;nbsp;/g,' ').replace(/&amp;amp;/g,'&amp;').replace(/&amp;lt;/g,'&lt;').replace(/&amp;gt;/g,'&gt;').replace(/&amp;#39;/g,</span><span>\"</span><span>'</span><span>\"</span><span>).replace(/&amp;quot;/g,'</span><span>\"</span><span>').trim();}function Cover(id){id=String(id||'').replace(/</span><span>\\</span><span>D/g,'');if(!id)return '';return 'https://pic.cooks.tw/'+Math.floor(parseInt(id)/1000)+'/'+id+'/'+id+'s.jpg';}function Clean(c){return String(c||'').replace(/&lt;br</span><span>\\</span><span>s*</span><span>\\</span><span>/?&gt;/gi,'</span><span>\\</span><span>n').replace(/&lt;p[^&gt;]*&gt;/gi,'</span><span>\\</span><span>n').replace(/&lt;</span><span>\\</span><span>/p&gt;/gi,'</span><span>\\</span><span>n').replace(/&lt;[^&gt;]+&gt;/g,'').replace(/&amp;nbsp;/g,' ').replace(/&amp;amp;/g,'&amp;').replace(/&amp;lt;/g,'&lt;').replace(/&amp;gt;/g,'&gt;').replace(/&amp;#39;/g,</span><span>\"</span><span>'</span><span>\"</span><span>).replace(/&amp;quot;/g,'</span><span>\"</span><span>').replace(/</span><span>\\</span><span>r/g,'').replace(/[ </span><span>\\</span><span>t]+</span><span>\\</span><span>n/g,'</span><span>\\</span><span>n').replace(/</span><span>\\</span><span>n{3,}/g,'</span><span>\\</span><span>n</span><span>\\</span><span>n').trim();}"</span><span>,</span></div></div><div><div><div>13</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1793093336741</span><span>,</span></div></div><div><div><div>14</div></div><div><span>    </span><span>"respondTime"</span><span>: </span><span>180000</span><span>,</span></div></div><div><div><div>15</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>16</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.data.author"</span><span>,</span></div></div><div><div><div>17</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.data.articleid</span><span>\n</span><span>&lt;js&gt;Cover(result)&lt;/js&gt;"</span><span>,</span></div></div><div><div><div>18</div></div><div><span>      </span><span>"init"</span><span>: </span><span>"&lt;js&gt;var j=J(result);var d=j.data||j;var id=d.articleid||'';if(!id){var m=String(baseUrl||'').match(/detail</span><span>\\</span><span>/(</span><span>\\</span><span>d+)/);if(m)id=m[1];}try{cache.putMemory('articleid',String(id));}catch(e){}result;&lt;/js&gt;"</span><span>,</span></div></div><div><div><div>19</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.data.intro"</span><span>,</span></div></div><div><div><div>20</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"$.data.lastchapter"</span><span>,</span></div></div><div><div><div>21</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.data.articlename"</span><span>,</span></div></div><div><div><div>22</div></div><div><span>      </span><span>"tocUrl"</span><span>: </span><span>"&lt;js&gt;var j=J(result);var d=j.data||j;var id=d.articleid||'';if(!id){var m=String(baseUrl||'').match(/detail</span><span>\\</span><span>/(</span><span>\\</span><span>d+)/);if(m)id=m[1];}try{cache.putMemory('articleid',String(id));}catch(e){}Base()+'/api/chapter/list/'+id+'?lang=zh-CN'&lt;/js&gt;"</span><span>,</span></div></div><div><div><div>23</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>"$.data.chapters"</span></div></div><div><div><div>24</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>25</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>26</div></div><div><span>      </span><span>"content"</span><span>: </span><span>"$.data.content</span><span>\n</span><span>&lt;js&gt;Clean(result)&lt;/js&gt;"</span></div></div><div><div><div>27</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>28</div></div><div><span>    </span><span>"ruleExplore"</span><span>: [],</span></div></div><div><div><div>29</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>30</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.author"</span><span>,</span></div></div><div><div><div>31</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"$.data.items[*]"</span><span>,</span></div></div><div><div><div>32</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"https://novel.cooks.tw/api/novel/detail/{{$.articleid}}?lang=zh-CN"</span><span>,</span></div></div><div><div><div>33</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.articleid</span><span>\n</span><span>&lt;js&gt;Cover(result)&lt;/js&gt;"</span><span>,</span></div></div><div><div><div>34</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.intro"</span><span>,</span></div></div><div><div><div>35</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"$.chapters"</span><span>,</span></div></div><div><div><div>36</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.articlename"</span></div></div><div><div><div>37</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>38</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>39</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"$.data[*]||$.data.items[*]||$.data.list[*]||$.data.chapterlist[*]||$.data.chapterList[*]||$.data.chapters[*]"</span><span>,</span></div></div><div><div><div>40</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"$.chaptername||$.chapter_name||$.chapterName||$.title||$.name"</span><span>,</span></div></div><div><div><div>41</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"$.chapterid</span><span>\n</span><span>&lt;js&gt;var aid='';try{aid=cache.getFromMemory('articleid')||'';}catch(e){}if(!aid){var m=String(baseUrl||'').match(/list</span><span>\\</span><span>/(</span><span>\\</span><span>d+)/);if(m)aid=m[1];}Base()+'/api/chapter/content/'+aid+'/'+result+'?lang=zh-CN'&lt;/js&gt;"</span></div></div><div><div><div>42</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>43</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"https://novel.cooks.tw/api/novel/search?q={{key}}&amp;page={{page}}&amp;limit=20&amp;lang=zh-CN,{</span><span>\"</span><span>headers</span><span>\"</span><span>:{</span><span>\"</span><span>User-Agent</span><span>\"</span><span>:</span><span>\"</span><span>Mozilla/5.0 (Android 11; Mobile; rv:147.0) Gecko/147.0 Firefox/147.0</span><span>\"</span><span>,</span><span>\"</span><span>Accept-Language</span><span>\"</span><span>:</span><span>\"</span><span>zh-CN,zh-TW;q=0.9,zh;q=0.8,en;q=0.6</span><span>\"</span><span>,</span><span>\"</span><span>Referer</span><span>\"</span><span>:</span><span>\"</span><span>https://novel.cooks.tw/</span><span>\"</span><span>}}"</span><span>,</span></div></div><div><div><div>44</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>45</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>46</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"番茄镜像 novel.cooks.tw｜无需登录、无付费、无广告，番茄全本首选。</span><span>\n</span><span>实测：《霍格沃茨：不对，你们咋都性转了》第78章 2256 字，《十日终焉》1496 章全本。</span><span>\n</span><span>只支持搜索。若提示 Just a moment，是 Cloudflare 临时限速，过几分钟恢复。"</span><span>,</span></div></div><div><div><div>47</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>48</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>49</div></div><div><span>    </span><span>"loginCheckJs"</span><span>: </span><span>null</span><span>,</span></div></div><div><div><div>50</div></div><div><span>    </span><span>"concurrentRate"</span><span>: </span><span>"1/1000"</span></div></div><div><div><div>51</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>52</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>53</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"番茄官网 fanqienovel.com｜搜索/发现完整，字体加密已内置映射表。</span><span>\n</span><span>※ 未登录第 10 章之后只返回片段。两种登录方式：</span><span>\n</span><span>   ① 书源管理 → 长按本源 → 登录 → 点「① 网页登录」→ 在打开的番茄首页右上角登录 → 完成后点确认；</span><span>\n</span><span>   ② 电脑浏览器登录 fanqienovel.com，F12 → Network → 任一请求 → Request Headers → 复制整串 Cookie，粘进「Cookie（粘贴整串，含分号）」框，点「保存上面的 Cookie」。</span><span>\n</span><span>※ 番茄搜索按词切分，长书名常搜不到，建议搜书名主体或作者名。"</span><span>,</span></div></div><div><div><div>54</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>55</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"番茄小说·官方"</span><span>,</span></div></div><div><div><div>56</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>57</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"https://fanqienovel.com"</span><span>,</span></div></div><div><div><div>58</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>2</span><span>,</span></div></div><div><div><div>59</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>60</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>61</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>62</div></div><div><span>    </span><span>"exploreUrl"</span><span>: </span><span>"@js:</span><span>\n</span><span>var C = {</span><span>\"</span><span>m</span><span>\"</span><span>:[[</span><span>\"</span><span>西方奇幻</span><span>\"</span><span>,1141],[</span><span>\"</span><span>东方仙侠</span><span>\"</span><span>,1140],[</span><span>\"</span><span>科幻末世</span><span>\"</span><span>,8],[</span><span>\"</span><span>男频衍生</span><span>\"</span><span>,1016],[</span><span>\"</span><span>都市高武</span><span>\"</span><span>,1014],[</span><span>\"</span><span>悬疑灵异</span><span>\"</span><span>,751],[</span><span>\"</span><span>悬疑脑洞</span><span>\"</span><span>,539],[</span><span>\"</span><span>抗战谍战</span><span>\"</span><span>,504],[</span><span>\"</span><span>历史古代</span><span>\"</span><span>,273],[</span><span>\"</span><span>历史脑洞</span><span>\"</span><span>,272],[</span><span>\"</span><span>都市种田</span><span>\"</span><span>,263],[</span><span>\"</span><span>都市脑洞</span><span>\"</span><span>,262],[</span><span>\"</span><span>都市日常</span><span>\"</span><span>,261],[</span><span>\"</span><span>玄幻脑洞</span><span>\"</span><span>,257],[</span><span>\"</span><span>战神赘婿</span><span>\"</span><span>,27],[</span><span>\"</span><span>动漫衍生</span><span>\"</span><span>,718],[</span><span>\"</span><span>游戏体育</span><span>\"</span><span>,746],[</span><span>\"</span><span>传统玄幻</span><span>\"</span><span>,258],[</span><span>\"</span><span>都市修真</span><span>\"</span><span>,124]],</span><span>\"</span><span>f</span><span>\"</span><span>:[[</span><span>\"</span><span>女频悬疑</span><span>\"</span><span>,747],[</span><span>\"</span><span>古风世情</span><span>\"</span><span>,1139],[</span><span>\"</span><span>科幻末世</span><span>\"</span><span>,8],[</span><span>\"</span><span>女频衍生</span><span>\"</span><span>,1015],[</span><span>\"</span><span>民国言情</span><span>\"</span><span>,1017],[</span><span>\"</span><span>悬疑脑洞</span><span>\"</span><span>,539],[</span><span>\"</span><span>青春甜宠</span><span>\"</span><span>,749],[</span><span>\"</span><span>双男主</span><span>\"</span><span>,275],[</span><span>\"</span><span>古言脑洞</span><span>\"</span><span>,253],[</span><span>\"</span><span>现言脑洞</span><span>\"</span><span>,267],[</span><span>\"</span><span>玄幻言情</span><span>\"</span><span>,248],[</span><span>\"</span><span>宫斗宅斗</span><span>\"</span><span>,246],[</span><span>\"</span><span>豪门总裁</span><span>\"</span><span>,748],[</span><span>\"</span><span>动漫衍生</span><span>\"</span><span>,718],[</span><span>\"</span><span>星光璀璨</span><span>\"</span><span>,745],[</span><span>\"</span><span>游戏体育</span><span>\"</span><span>,746],[</span><span>\"</span><span>职场婚恋</span><span>\"</span><span>,750],[</span><span>\"</span><span>双女主</span><span>\"</span><span>,704],[</span><span>\"</span><span>年代</span><span>\"</span><span>,79],[</span><span>\"</span><span>种田</span><span>\"</span><span>,23],[</span><span>\"</span><span>快穿</span><span>\"</span><span>,24]],</span><span>\"</span><span>a</span><span>\"</span><span>:[[</span><span>\"</span><span>女频悬疑</span><span>\"</span><span>,747],[</span><span>\"</span><span>西方奇幻</span><span>\"</span><span>,1141],[</span><span>\"</span><span>东方仙侠</span><span>\"</span><span>,1140],[</span><span>\"</span><span>古风世情</span><span>\"</span><span>,1139],[</span><span>\"</span><span>科幻末世</span><span>\"</span><span>,8],[</span><span>\"</span><span>男频衍生</span><span>\"</span><span>,1016],[</span><span>\"</span><span>女频衍生</span><span>\"</span><span>,1015],[</span><span>\"</span><span>民国言情</span><span>\"</span><span>,1017],[</span><span>\"</span><span>都市高武</span><span>\"</span><span>,1014],[</span><span>\"</span><span>悬疑灵异</span><span>\"</span><span>,751],[</span><span>\"</span><span>悬疑脑洞</span><span>\"</span><span>,539],[</span><span>\"</span><span>抗战谍战</span><span>\"</span><span>,504],[</span><span>\"</span><span>青春甜宠</span><span>\"</span><span>,749],[</span><span>\"</span><span>双男主</span><span>\"</span><span>,275],[</span><span>\"</span><span>古言脑洞</span><span>\"</span><span>,253],[</span><span>\"</span><span>历史古代</span><span>\"</span><span>,273],[</span><span>\"</span><span>历史脑洞</span><span>\"</span><span>,272],[</span><span>\"</span><span>现言脑洞</span><span>\"</span><span>,267],[</span><span>\"</span><span>都市种田</span><span>\"</span><span>,263],[</span><span>\"</span><span>都市脑洞</span><span>\"</span><span>,262],[</span><span>\"</span><span>都市日常</span><span>\"</span><span>,261],[</span><span>\"</span><span>玄幻脑洞</span><span>\"</span><span>,257],[</span><span>\"</span><span>玄幻言情</span><span>\"</span><span>,248],[</span><span>\"</span><span>宫斗宅斗</span><span>\"</span><span>,246],[</span><span>\"</span><span>豪门总裁</span><span>\"</span><span>,748],[</span><span>\"</span><span>战神赘婿</span><span>\"</span><span>,27],[</span><span>\"</span><span>动漫衍生</span><span>\"</span><span>,718],[</span><span>\"</span><span>星光璀璨</span><span>\"</span><span>,745],[</span><span>\"</span><span>游戏体育</span><span>\"</span><span>,746],[</span><span>\"</span><span>职场婚恋</span><span>\"</span><span>,750],[</span><span>\"</span><span>双女主</span><span>\"</span><span>,704],[</span><span>\"</span><span>传统玄幻</span><span>\"</span><span>,258],[</span><span>\"</span><span>都市修真</span><span>\"</span><span>,124],[</span><span>\"</span><span>年代</span><span>\"</span><span>,79],[</span><span>\"</span><span>种田</span><span>\"</span><span>,23],[</span><span>\"</span><span>快穿</span><span>\"</span><span>,24]]};</span><span>\n</span><span>var groups = [[</span><span>\"</span><span>男生</span><span>\"</span><span>, 1, C.m], [</span><span>\"</span><span>女生</span><span>\"</span><span>, 0, C.f], [</span><span>\"</span><span>全部</span><span>\"</span><span>, -1, C.a]];</span><span>\n</span><span>var api = </span><span>\"</span><span>https://fanqienovel.com/api/author/library/book_list/v0/?page_count=18&amp;page_index={{page-1}}</span><span>\"</span><span>;</span><span>\n</span><span>var opt = JSON.stringify({bodyJs: </span><span>\"</span><span>fqDecL(result)</span><span>\"</span><span>});</span><span>\n</span><span>var out = [];</span><span>\n</span><span>for (var i = 0; i &lt; groups.length; i++) {</span><span>\n</span><span>  var g = groups[i];</span><span>\n</span><span>  out.push({title: g[0], url: </span><span>\"\"</span><span>, style: {layout_flexBasisPercent: 1, layout_flexGrow: 1}});</span><span>\n</span><span>  var list = [[</span><span>\"</span><span>全部</span><span>\"</span><span>, -1]].concat(g[2]);</span><span>\n</span><span>  for (var j = 0; j &lt; list.length; j++) {</span><span>\n</span><span>    out.push({</span><span>\n</span><span>      title: list[j][0],</span><span>\n</span><span>      url: api + </span><span>\"</span><span>&amp;gender=</span><span>\"</span><span> + g[1] + </span><span>\"</span><span>&amp;category_id=</span><span>\"</span><span> + list[j][1] + </span><span>\"</span><span>&amp;book_type=-1{{fqFilter(source.getLoginInfo())}},</span><span>\"</span><span> + opt,</span><span>\n</span><span>      style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25}</span><span>\n</span><span>    });</span><span>\n</span><span>  }</span><span>\n</span><span>}</span><span>\n</span><span>JSON.stringify(out);"</span><span>,</span></div></div><div><div><div>63</div></div><div><span>    </span><span>"header"</span><span>: </span><span>"{</span><span>\"</span><span>User-Agent</span><span>\"</span><span>: </span><span>\"</span><span>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36</span><span>\"</span><span>, </span><span>\"</span><span>Referer</span><span>\"</span><span>: </span><span>\"</span><span>https://fanqienovel.com/</span><span>\"</span><span>}"</span><span>,</span></div></div><div><div><div>64</div></div><div><span>    </span><span>"jsLib"</span><span>: </span><span>"var FQ_BASE = 0xE3E8;</span><span>\n</span><span>var FQ_TC = </span><span>\"</span><span>D在主特家军然表场4要只v和#6别还g现儿岁##此象月3出战工相o男直失世F都平文什VO将真T那当#会立些u是十张学气大爱两命全后东性通被1它乐接而感车山公了常以何可话先pi叫轻M士w着变尔快l个说少色里安花远7难师放t报认面道S#克地度I好机U民写把万同水新没书电吃像斯5为y白几日教看但第加候作上拉住有法r事应位利你声身国问马女他Y比父xAHNsX边美对所金活回意到z从j知又内因点Q三定8Rb正或夫向德听更#得告并本q过记L让打f人就者去原满体做经K走如孩cG给使物#最笑部#员等受k行一条果动光门头见往自解成处天能于名其发总母的死手入路进心来h时力多开已许d至由很界n小与Z想代么分生口再妈望次西风种带J#实情才这#E我神格长觉间年眼无不亲关结0友信下却重己老2音字m呢明之前高PB目太e9起棱她也W用方子英每理便四数期中C外样a海们任</span><span>\"</span><span>;</span><span>\n</span><span>var FQ_TL = </span><span>\"</span><span>体y十现快便话却月物水的放知爱万#表风理O老也p常克平几最主她s将法情o光a我呢J员太每望受教w利军已U人如变得要少斯门电m男没AK国时中走么何口小向问轻Td神下间车fG度D又大面远就写j给通起实E#它去S到道数吃们加P是无把事西多界#发新外活解孩只作前Y尔经#u心告父等Q民全这9果安#i母8r说任先和地C张战场g像cq你使#样总目x性处音头#应乐关能花l当名手4重字声力友然生代内里本回真入师象#0点R亲V种动英命ZhX做特边高有B为期自年马认出接至H正方感所明者棱F住学还分意更其n但比觉以由死家让失士L2I金叫身报听W再原山海白很见5直位第工个开岁好用都于可同3次四#日信与女笑满并部什不从或机此#了记三e些bN夫会才儿眼两美被一公来立z长对己看k许因相色后往打结格过世气7子条在书之定v拉成进带着东上想天他妈1文而路那别德6Mt行候难</span><span>\"</span><span>;</span><span>\n</span><span>function fqDec(s, t) {</span><span>\n</span><span>  if (s == null) return </span><span>\"\"</span><span>;</span><span>\n</span><span>  s = String(s);</span><span>\n</span><span>  var out = [], i, c, ch;</span><span>\n</span><span>  for (i = 0; i &lt; s.length; i++) {</span><span>\n</span><span>    c = s.charCodeAt(i);</span><span>\n</span><span>    if (c &gt;= FQ_BASE &amp;&amp; c &lt; FQ_BASE + t.length) {</span><span>\n</span><span>      ch = t.charAt(c - FQ_BASE);</span><span>\n</span><span>      out.push(ch == </span><span>\"</span><span>#</span><span>\"</span><span> ? s.charAt(i) : ch);</span><span>\n</span><span>    } else out.push(s.charAt(i));</span><span>\n</span><span>  }</span><span>\n</span><span>  return out.join(</span><span>\"\"</span><span>);</span><span>\n</span><span>}</span><span>\n</span><span>function fqDecC(s) { return fqDec(s, FQ_TC); }</span><span>\n</span><span>function fqDecL(s) { return fqDec(s, FQ_TL); }</span><span>\n</span><span>function fqHasPua(s) { return /[</span><span>\\</span><span>uE000-</span><span>\\</span><span>uF8FF]/.test(String(s)); }</span><span>\n</span><span>function fqFilter(info) {</span><span>\n</span><span>  var m = {};</span><span>\n</span><span>  try { if (info != null &amp;&amp; String(info) != </span><span>\"\"</span><span>) m = JSON.parse(String(info)) || {}; } catch (e) { m = {}; }</span><span>\n</span><span>  var a = String(m[</span><span>\"</span><span>状态</span><span>\"</span><span>] || </span><span>\"\"</span><span>), b = String(m[</span><span>\"</span><span>字数</span><span>\"</span><span>] || </span><span>\"\"</span><span>).replace(/</span><span>\\</span><span>s/g, </span><span>\"\"</span><span>), c = String(m[</span><span>\"</span><span>排序</span><span>\"</span><span>] || </span><span>\"\"</span><span>);</span><span>\n</span><span>  var st = /完/.test(a) ? 0 : (/连/.test(a) ? 1 : -1);</span><span>\n</span><span>  var wc = -1;</span><span>\n</span><span>  if (/^30(万)?(字)?以下/.test(b)) wc = 0;</span><span>\n</span><span>  else if (/^30[-~～至]50/.test(b)) wc = 1;</span><span>\n</span><span>  else if (/^50[-~～至]100/.test(b)) wc = 2;</span><span>\n</span><span>  else if (/^100[-~～至]200/.test(b)) wc = 3;</span><span>\n</span><span>  else if (/^200(万)?(字)?以上/.test(b)) wc = 4;</span><span>\n</span><span>  var so = /新/.test(c) ? 1 : (/字/.test(c) ? 2 : 0);</span><span>\n</span><span>  return </span><span>\"</span><span>&amp;creation_status=</span><span>\"</span><span> + st + </span><span>\"</span><span>&amp;word_count=</span><span>\"</span><span> + wc + </span><span>\"</span><span>&amp;sort=</span><span>\"</span><span> + so;</span><span>\n</span><span>}</span><span>\n</span><span>function fqWan(n) { n = Number(n) || 0; return n &gt;= 10000 ? (n / 10000).toFixed(1) + </span><span>\"</span><span>万字</span><span>\"</span><span> : n + </span><span>\"</span><span>字</span><span>\"</span><span>; }</span><span>\n</span><span>function fqContent(html) {</span><span>\n</span><span>  html = String(html);</span><span>\n</span><span>  var m = html.match(/__INITIAL_STATE__</span><span>\\</span><span>s*=</span><span>\\</span><span>s*(</span><span>\\</span><span>{[</span><span>\\</span><span>s</span><span>\\</span><span>S]*?</span><span>\\</span><span>});</span><span>\\</span><span>s*</span><span>\\</span><span>}</span><span>\\</span><span>s*</span><span>\\</span><span>)</span><span>\\</span><span>s*</span><span>\\</span><span>(</span><span>\\</span><span>s*</span><span>\\</span><span>)/);</span><span>\n</span><span>  if (!m) return </span><span>\"</span><span>【番茄】未找到章节数据（页面结构可能已变化）</span><span>\"</span><span>;</span><span>\n</span><span>  var st = JSON.parse(m[1].replace(/:</span><span>\\</span><span>s*undefined/g, </span><span>\"</span><span>:null</span><span>\"</span><span>));</span><span>\n</span><span>  var cd = (st.reader &amp;&amp; st.reader.chapterData) || {};</span><span>\n</span><span>  var raw = String(cd.content || </span><span>\"\"</span><span>);</span><span>\n</span><span>  var paras = [];</span><span>\n</span><span>  raw.replace(/&lt;p[^&gt;]*&gt;([</span><span>\\</span><span>s</span><span>\\</span><span>S]*?)&lt;</span><span>\\</span><span>/p&gt;/g, function (a, b) { paras.push(b); return a; });</span><span>\n</span><span>  if (!paras.length) paras = raw.split(/&lt;br</span><span>\\</span><span>s*</span><span>\\</span><span>/?&gt;|</span><span>\\</span><span>n/);</span><span>\n</span><span>  var lines = [], i, t;</span><span>\n</span><span>  for (i = 0; i &lt; paras.length; i++) {</span><span>\n</span><span>    t = fqDecC(paras[i]).replace(/&lt;[^&gt;]+&gt;/g, </span><span>\"\"</span><span>).replace(/&amp;nbsp;/g, </span><span>\"</span><span> </span><span>\"</span><span>).replace(/&amp;lt;/g, </span><span>\"</span><span>&lt;</span><span>\"</span><span>).replace(/&amp;gt;/g, </span><span>\"</span><span>&gt;</span><span>\"</span><span>).replace(/&amp;quot;/g, </span><span>\"\\\"\"</span><span>).replace(/&amp;#39;/g, </span><span>\"</span><span>'</span><span>\"</span><span>).replace(/&amp;amp;/g, </span><span>\"</span><span>&amp;</span><span>\"</span><span>).replace(/^</span><span>\\</span><span>s+|</span><span>\\</span><span>s+$/g, </span><span>\"\"</span><span>);</span><span>\n</span><span>    if (t) lines.push(t);</span><span>\n</span><span>  }</span><span>\n</span><span>  var text = lines.join(</span><span>\"\\</span><span>n</span><span>\"</span><span>);</span><span>\n</span><span>  var words = Number(cd.chapterWordNumber) || 0;</span><span>\n</span><span>  if ((cd.isChapterLock === true || String(cd.isChapterLock) == </span><span>\"</span><span>true</span><span>\"</span><span>) &amp;&amp; words &gt; 0 &amp;&amp; text.length &lt; words * 0.6) {</span><span>\n</span><span>    text += </span><span>\"\\</span><span>n</span><span>\\</span><span>n【未登录：番茄网页端第10章以后只返回片段。请在书源「登录」界面点「网页登录」登录自己的番茄账号，然后刷新本章。】</span><span>\"</span><span>;</span><span>\n</span><span>  }</span><span>\n</span><span>  if (fqHasPua(text)) text += </span><span>\"\\</span><span>n</span><span>\\</span><span>n【番茄字体映射可能已更新，部分文字无法解码，请反馈更新书源】</span><span>\"</span><span>;</span><span>\n</span><span>  return text;</span><span>\n</span><span>}"</span><span>,</span></div></div><div><div><div>65</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1793093336741</span><span>,</span></div></div><div><div><div>66</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>"[{</span><span>\"</span><span>name</span><span>\"</span><span>:</span><span>\"</span><span>状态</span><span>\"</span><span>,</span><span>\"</span><span>type</span><span>\"</span><span>:</span><span>\"</span><span>select</span><span>\"</span><span>,</span><span>\"</span><span>chars</span><span>\"</span><span>:[</span><span>\"</span><span>全部</span><span>\"</span><span>,</span><span>\"</span><span>连载中</span><span>\"</span><span>,</span><span>\"</span><span>已完结</span><span>\"</span><span>],</span><span>\"</span><span>default</span><span>\"</span><span>:</span><span>\"</span><span>全部</span><span>\"</span><span>},{</span><span>\"</span><span>name</span><span>\"</span><span>:</span><span>\"</span><span>字数</span><span>\"</span><span>,</span><span>\"</span><span>type</span><span>\"</span><span>:</span><span>\"</span><span>select</span><span>\"</span><span>,</span><span>\"</span><span>chars</span><span>\"</span><span>:[</span><span>\"</span><span>全部</span><span>\"</span><span>,</span><span>\"</span><span>30万以下</span><span>\"</span><span>,</span><span>\"</span><span>30-50万</span><span>\"</span><span>,</span><span>\"</span><span>50-100万</span><span>\"</span><span>,</span><span>\"</span><span>100-200万</span><span>\"</span><span>,</span><span>\"</span><span>200万以上</span><span>\"</span><span>],</span><span>\"</span><span>default</span><span>\"</span><span>:</span><span>\"</span><span>全部</span><span>\"</span><span>},{</span><span>\"</span><span>name</span><span>\"</span><span>:</span><span>\"</span><span>排序</span><span>\"</span><span>,</span><span>\"</span><span>type</span><span>\"</span><span>:</span><span>\"</span><span>select</span><span>\"</span><span>,</span><span>\"</span><span>chars</span><span>\"</span><span>:[</span><span>\"</span><span>最热</span><span>\"</span><span>,</span><span>\"</span><span>最新</span><span>\"</span><span>,</span><span>\"</span><span>字数</span><span>\"</span><span>],</span><span>\"</span><span>default</span><span>\"</span><span>:</span><span>\"</span><span>最热</span><span>\"</span><span>},{</span><span>\"</span><span>name</span><span>\"</span><span>:</span><span>\"</span><span>① 网页登录（打开番茄首页手动登录）</span><span>\"</span><span>,</span><span>\"</span><span>type</span><span>\"</span><span>:</span><span>\"</span><span>button</span><span>\"</span><span>,</span><span>\"</span><span>action</span><span>\"</span><span>:</span><span>\"</span><span>webLogin()</span><span>\"</span><span>},{</span><span>\"</span><span>name</span><span>\"</span><span>:</span><span>\"</span><span>Cookie（粘贴整串，含分号）</span><span>\"</span><span>,</span><span>\"</span><span>type</span><span>\"</span><span>:</span><span>\"</span><span>text</span><span>\"</span><span>,</span><span>\"</span><span>default</span><span>\"</span><span>:</span><span>\"\"</span><span>},{</span><span>\"</span><span>name</span><span>\"</span><span>:</span><span>\"</span><span>保存上面的 Cookie</span><span>\"</span><span>,</span><span>\"</span><span>type</span><span>\"</span><span>:</span><span>\"</span><span>button</span><span>\"</span><span>,</span><span>\"</span><span>action</span><span>\"</span><span>:</span><span>\"</span><span>saveCookie()</span><span>\"</span><span>}]"</span><span>,</span></div></div><div><div><div>67</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>"function login() {</span><span>\n</span><span>  java.toast(</span><span>\"</span><span>筛选已保存</span><span>\"</span><span>);</span><span>\n</span><span>}</span><span>\n</span><span>function webLogin() {</span><span>\n</span><span>  java.startBrowserAwait(</span><span>\"</span><span>https://fanqienovel.com/</span><span>\"</span><span>, </span><span>\"</span><span>在打开的页面里点右上角「登录」，用手机号/扫码登录，完成后点「确认」</span><span>\"</span><span>);</span><span>\n</span><span>}</span><span>\n</span><span>function saveCookie() {</span><span>\n</span><span>  var ck = String(source.getLoginInfoMap().get(</span><span>\"</span><span>Cookie（粘贴整串，含分号）</span><span>\"</span><span>) || </span><span>\"\"</span><span>).trim();</span><span>\n</span><span>  if (ck.length &lt; 20) {</span><span>\n</span><span>    java.toast(</span><span>\"</span><span>Cookie 太短，请重新复制整串</span><span>\"</span><span>);</span><span>\n</span><span>    return;</span><span>\n</span><span>  }</span><span>\n</span><span>  source.putLoginHeader(JSON.stringify({</span><span>\"</span><span>Cookie</span><span>\"</span><span>: ck}));</span><span>\n</span><span>  java.toast(</span><span>\"</span><span>Cookie 已保存，退出书源管理后刷新章节</span><span>\"</span><span>);</span><span>\n</span><span>}"</span><span>,</span></div></div><div><div><div>68</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>69</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.data.author"</span><span>,</span></div></div><div><div><div>70</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.data.thumbUrl"</span><span>,</span></div></div><div><div><div>71</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.data.abstract"</span><span>,</span></div></div><div><div><div>72</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"@js:var d=JSON.parse(String(result)).data;var a=[];try{var c=JSON.parse(d.categoryV2||'[]');for(var i=0;i&lt;c.length;i++)a.push(c[i].Name);}catch(e){}a.push(String(d.creationStatus)=='0'?'已完结':'连载中');a.join(',')"</span><span>,</span></div></div><div><div><div>73</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"$.data.lastChapterTitle"</span><span>,</span></div></div><div><div><div>74</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.data.bookName"</span><span>,</span></div></div><div><div><div>75</div></div><div><span>      </span><span>"tocUrl"</span><span>: </span><span>"https://fanqienovel.com/api/reader/directory/detail?bookId={{$.data.bookId}}"</span><span>,</span></div></div><div><div><div>76</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>"@js:fqWan(JSON.parse(String(result)).data.wordNumber)"</span></div></div><div><div><div>77</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>78</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>79</div></div><div><span>      </span><span>"content"</span><span>: </span><span>"@js:fqContent(result)"</span></div></div><div><div><div>80</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>81</div></div><div><span>    </span><span>"ruleExplore"</span><span>: {</span></div></div><div><div><div>82</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.author"</span><span>,</span></div></div><div><div><div>83</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"$.data.book_list[*]"</span><span>,</span></div></div><div><div><div>84</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"https://fanqienovel.com/api/book/info?bookId={{$.book_id}}"</span><span>,</span></div></div><div><div><div>85</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.thumb_url"</span><span>,</span></div></div><div><div><div>86</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.abstract"</span><span>,</span></div></div><div><div><div>87</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"$.creation_status@js:String(result)=='0'?'已完结':(String(result)=='1'?'连载中':'')"</span><span>,</span></div></div><div><div><div>88</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.book_name"</span><span>,</span></div></div><div><div><div>89</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>"$.word_count"</span></div></div><div><div><div>90</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>91</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>92</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.author"</span><span>,</span></div></div><div><div><div>93</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"$.data.ret_data[*]"</span><span>,</span></div></div><div><div><div>94</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"https://fanqienovel.com/api/book/info?bookId={{$.book_id}}"</span><span>,</span></div></div><div><div><div>95</div></div><div><span>      </span><span>"checkKeyWord"</span><span>: </span><span>"十日终焉"</span><span>,</span></div></div><div><div><div>96</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.thumb_url"</span><span>,</span></div></div><div><div><div>97</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.abstract"</span><span>,</span></div></div><div><div><div>98</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"$.category"</span><span>,</span></div></div><div><div><div>99</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.title##&lt;/?em&gt;"</span></div></div><div><div><div>100</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>101</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>102</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"$.data.chapterListWithVolume[*][*]"</span><span>,</span></div></div><div><div><div>103</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"$.title"</span><span>,</span></div></div><div><div><div>104</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"https://fanqienovel.com/reader/{{$.itemId}}"</span><span>,</span></div></div><div><div><div>105</div></div><div><span>      </span><span>"isVip"</span><span>: </span><span>"$.needPay"</span><span>,</span></div></div><div><div><div>106</div></div><div><span>      </span><span>"updateTime"</span><span>: </span><span>"$.volume_name"</span></div></div><div><div><div>107</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>108</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"https://novel.snssdk.com/api/novel/channel/homepage/search/search/v1/?device_platform=android&amp;parent_enterfrom=novel_channel_search.tab.&amp;aid=13&amp;offset={{(page-1)*10}}&amp;q={{key}}"</span><span>,</span></div></div><div><div><div>109</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>110</div></div><div><span>    </span><span>"concurrentRate"</span><span>: </span><span>"1/1000"</span></div></div><div><div><div>111</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>112</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>113</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"book.washai.net｜无需登录、无付费、正文无广告，番茄+起点通吃。</span><span>\n</span><span>实测：《十日终焉》1496 章全本（第78章 2256 字）、《诡秘之主》1415 章（第50章 3160 字）。</span><span>\n</span><span>【实测】《废土恋爱游戏》搜不到（书库偏旧），但《十日终焉》1496 章、《诡秘之主》1415 章完整。"</span><span>,</span></div></div><div><div><div>114</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>115</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>116</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>117</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>118</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>119</div></div><div><span>    </span><span>"respondTime"</span><span>: </span><span>30000</span><span>,</span></div></div><div><div><div>120</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1793093336741</span><span>,</span></div></div><div><div><div>121</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>122</div></div><div><span>    </span><span>"bookUrlPattern"</span><span>: </span><span>"https://book.washai.net/book/.*</span><span>\\</span><span>.html"</span><span>,</span></div></div><div><div><div>123</div></div><div><span>    </span><span>"jsLib"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>124</div></div><div><span>    </span><span>"header"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>125</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>126</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>127</div></div><div><span>    </span><span>"loginCheckJs"</span><span>: </span><span>null</span><span>,</span></div></div><div><div><div>128</div></div><div><span>    </span><span>"variableComment"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>129</div></div><div><span>    </span><span>"concurrentRate"</span><span>: </span><span>"1/1000"</span><span>,</span></div></div><div><div><div>130</div></div><div><span>    </span><span>"customButton"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>131</div></div><div><span>    </span><span>"eventListener"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>132</div></div><div><span>    </span><span>"ruleExplore"</span><span>: {</span></div></div><div><div><div>133</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"#bookList .classBookCard"</span><span>,</span></div></div><div><div><div>134</div></div><div><span>      </span><span>"name"</span><span>: </span><span>".classBookTitle a@text"</span><span>,</span></div></div><div><div><div>135</div></div><div><span>      </span><span>"author"</span><span>: </span><span>".classBookAuthor a@text##作者："</span><span>,</span></div></div><div><div><div>136</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".classBookCover img@src"</span><span>,</span></div></div><div><div><div>137</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>".classBookDesc@text"</span><span>,</span></div></div><div><div><div>138</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>".classCoverCat@text"</span><span>,</span></div></div><div><div><div>139</div></div><div><span>      </span><span>"status"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>140</div></div><div><span>      </span><span>"updateTime"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>141</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>".classBookChapter a@text"</span><span>,</span></div></div><div><div><div>142</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>".classBookTitle a@href"</span><span>,</span></div></div><div><div><div>143</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>""</span></div></div><div><div><div>144</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>145</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"书海阁"</span><span>,</span></div></div><div><div><div>146</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"https://book.washai.net/"</span><span>,</span></div></div><div><div><div>147</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>3</span><span>,</span></div></div><div><div><div>148</div></div><div><span>    </span><span>"exploreUrl"</span><span>: </span><span>"[{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>玄幻</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/book/bookclass.html?c=1</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>仙侠</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/book/bookclass.html?c=2</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>都市</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/book/bookclass.html?c=3</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>历史</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/book/bookclass.html?c=4</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>军事</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/book/bookclass.html?c=5</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>科幻</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/book/bookclass.html?c=6</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>言情</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/book/bookclass.html?c=7</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>其他</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/book/bookclass.html?c=8</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}]"</span><span>,</span></div></div><div><div><div>149</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"/book/bookclass.html?k={{key}}"</span><span>,</span></div></div><div><div><div>150</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>151</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"#bookList .classBookCard"</span><span>,</span></div></div><div><div><div>152</div></div><div><span>      </span><span>"name"</span><span>: </span><span>".classBookTitle a@text"</span><span>,</span></div></div><div><div><div>153</div></div><div><span>      </span><span>"author"</span><span>: </span><span>".classBookAuthor a@text##作者："</span><span>,</span></div></div><div><div><div>154</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".classBookCover img@src"</span><span>,</span></div></div><div><div><div>155</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>".classBookDesc@text"</span><span>,</span></div></div><div><div><div>156</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>".classCoverCat@text"</span><span>,</span></div></div><div><div><div>157</div></div><div><span>      </span><span>"status"</span><span>: </span><span>".classBookMeta@text##</span><span>\\</span><span>s·.*"</span><span>,</span></div></div><div><div><div>158</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>".classBookChapter a@text"</span><span>,</span></div></div><div><div><div>159</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>".classBookTitle a@href"</span></div></div><div><div><div>160</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>161</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>162</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"#bookName@text"</span><span>,</span></div></div><div><div><div>163</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"#bookAuthor@text"</span><span>,</span></div></div><div><div><div>164</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".bookCover img@src"</span><span>,</span></div></div><div><div><div>165</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"#bookDesc@text"</span><span>,</span></div></div><div><div><div>166</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"#bookStatus@text"</span><span>,</span></div></div><div><div><div>167</div></div><div><span>      </span><span>"status"</span><span>: </span><span>"#bookStatus@text"</span><span>,</span></div></div><div><div><div>168</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>"#bookWordCount@text"</span><span>,</span></div></div><div><div><div>169</div></div><div><span>      </span><span>"updateTime"</span><span>: </span><span>"#bookLastUpdateTime@text"</span><span>,</span></div></div><div><div><div>170</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"#lastIndexLink@text"</span><span>,</span></div></div><div><div><div>171</div></div><div><span>      </span><span>"tocUrl"</span><span>: </span><span>"#allIndexLink@href"</span></div></div><div><div><div>172</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>173</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>174</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"#bookIndexList li a"</span><span>,</span></div></div><div><div><div>175</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"text##</span><span>\\</span><span>s*</span><span>\\</span><span>[免费</span><span>\\</span><span>]</span><span>\\</span><span>s*|</span><span>\\</span><span>s*</span><span>\\</span><span>[付费</span><span>\\</span><span>]</span><span>\\</span><span>s*"</span><span>,</span></div></div><div><div><div>176</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"href"</span><span>,</span></div></div><div><div><div>177</div></div><div><span>      </span><span>"nextTocUrl"</span><span>: </span><span>"link[rel=next]@href"</span></div></div><div><div><div>178</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>179</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>180</div></div><div><span>      </span><span>"content"</span><span>: </span><span>"#showReading .readChapterAppendBody@text"</span><span>,</span></div></div><div><div><div>181</div></div><div><span>      </span><span>"replaceRegex"</span><span>: </span><span>"^</span><span>\\</span><span>s*第[0-9零〇一二三四五六七八九十百千]+章[^</span><span>\\</span><span>n]*</span><span>\\</span><span>n?@@^</span><span>\\</span><span>s*正文卷</span><span>\\</span><span>s*</span><span>\\</span><span>n?"</span><span>,</span></div></div><div><div><div>182</div></div><div><span>      </span><span>"sourceRegex"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>183</div></div><div><span>      </span><span>"nextContentUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>184</div></div><div><span>      </span><span>"imageDecode"</span><span>: </span><span>""</span></div></div><div><div><div>185</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>186</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>187</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>188</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"suduguu.com｜无需登录、无付费、无广告。</span><span>\n</span><span>实测：《十日终焉》第78章、《诡秘之主》999 章、《斗罗大陆III》第50章。目录上限 999 章。</span><span>\n</span><span>章末「(本章完)」「求收藏求推荐票」已用 replaceRegex 删除。</span><span>\n</span><span>【实测】《废土恋爱游戏》搜不到（书库偏旧），《诡秘之主》999 章可用。"</span><span>,</span></div></div><div><div><div>189</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>190</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>191</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>192</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>193</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>194</div></div><div><span>    </span><span>"respondTime"</span><span>: </span><span>30000</span><span>,</span></div></div><div><div><div>195</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1793093336741</span><span>,</span></div></div><div><div><div>196</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>197</div></div><div><span>    </span><span>"bookUrlPattern"</span><span>: </span><span>"https://www.suduguu.com/.*"</span><span>,</span></div></div><div><div><div>198</div></div><div><span>    </span><span>"jsLib"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>199</div></div><div><span>    </span><span>"header"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>200</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>201</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>202</div></div><div><span>    </span><span>"loginCheckJs"</span><span>: </span><span>null</span><span>,</span></div></div><div><div><div>203</div></div><div><span>    </span><span>"variableComment"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>204</div></div><div><span>    </span><span>"concurrentRate"</span><span>: </span><span>"1/1000"</span><span>,</span></div></div><div><div><div>205</div></div><div><span>    </span><span>"customButton"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>206</div></div><div><span>    </span><span>"eventListener"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>207</div></div><div><span>    </span><span>"ruleExplore"</span><span>: {</span></div></div><div><div><div>208</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>209</div></div><div><span>      </span><span>"name"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>210</div></div><div><span>      </span><span>"author"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>211</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>212</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>213</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>214</div></div><div><span>      </span><span>"status"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>215</div></div><div><span>      </span><span>"updateTime"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>216</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>217</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>218</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>""</span></div></div><div><div><div>219</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>220</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"速读谷"</span><span>,</span></div></div><div><div><div>221</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"https://www.suduguu.com/"</span><span>,</span></div></div><div><div><div>222</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>4</span><span>,</span></div></div><div><div><div>223</div></div><div><span>    </span><span>"exploreUrl"</span><span>: </span><span>"[]"</span><span>,</span></div></div><div><div><div>224</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"/i/sor.aspx?key={{key}}"</span><span>,</span></div></div><div><div><div>225</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>226</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>".item"</span><span>,</span></div></div><div><div><div>227</div></div><div><span>      </span><span>"name"</span><span>: </span><span>".itemtxt h3 a, .itemtxt h1 a@text"</span><span>,</span></div></div><div><div><div>228</div></div><div><span>      </span><span>"author"</span><span>: </span><span>".itemtxt p a@text##作者："</span><span>,</span></div></div><div><div><div>229</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".item img@src"</span><span>,</span></div></div><div><div><div>230</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>".des bb@text"</span><span>,</span></div></div><div><div><div>231</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>".itemtxt p span@text"</span><span>,</span></div></div><div><div><div>232</div></div><div><span>      </span><span>"status"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>233</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>".itemtxt ul li a@text"</span><span>,</span></div></div><div><div><div>234</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>".itemtxt h3 a, .itemtxt h1 a@href###dir##"</span></div></div><div><div><div>235</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>236</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>237</div></div><div><span>      </span><span>"name"</span><span>: </span><span>".itemtxt h1 a@text"</span><span>,</span></div></div><div><div><div>238</div></div><div><span>      </span><span>"author"</span><span>: </span><span>".itemtxt p a@text##作者："</span><span>,</span></div></div><div><div><div>239</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".item img@src"</span><span>,</span></div></div><div><div><div>240</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>241</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>".itemtxt p span@text"</span><span>,</span></div></div><div><div><div>242</div></div><div><span>      </span><span>"status"</span><span>: </span><span>".itemtxt p span@text"</span><span>,</span></div></div><div><div><div>243</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>".itemtxt h1 i@text"</span><span>,</span></div></div><div><div><div>244</div></div><div><span>      </span><span>"updateTime"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>245</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>".itemtxt ul li a@text"</span><span>,</span></div></div><div><div><div>246</div></div><div><span>      </span><span>"tocUrl"</span><span>: </span><span>""</span></div></div><div><div><div>247</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>248</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>249</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"#list li a"</span><span>,</span></div></div><div><div><div>250</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"text##^</span><span>\\</span><span>d+</span><span>\\</span><span>.##"</span><span>,</span></div></div><div><div><div>251</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"href"</span><span>,</span></div></div><div><div><div>252</div></div><div><span>      </span><span>"nextTocUrl"</span><span>: </span><span>""</span></div></div><div><div><div>253</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>254</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>255</div></div><div><span>      </span><span>"content"</span><span>: </span><span>".con@textNodes"</span><span>,</span></div></div><div><div><div>256</div></div><div><span>      </span><span>"replaceRegex"</span><span>: </span><span>"##</span><span>\\</span><span>((本章完|未完待续)</span><span>\\</span><span>)|－{5,}[</span><span>\\</span><span>s</span><span>\\</span><span>S]{0,120}?(求收藏|求推荐票)[^</span><span>\\</span><span>n]*##"</span><span>,</span></div></div><div><div><div>257</div></div><div><span>      </span><span>"sourceRegex"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>258</div></div><div><span>      </span><span>"nextContentUrl"</span><span>: </span><span>"text.下一页@href"</span><span>,</span></div></div><div><div><div>259</div></div><div><span>      </span><span>"imageDecode"</span><span>: </span><span>""</span></div></div><div><div><div>260</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>261</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>262</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>263</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"rulianshi.org（365小说网镜像）｜无需登录、无付费，书库更新快，起点新书能第一时间搜到。</span><span>\n</span><span>实测：《废土恋爱游戏》472 章，第233章 5120 字；《诡秘之主》1466 章，第734章 3891 字。</span><span>\n</span><span>正文首尾的「请记住本书首发域名…入殓师灵异录…牢记网址…」已用替换规则删除。"</span><span>,</span></div></div><div><div><div>264</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>265</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"入殓师灵异录"</span><span>,</span></div></div><div><div><div>266</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>267</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"http://www.rulianshi.org/"</span><span>,</span></div></div><div><div><div>268</div></div><div><span>    </span><span>"bookUrlPattern"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>269</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>5</span><span>,</span></div></div><div><div><div>270</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>271</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>272</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>273</div></div><div><span>    </span><span>"exploreUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>274</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1626981216533</span><span>,</span></div></div><div><div><div>275</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>276</div></div><div><span>    </span><span>"respondTime"</span><span>: </span><span>3012</span><span>,</span></div></div><div><div><div>277</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>278</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"class.info@class.small@tag.span.0@text"</span><span>,</span></div></div><div><div><div>279</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"class.cover@img@src"</span><span>,</span></div></div><div><div><div>280</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"class.info@ownText"</span><span>,</span></div></div><div><div><div>281</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"class.info@class.small@tag.span.4@text&amp;&amp;</span><span>\n</span><span>class.info@class.small@tag.span.1@text&amp;&amp;</span><span>\n</span><span>class.info@class.small@tag.span.2@text##分类：|状态：|更新时间："</span><span>,</span></div></div><div><div><div>282</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"class.info@class.small@tag.span.5@a@text"</span><span>,</span></div></div><div><div><div>283</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"class.info@h2@text"</span><span>,</span></div></div><div><div><div>284</div></div><div><span>      </span><span>"tocUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>285</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>"class.info@class.small@tag.span.3@text##字数："</span></div></div><div><div><div>286</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>287</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>288</div></div><div><span>      </span><span>"content"</span><span>: </span><span>"id.content@html##(?:http[^&lt;</span><span>\\</span><span>s]*html|请记住本书首发域名[^&lt;]*|入殓师灵异录[^&lt;]*|牢记网址[^&lt;]*|全文字更新[^&lt;]*)##"</span><span>,</span></div></div><div><div><div>289</div></div><div><span>      </span><span>"nextContentUrl"</span><span>: </span><span>"text.下一页@href"</span></div></div><div><div><div>290</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>291</div></div><div><span>    </span><span>"ruleExplore"</span><span>: {},</span></div></div><div><div><div>292</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>293</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"class.author@text"</span><span>,</span></div></div><div><div><div>294</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"class.bookbox"</span><span>,</span></div></div><div><div><div>295</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"h4@a@href"</span><span>,</span></div></div><div><div><div>296</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"img@src"</span><span>,</span></div></div><div><div><div>297</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>298</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"class.update@a@text"</span><span>,</span></div></div><div><div><div>299</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"h4@a@text"</span></div></div><div><div><div>300</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>301</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>302</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"class.listmain@dd"</span><span>,</span></div></div><div><div><div>303</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"a@text"</span><span>,</span></div></div><div><div><div>304</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"a@href"</span></div></div><div><div><div>305</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>306</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"http://www.rulianshi.org/s.php?ie=utf-8&amp;q={{key}}"</span><span>,</span></div></div><div><div><div>307</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>308</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>309</div></div><div><span>    </span><span>"loginCheckJs"</span><span>: </span><span>null</span></div></div><div><div><div>310</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>311</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>312</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"起点书收录最全（《苍青之剑》894 章、《诡秘之主》1451 章），无需登录、无付费、无广告。</span><span>\n</span><span>※ 站点限流严重，连搜过快提示「频率过快请10秒后再试」，建议只在其它起点源换源失败时使用。</span><span>\n</span><span>【实测】《废土恋爱游戏》450 章，第233章 2132 字，可用；但限流严重。"</span><span>,</span></div></div><div><div><div>313</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>314</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"天空书屋"</span><span>,</span></div></div><div><div><div>315</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>316</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"https://m.tkshuw.com"</span><span>,</span></div></div><div><div><div>317</div></div><div><span>    </span><span>"bookUrlPattern"</span><span>: </span><span>"https?://(?:m|www)</span><span>\\</span><span>.tkshuw</span><span>\\</span><span>.com/nf_</span><span>\\</span><span>d+(?:/|</span><span>\\</span><span>.html)?$"</span><span>,</span></div></div><div><div><div>318</div></div><div><span>    </span><span>"concurrentRate"</span><span>: </span><span>"1/1500"</span><span>,</span></div></div><div><div><div>319</div></div><div><span>    </span><span>"customButton"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>320</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>6</span><span>,</span></div></div><div><div><div>321</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>322</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>323</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>324</div></div><div><span>    </span><span>"eventListener"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>325</div></div><div><span>    </span><span>"exploreUrl"</span><span>: </span><span>"[{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>🔥最近更新</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/hots.html</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>🏠首页推荐</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>仙侠</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/20_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>都市</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/21_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>历史</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/22_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>言情</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/23_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>网游</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/24_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>科幻</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/25_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>武侠</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/26_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>侦探</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/62_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>校园</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/64_0_0_0/?page={{page}}</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>综合</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/sort/72_0_0_0/?page={{page}}</span><span>\"</span><span>}]"</span><span>,</span></div></div><div><div><div>326</div></div><div><span>    </span><span>"header"</span><span>: </span><span>"{</span><span>\"</span><span>User-Agent</span><span>\"</span><span>:</span><span>\"</span><span>Mozilla/5.0 (Linux; Android 13; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36</span><span>\"</span><span>,</span><span>\"</span><span>Accept</span><span>\"</span><span>:</span><span>\"</span><span>text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</span><span>\"</span><span>,</span><span>\"</span><span>Accept-Language</span><span>\"</span><span>:</span><span>\"</span><span>zh-CN,zh;q=0.9</span><span>\"</span><span>,</span><span>\"</span><span>Referer</span><span>\"</span><span>:</span><span>\"</span><span>https://m.tkshuw.com/</span><span>\"</span><span>}"</span><span>,</span></div></div><div><div><div>327</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1793093336741</span><span>,</span></div></div><div><div><div>328</div></div><div><span>    </span><span>"respondTime"</span><span>: </span><span>180000</span><span>,</span></div></div><div><div><div>329</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>330</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"meta[property=</span><span>\"</span><span>og:novel:author</span><span>\"</span><span>]@content||div.synopsisArea_detail p.0@text##^作者："</span><span>,</span></div></div><div><div><div>331</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"meta[property=</span><span>\"</span><span>og:image</span><span>\"</span><span>]@content||div.synopsisArea_detail img@data-src"</span><span>,</span></div></div><div><div><div>332</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"meta[name=</span><span>\"</span><span>description</span><span>\"</span><span>]@content||p.review@text##^《[^》]*》简介:?"</span><span>,</span></div></div><div><div><div>333</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"meta[property=</span><span>\"</span><span>og:novel:category</span><span>\"</span><span>]@content||div.synopsisArea_detail p.1@text##^类别："</span><span>,</span></div></div><div><div><div>334</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"meta[property=</span><span>\"</span><span>og:novel:latest_chapter_name</span><span>\"</span><span>]@content||p.lastchapters a@text"</span><span>,</span></div></div><div><div><div>335</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"meta[property=</span><span>\"</span><span>og:novel:book_name</span><span>\"</span><span>]@content||header h1.title@text"</span><span>,</span></div></div><div><div><div>336</div></div><div><span>      </span><span>"tocUrl"</span><span>: </span><span>"p.btn a[href*=</span><span>\"</span><span>all.html</span><span>\"</span><span>]@href"</span></div></div><div><div><div>337</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>338</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>339</div></div><div><span>      </span><span>"content"</span><span>: </span><span>"#htmlContent@html"</span><span>,</span></div></div><div><div><div>340</div></div><div><span>      </span><span>"nextContentUrl"</span><span>: </span><span>"@js:var h=String(result||</span><span>\"\"</span><span>);var m=h.match(/id=</span><span>\"</span><span>pb_next</span><span>\"</span><span>[^&gt;]*href=</span><span>\"</span><span>([^</span><span>\"</span><span>]+)</span><span>\"</span><span>/);var u=(m&amp;&amp;/^</span><span>\\</span><span>d+_</span><span>\\</span><span>d+</span><span>\\</span><span>.html$/.test(m[1]))?m[1]:</span><span>\"\"</span><span>;u?u:null"</span></div></div><div><div><div>341</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>342</div></div><div><span>    </span><span>"ruleExplore"</span><span>: {</span></div></div><div><div><div>343</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"class.s_list"</span><span>,</span></div></div><div><div><div>344</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"tag.a@text"</span><span>,</span></div></div><div><div><div>345</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"text##^[^/]*/</span><span>\\</span><span>s*##"</span><span>,</span></div></div><div><div><div>346</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"tag.a@href"</span><span>,</span></div></div><div><div><div>347</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"tag.a@href##/nf_(</span><span>\\</span><span>d+)/.*##https://www.tkshuw.com/image/nf_$1.jpg"</span><span>,</span></div></div><div><div><div>348</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"tag.a@title##^最新章节：##"</span><span>,</span></div></div><div><div><div>349</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>350</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>351</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>""</span></div></div><div><div><div>352</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>353</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>354</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"class.s_list"</span><span>,</span></div></div><div><div><div>355</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"tag.a@text"</span><span>,</span></div></div><div><div><div>356</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"text##^[^/]*/</span><span>\\</span><span>s*##"</span><span>,</span></div></div><div><div><div>357</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"tag.a@href"</span><span>,</span></div></div><div><div><div>358</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"tag.a@href##/nf_(</span><span>\\</span><span>d+)/.*##https://www.tkshuw.com/image/nf_$1.jpg"</span><span>,</span></div></div><div><div><div>359</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"tag.a@title##^最新章节：##"</span><span>,</span></div></div><div><div><div>360</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>361</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>362</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>""</span></div></div><div><div><div>363</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>364</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>365</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"div.directoryArea p"</span><span>,</span></div></div><div><div><div>366</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"a@text"</span><span>,</span></div></div><div><div><div>367</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"a@href"</span></div></div><div><div><div>368</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>369</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"https://m.tkshuw.com/search.html?nf={{key}}"</span><span>,</span></div></div><div><div><div>370</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>371</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>372</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>373</div></div><div><span>    </span><span>"loginCheckJs"</span><span>: </span><span>null</span></div></div><div><div><div>374</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>375</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>376</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"deqixs.org｜无需登录、无付费、正文无广告。</span><span>\n</span><span>实测：《诡秘之主》1925 章（目录 3 页自动拼接，第50章 1007 字）。</span><span>\n</span><span>【实测】《废土恋爱游戏》搜不到（书库偏旧），《诡秘之主》1925 章可用。"</span><span>,</span></div></div><div><div><div>377</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>378</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>379</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>380</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>381</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>382</div></div><div><span>    </span><span>"respondTime"</span><span>: </span><span>30000</span><span>,</span></div></div><div><div><div>383</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1793093336741</span><span>,</span></div></div><div><div><div>384</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>385</div></div><div><span>    </span><span>"bookUrlPattern"</span><span>: </span><span>"https://www.deqixs.org/.*"</span><span>,</span></div></div><div><div><div>386</div></div><div><span>    </span><span>"jsLib"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>387</div></div><div><span>    </span><span>"header"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>388</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>389</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>390</div></div><div><span>    </span><span>"loginCheckJs"</span><span>: </span><span>null</span><span>,</span></div></div><div><div><div>391</div></div><div><span>    </span><span>"variableComment"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>392</div></div><div><span>    </span><span>"concurrentRate"</span><span>: </span><span>"1/1000"</span><span>,</span></div></div><div><div><div>393</div></div><div><span>    </span><span>"customButton"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>394</div></div><div><span>    </span><span>"eventListener"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>395</div></div><div><span>    </span><span>"ruleExplore"</span><span>: {</span></div></div><div><div><div>396</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>".item"</span><span>,</span></div></div><div><div><div>397</div></div><div><span>      </span><span>"name"</span><span>: </span><span>".itemtxt h3 a@text"</span><span>,</span></div></div><div><div><div>398</div></div><div><span>      </span><span>"author"</span><span>: </span><span>".itemtxt p a@text##作者："</span><span>,</span></div></div><div><div><div>399</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".item img@src"</span><span>,</span></div></div><div><div><div>400</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>401</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>".itemtxt p:first-of-type span:first-child@text"</span><span>,</span></div></div><div><div><div>402</div></div><div><span>      </span><span>"status"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>403</div></div><div><span>      </span><span>"updateTime"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>404</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>".itemtxt ul li:first-child a@text"</span><span>,</span></div></div><div><div><div>405</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>".itemtxt h3 a@href"</span><span>,</span></div></div><div><div><div>406</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>""</span></div></div><div><div><div>407</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>408</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"得奇小说"</span><span>,</span></div></div><div><div><div>409</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"https://www.deqixs.org/"</span><span>,</span></div></div><div><div><div>410</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>7</span><span>,</span></div></div><div><div><div>411</div></div><div><span>    </span><span>"exploreUrl"</span><span>: </span><span>"[{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>玄幻</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/sort/1/{{page}}.html</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>武侠</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/sort/2/{{page}}.html</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>都市</span><span>\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>/sort/3/{{page}}.html</span><span>\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}, {</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"\"</span><span>, </span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"\"</span><span>, </span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.2, </span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1}}]"</span><span>,</span></div></div><div><div><div>412</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"/modules/article/search.php?searchkey={{key}}&amp;searchtype=articlename"</span><span>,</span></div></div><div><div><div>413</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>414</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>".item"</span><span>,</span></div></div><div><div><div>415</div></div><div><span>      </span><span>"name"</span><span>: </span><span>".itemtxt h3 a, .itemtxt h1 a@text"</span><span>,</span></div></div><div><div><div>416</div></div><div><span>      </span><span>"author"</span><span>: </span><span>".itemtxt p a@text##作者："</span><span>,</span></div></div><div><div><div>417</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".item img@src"</span><span>,</span></div></div><div><div><div>418</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>".des bb@text"</span><span>,</span></div></div><div><div><div>419</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>".itemtxt p span@text"</span><span>,</span></div></div><div><div><div>420</div></div><div><span>      </span><span>"status"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>421</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>".itemtxt ul li a@text"</span><span>,</span></div></div><div><div><div>422</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>".itemtxt h3 a, .itemtxt h1 a@href###dir##"</span></div></div><div><div><div>423</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>424</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>425</div></div><div><span>      </span><span>"name"</span><span>: </span><span>".itemtxt h1 a@text"</span><span>,</span></div></div><div><div><div>426</div></div><div><span>      </span><span>"author"</span><span>: </span><span>".itemtxt p a@text##作者："</span><span>,</span></div></div><div><div><div>427</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".item img@src"</span><span>,</span></div></div><div><div><div>428</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>429</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>".itemtxt p span@text"</span><span>,</span></div></div><div><div><div>430</div></div><div><span>      </span><span>"status"</span><span>: </span><span>".itemtxt p span@text"</span><span>,</span></div></div><div><div><div>431</div></div><div><span>      </span><span>"wordCount"</span><span>: </span><span>".itemtxt p@text@@</span><span>\\</span><span>d+(?:</span><span>\\</span><span>.</span><span>\\</span><span>d+)?万字"</span><span>,</span></div></div><div><div><div>432</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>".itemtxt ul li a@text"</span><span>,</span></div></div><div><div><div>433</div></div><div><span>      </span><span>"tocUrl"</span><span>: </span><span>""</span></div></div><div><div><div>434</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>435</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>436</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"#list li a"</span><span>,</span></div></div><div><div><div>437</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"text"</span><span>,</span></div></div><div><div><div>438</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"href"</span><span>,</span></div></div><div><div><div>439</div></div><div><span>      </span><span>"nextTocUrl"</span><span>: </span><span>"text.下一页@href"</span></div></div><div><div><div>440</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>441</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>442</div></div><div><span>      </span><span>"content"</span><span>: </span><span>".con@textNodes##&amp;emsp;##"</span><span>,</span></div></div><div><div><div>443</div></div><div><span>      </span><span>"replaceRegex"</span><span>: </span><span>"&amp;emsp;"</span><span>,</span></div></div><div><div><div>444</div></div><div><span>      </span><span>"sourceRegex"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>445</div></div><div><span>      </span><span>"nextContentUrl"</span><span>: </span><span>"text.下一页@href"</span><span>,</span></div></div><div><div><div>446</div></div><div><span>      </span><span>"imageDecode"</span><span>: </span><span>""</span></div></div><div><div><div>447</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>448</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>449</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>450</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"bqg39.cc｜搜索走公开 API，详情/正文用 WebView 加载。</span><span>\n</span><span>实测：可搜到《苍青之剑》(幽祝)。依赖 WebView，打开章节约慢 2 秒，作起点最后备选。</span><span>\n</span><span>【实测】可搜到《废土恋爱游戏》，但正文走 WebView，抽检第233章解析失败，仅作最后备选。"</span><span>,</span></div></div><div><div><div>451</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"笔趣阁39"</span><span>,</span></div></div><div><div><div>452</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>453</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"https://www.bqg39.cc"</span><span>,</span></div></div><div><div><div>454</div></div><div><span>    </span><span>"bookUrlPattern"</span><span>: </span><span>"https://www.bqg301.cc/#/book/</span><span>\\</span><span>d+/?|https://www.bqg301.cc/#/book/</span><span>\\</span><span>d+/</span><span>\\</span><span>d+</span><span>\\</span><span>.html|https://www.bqg39.cc/chapter/</span><span>\\</span><span>d+/?"</span><span>,</span></div></div><div><div><div>455</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>8</span><span>,</span></div></div><div><div><div>456</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>457</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>458</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>459</div></div><div><span>    </span><span>"exploreUrl"</span><span>: </span><span>"[{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>玄幻</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=xuanhuan</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>武侠</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=wuxia</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>都市</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=dushi</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>历史</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=lishi</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>网游</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=wangyou</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>科幻</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=kehuan</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>言情</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=mm</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>完本</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=finish</span><span>\"</span><span>},{</span><span>\"</span><span>title</span><span>\"</span><span>:</span><span>\"</span><span>排行</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>:</span><span>\"</span><span>https://apibi.cc/api/sort?sort=top</span><span>\"</span><span>}]"</span><span>,</span></div></div><div><div><div>460</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1793093336741</span><span>,</span></div></div><div><div><div>461</div></div><div><span>    </span><span>"respondTime"</span><span>: </span><span>180000</span><span>,</span></div></div><div><div><div>462</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>463</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"#author@text##^作者：##||$.author"</span><span>,</span></div></div><div><div><div>464</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>".cover img@src##^//##https://||$.id@js:'https://www.bqg39.cc/bookimg/'+Math.floor(result/1000)+'/'+result+'.jpg'"</span><span>,</span></div></div><div><div><div>465</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"#intro@text##展开全部&gt;&gt;##||$.intro"</span><span>,</span></div></div><div><div><div>466</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"#full@text##^状态：##||#update@text##^更新时间：##||$.sortname||$.full||$.lastupdate"</span><span>,</span></div></div><div><div><div>467</div></div><div><span>      </span><span>"lastChapter"</span><span>: </span><span>"#lastchapter a@text||$.lastchapter"</span><span>,</span></div></div><div><div><div>468</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"#title@text||$.title"</span></div></div><div><div><div>469</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>470</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>471</div></div><div><span>      </span><span>"content"</span><span>: </span><span>"#chaptercontent@html@js:String(result).replace(/&lt;br</span><span>\\</span><span>s*</span><span>\\</span><span>/?</span><span>\\</span><span>&gt;/gi,'</span><span>\\</span><span>n').replace(/&lt;</span><span>\\</span><span>/p&gt;/gi,'</span><span>\\</span><span>n').replace(/&lt;[^&gt;]+&gt;/g,'').replace(/&amp;nbsp;/g,' ').replace(/请收藏本站[</span><span>\\</span><span>s</span><span>\\</span><span>S]*/,'').trim()"</span></div></div><div><div><div>472</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>473</div></div><div><span>    </span><span>"ruleExplore"</span><span>: {</span></div></div><div><div><div>474</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.author@js:String(result).trim()"</span><span>,</span></div></div><div><div><div>475</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"$.data[*]"</span><span>,</span></div></div><div><div><div>476</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"$.id@js:'https://www.bqg301.cc/#/book/'+result+'/,{</span><span>\"</span><span>webView</span><span>\"</span><span>:true,</span><span>\"</span><span>webViewJsDelay</span><span>\"</span><span>:2}'"</span><span>,</span></div></div><div><div><div>477</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.id@js:'https://www.bqg39.cc/bookimg/'+Math.floor(result/1000)+'/'+result+'.jpg'"</span><span>,</span></div></div><div><div><div>478</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.intro"</span><span>,</span></div></div><div><div><div>479</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.title"</span></div></div><div><div><div>480</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>481</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>482</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.author@js:String(result).trim()"</span><span>,</span></div></div><div><div><div>483</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"$.data[*]"</span><span>,</span></div></div><div><div><div>484</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"$.id@js:'https://www.bqg301.cc/#/book/'+result+'/,{</span><span>\"</span><span>webView</span><span>\"</span><span>:true,</span><span>\"</span><span>webViewJsDelay</span><span>\"</span><span>:2}'"</span><span>,</span></div></div><div><div><div>485</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.id@js:'https://www.bqg39.cc/bookimg/'+Math.floor(result/1000)+'/'+result+'.jpg'"</span><span>,</span></div></div><div><div><div>486</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.intro"</span><span>,</span></div></div><div><div><div>487</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.title"</span></div></div><div><div><div>488</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>489</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>490</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"#list dd a"</span><span>,</span></div></div><div><div><div>491</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"text"</span><span>,</span></div></div><div><div><div>492</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"href@js:var u=String(result);if(u.indexOf('http')&lt;0)u='https://www.bqg301.cc'+u;u+',{</span><span>\"</span><span>webView</span><span>\"</span><span>:true,</span><span>\"</span><span>webViewJsDelay</span><span>\"</span><span>:2}'"</span></div></div><div><div><div>493</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>494</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"https://apibi.cc/api/search?q={{key}}"</span><span>,</span></div></div><div><div><div>495</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>496</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>497</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>498</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>499</div></div><div><span>    </span><span>"loginCheckJs"</span><span>: </span><span>null</span><span>,</span></div></div><div><div><div>500</div></div><div><span>    </span><span>"concurrentRate"</span><span>: </span><span>"1/1500"</span></div></div><div><div><div>501</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>502</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>503</div></div><div><span>    </span><span>"bookSourceComment"</span><span>: </span><span>"huanmengacg.com 公开 API｜无需登录、无付费，日轻首选。</span><span>\n</span><span>实测：《OVERLORD》154 章（第140章 4.4 万字）、《无职转生》585 章、《刀剑神域》《魔法禁书目录》。</span><span>\n</span><span>章首章尾站点推广行已用 replaceRegex 删除。"</span><span>,</span></div></div><div><div><div>504</div></div><div><span>    </span><span>"bookSourceGroup"</span><span>: </span><span>"cb-ds"</span><span>,</span></div></div><div><div><div>505</div></div><div><span>    </span><span>"bookSourceName"</span><span>: </span><span>"幻梦轻小说"</span><span>,</span></div></div><div><div><div>506</div></div><div><span>    </span><span>"bookSourceType"</span><span>: </span><span>0</span><span>,</span></div></div><div><div><div>507</div></div><div><span>    </span><span>"bookSourceUrl"</span><span>: </span><span>"https://www.huanmengacg.com"</span><span>,</span></div></div><div><div><div>508</div></div><div><span>    </span><span>"concurrentRate"</span><span>: </span><span>"1/1000"</span><span>,</span></div></div><div><div><div>509</div></div><div><span>    </span><span>"customButton"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>510</div></div><div><span>    </span><span>"customOrder"</span><span>: </span><span>9</span><span>,</span></div></div><div><div><div>511</div></div><div><span>    </span><span>"enabled"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>512</div></div><div><span>    </span><span>"enabledCookieJar"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>513</div></div><div><span>    </span><span>"enabledExplore"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>514</div></div><div><span>    </span><span>"eventListener"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>515</div></div><div><span>    </span><span>"exploreUrl"</span><span>: </span><span>"[</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>🍑 最新更新 🍑</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 0,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 1}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>🍓 全部 🍓</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>🍅 ↓ 以下为题材分类 ↓ 🍅</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 0,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 1}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>连载中</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;state=1&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>已完结</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;state=2&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>校园</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=1&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>青春</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=2&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>恋爱</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=3&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>治愈</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=4&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>群像</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=5&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>竞技</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=6&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>音乐</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=7&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>美食</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=8&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>旅行</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=9&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>欢乐向</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=10&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>经营</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=11&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>职场</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=12&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>斗智</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=13&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>脑洞</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=14&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>宅文化</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=15&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>穿越</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=16&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>奇幻</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=17&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>魔法</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=18&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>异能</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=19&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>战斗</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=20&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>科幻</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=21&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>机战</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=22&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>战争</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=23&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>冒险</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=24&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>龙傲天</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=25&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>悬疑</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=26&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>犯罪</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=27&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>复仇</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=28&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>黑暗</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=29&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>猎奇</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=30&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>惊悚</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=31&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>间谍</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=32&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>末日</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=33&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>游戏</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=34&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>大逃杀</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=35&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>青梅竹马</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=36&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>妹妹</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=37&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>女儿</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=38&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>JK</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=39&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>JC</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=40&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>大小姐</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=41&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>性转</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=42&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>伪娘</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=43&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>人外</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=44&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>后宫</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=45&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>百合</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=46&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>耽美</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=47&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>NTR</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=48&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>女性视角</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=49&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}},</span><span>\n</span><span>{</span><span>\"</span><span>title</span><span>\"</span><span>: </span><span>\"</span><span>暂未分类</span><span>\"</span><span>,</span><span>\"</span><span>url</span><span>\"</span><span>: </span><span>\"</span><span>https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;tags=50&amp;page={{page}}&amp;size=20</span><span>\"</span><span>,</span><span>\"</span><span>style</span><span>\"</span><span>: {</span><span>\"</span><span>layout_flexGrow</span><span>\"</span><span>: 1,</span><span>\"</span><span>layout_flexBasisPercent</span><span>\"</span><span>: 0.29}}</span><span>\n</span><span>]"</span><span>,</span></div></div><div><div><div>516</div></div><div><span>    </span><span>"header"</span><span>: </span><span>"{</span><span>\n</span><span>  </span><span>\"</span><span>User-Agent</span><span>\"</span><span>: </span><span>\"</span><span>Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Mobile Safari/537.36.3022</span><span>\"\n</span><span>}"</span><span>,</span></div></div><div><div><div>517</div></div><div><span>    </span><span>"lastUpdateTime"</span><span>: </span><span>1793093336741</span><span>,</span></div></div><div><div><div>518</div></div><div><span>    </span><span>"loginCheckJs"</span><span>: </span><span>null</span><span>,</span></div></div><div><div><div>519</div></div><div><span>    </span><span>"respondTime"</span><span>: </span><span>180000</span><span>,</span></div></div><div><div><div>520</div></div><div><span>    </span><span>"ruleBookInfo"</span><span>: {</span></div></div><div><div><div>521</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.data.author"</span><span>,</span></div></div><div><div><div>522</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.data.pic"</span><span>,</span></div></div><div><div><div>523</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.data.intro"</span><span>,</span></div></div><div><div><div>524</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"$.data.kind"</span><span>,</span></div></div><div><div><div>525</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"@json:$.data.name"</span><span>,</span></div></div><div><div><div>526</div></div><div><span>      </span><span>"tocUrl"</span><span>: </span><span>"https://www.huanmengacg.com/index.php/bookapi/chapters?password=chiyu666&amp;id={{$.data.id}}&amp;size=5000"</span></div></div><div><div><div>527</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>528</div></div><div><span>    </span><span>"ruleContent"</span><span>: {</span></div></div><div><div><div>529</div></div><div><span>      </span><span>"content"</span><span>: </span><span>"$.data.content"</span><span>,</span></div></div><div><div><div>530</div></div><div><span>      </span><span>"imageStyle"</span><span>: </span><span>"SINGLE"</span><span>,</span></div></div><div><div><div>531</div></div><div><span>      </span><span>"replaceRegex"</span><span>: </span><span>"##&lt;p&gt;[^&lt;]*(?:幻梦|huanmengacg|最新最全|尽在幻梦)[^&lt;]*&lt;/p&gt;|&lt;p&gt;[—－</span><span>\\</span><span>-_＝=]{6,}&lt;/p&gt;##"</span></div></div><div><div><div>532</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>533</div></div><div><span>    </span><span>"ruleExplore"</span><span>: {</span></div></div><div><div><div>534</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.author"</span><span>,</span></div></div><div><div><div>535</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"@json:$.data.list"</span><span>,</span></div></div><div><div><div>536</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"https://www.huanmengacg.com/index.php/bookapi/detail?password=chiyu666&amp;id={{$.id}}"</span><span>,</span></div></div><div><div><div>537</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.pic"</span><span>,</span></div></div><div><div><div>538</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.intro"</span><span>,</span></div></div><div><div><div>539</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"$.kind"</span><span>,</span></div></div><div><div><div>540</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.name"</span></div></div><div><div><div>541</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>542</div></div><div><span>    </span><span>"ruleSearch"</span><span>: {</span></div></div><div><div><div>543</div></div><div><span>      </span><span>"author"</span><span>: </span><span>"$.author"</span><span>,</span></div></div><div><div><div>544</div></div><div><span>      </span><span>"bookList"</span><span>: </span><span>"@json:$.data.list"</span><span>,</span></div></div><div><div><div>545</div></div><div><span>      </span><span>"bookUrl"</span><span>: </span><span>"https://www.huanmengacg.com/index.php/bookapi/detail?password=chiyu666&amp;id={{$.id}}"</span><span>,</span></div></div><div><div><div>546</div></div><div><span>      </span><span>"coverUrl"</span><span>: </span><span>"$.pic"</span><span>,</span></div></div><div><div><div>547</div></div><div><span>      </span><span>"intro"</span><span>: </span><span>"$.intro"</span><span>,</span></div></div><div><div><div>548</div></div><div><span>      </span><span>"kind"</span><span>: </span><span>"$.kind"</span><span>,</span></div></div><div><div><div>549</div></div><div><span>      </span><span>"name"</span><span>: </span><span>"$.name"</span></div></div><div><div><div>550</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>551</div></div><div><span>    </span><span>"ruleToc"</span><span>: {</span></div></div><div><div><div>552</div></div><div><span>      </span><span>"chapterList"</span><span>: </span><span>"@json:$.data.list"</span><span>,</span></div></div><div><div><div>553</div></div><div><span>      </span><span>"chapterName"</span><span>: </span><span>"$.name"</span><span>,</span></div></div><div><div><div>554</div></div><div><span>      </span><span>"chapterUrl"</span><span>: </span><span>"https://www.huanmengacg.com/index.php/bookapi/content?password=chiyu666&amp;bid={{$.bid}}&amp;cid={{$.id}}"</span></div></div><div><div><div>555</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>556</div></div><div><span>    </span><span>"searchUrl"</span><span>: </span><span>"https://www.huanmengacg.com/index.php/bookapi/search?password=chiyu666&amp;key={{key}}&amp;page={{page}}&amp;size=20"</span><span>,</span></div></div><div><div><div>557</div></div><div><span>    </span><span>"weight"</span><span>: </span><span>100</span><span>,</span></div></div><div><div><div>558</div></div><div><span>    </span><span>"loginUrl"</span><span>: </span><span>""</span><span>,</span></div></div><div><div><div>559</div></div><div><span>    </span><span>"loginUi"</span><span>: </span><span>""</span></div></div><div><div><div>560</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>561</div></div><div><span>]</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/npee/wq408/</id>
      <title type="text">考研冲刺前的总结 —— 错题本（408）</title>
      <published>2026-10-01T00:00:00.000Z</published>
      <updated>2026-10-01T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/npee/wq408/"/>
      <summary type="text">考研冲刺前的总结 —— 错题本（408）</summary>
      <content type="html"><![CDATA[<section><h2>时间线<a href="#时间线"><span>#</span></a></h2><p>408 基础：第 2 周 - 第 11 周，共 10 周。完成 4 本书的基础部分。</p><p>408 基础重复：第 12 周 - 第 17 周，共 6 周。完成 4 本书的选择题 2 刷。</p><p>408 强化：第 18 周 - 第 26 周，共 9 周。完成 4 本书的强化，4 本书的选择题错题再解析，4 本书的大题研究，以及最后的过一下几本书。</p><p>408 真题以及模拟：第 27 周 - 第 30 周，共 4 周。卷子从 09 - 19 年的所有题模考 + 操作系统汪道选择题三刷 + 计组选择题部分三刷。</p><p>408 近些年真题以及三刷选择题复盘：第 31 周 - 第 32 周。王道计组选择题三刷，计网挑部分三刷，20-22 真题</p><p>408 真题复盘：第 33 周  - 第 34 周。真题深度复盘。</p><p>408 近些年真题：第 35 周 - 38 周：真题深度复盘扫尾以及 23-26 年真题的深度研究，模考 11 份卷子，与此同时继续复盘真题以及王道错的多的选择题</p></section>
<section><h2>DS 王道选择题 1 刷（补）<a href="#ds-王道选择题-1-刷补"><span>#</span></a></h2><p>由于时间过于久远，就不翻当初选错为什么了。</p><section><h3>DS 王道选择题 1 刷第 1 章<a href="#ds-王道选择题-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBr9q0Lx14eALMcGTh14n1NwHwOVf1gACWhRrG6jniFbvJwJ3LG7xAAEBAAMCAAN4AAM9BA" alt="1.1.3" /><figcaption>1.1.3</figcaption></figure><p></p><p>对于 A，顺序表指的是数组相关，包含了物理信息。</p><p>对于 B，哈希表有逻辑有物理，哈希表的物理指的是用数组模拟，或者使用链表。</p><p>对于 C，有序表没什么信息，可以选。</p><p>对于 D，显然有物理信息。</p><p>本题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBsBq0L2f1HI3U-dk1woRvysf7AbplgACXBRrG6jniFYMpJMTTQQbrgEAAwIAA3gAAz0E" alt="1.1.5" /><figcaption>1.1.5</figcaption></figure><p></p><p>本题应该选 C，属于背书题。</p><p>对于 ABD，不需要存储，而是实现。</p></section><section><h3>DS 王道选择 1 刷第 2 章<a href="#ds-王道选择-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBsFq0L38BFxs3mOc-_UUArglZ2Bw-QACXRRrG6jniFYCez-CSUVduwEAAwIAA3gAAz0E" alt="2.3.3" /><figcaption>2.3.3</figcaption></figure><p></p><p>本题应该选 A，注意这道题是节点内的地址，节点内的地址肯定是连续的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBsJq0L4xhhxQqG9TbBNVz8naVEPowwACXhRrG6jniFbXNjKZzR2WKgEAAwIAA3gAAz0E" alt="2.3.7" /><figcaption>2.3.7</figcaption></figure><p></p><p>本题应该选 C，在遍历 m 之后，直接把 m 后的指针指向后面的东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBsNq0L5dQ9i6sVDOhVKHQS-kxjZAKwACYRRrG6jniFYer9wY3m7DMwEAAwIAA3gAAz0E" alt="2.3.12" /><figcaption>2.3.12</figcaption></figure><p></p><p>本题应该选 D，线性表没有物理信息。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBsRq0L6MKBRsp17PH57bbBrzO231FAACYhRrG6jniFY3XCQVjseddQEAAwIAA3gAAz0E" alt="2.3.15" /><figcaption>2.3.15</figcaption></figure><p></p><p>本题应该选 D。纯模拟。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBsVq0L6k5pZnwcgdvZpg3FPpQVoaNwACYxRrG6jniFZSTqHBR8_IRQEAAwIAA3gAAz0E" alt="2.3.21" /><figcaption>2.3.21</figcaption></figure><p></p><p>本题应该选 C。头节点指针指向自己，也就是指向自己的值，而不是指向自己值的地址。</p></section><section><h3>DS 王道选择题 1 刷第 3 章<a href="#ds-王道选择题-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBshq0Npn-VOykxx4GjgQ8EoBVnyj6AACiRRrG6jniFZJKdGfw9hQBgEAAwIAA3gAAz0E" alt="3.1.26" /><figcaption>3.1.26</figcaption></figure><p></p><p>本题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBslq0Np-sDu27IIEOsfT6Y_lucVLOwACihRrG6jniFZsM4ad2RqVzwEAAwIAA3gAAz0E" alt="3.1.29" /><figcaption>3.1.29</figcaption></figure><p></p><p>本题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBspq0NqgQ1wBSUX84NHpD8OZkWNVsgACixRrG6jniFZsgmYuESVL-wEAAwIAA3gAAz0E" alt="3.2.11" /><figcaption>3.2.11</figcaption></figure><p></p><p>第 11 题应该选 D。对于 A，长度不是无限的，最起码也是磁盘限制。对于 B，顺序队列和链式队列出入队时间是一样的，对于 C 显然是可以的。</p><p>第 12 题应该选 B。对于 C 和 D，队列需要在双端操作，所以可以排除，对于 A 则是没有必要。</p><p>第 13 题应该选 A，对于 A 没法在双端操作，所以不选。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBstq0NtDsCk-mNOZNagQl8LYZxnyYAACjBRrG6jniFY4uEWmSxOxCQEAAwIAA3gAAz0E" alt="3.2.22" /><figcaption>3.2.22</figcaption></figure><p></p><p>本题应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBsxq0Nu7l98lNLWivMXmmNohVOqKLgACjRRrG6jniFYtT0j4q7TaXwEAAwIAA3gAAz0E" alt="3.3.4" /><figcaption>3.3.4</figcaption></figure><p></p><p>本题应该选 B，纯模拟题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBs1q0Nvi0EQIWJ5HRX-BIS7LiSbwpgACjhRrG6jniFaGOghiCYz5HQEAAwIAA3gAAz0E" alt="3.3.6" /><figcaption>3.3.6</figcaption></figure><p></p><p>第 6 题应该选 C。</p><p>对于 F(8)=F(6)+F(4)+1, F(6)=F(4)+F(2),F(4)=F(2)+F(0)，所以也就是递归调用 9 次。</p><p>第 7 题应该选 C。</p><p>F(5)=F(3)+F(1)，F(3)=2，F(1)=2，得到 4，所以第四个应该是 F(4)。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBs5q0NzIDBV6AAEqAmoAAXSLDdfqObxqAAKSFGsbqOeIVt_bjAABGG-4UgEAAwIAA3gAAz0E" alt="3.4.7" /><figcaption>3.4.7</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBs9q0Nz5Bf9XdLOy2kabeB0etewMbgACkxRrG6jniFYln_eryT33vwEAAwIAA3gAAz0E" alt="3.4.8" /><figcaption>3.4.8</figcaption></figure><p></p><p>第 7 题应该选 C。</p><p>第 8 题应该选 B。</p><p>这两道题用特值法最快，</p><p>我记得当时错 7-8 是因为把主对角线想成副对角线了。</p><p>第 9 题应该选 B。一般采用三元组存储，采用三元组存储失去随机特性。</p><p>第 10 题应该选 D。对于 1，显然第一行和最后一行不是；对于 2，0 也是元素。</p></section><section><h3>DS 王道选择题 1 刷第 4 章<a href="#ds-王道选择题-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtBq0N2zdSWUI6Pxc9c63CA7Q4KsmgAClRRrG6jniFbvbRFCmKe_OQEAAwIAA3gAAz0E" alt="4.2.9" /><figcaption>4.2.9</figcaption></figure><p></p><p>本题应该选 B。</p><p>当时错这个是因为没看到滑动距离。</p></section><section><h3>DS 王道选择题 1 刷第 5 章<a href="#ds-王道选择题-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtFq0N34ZbougtauYa7J6kNwApoRqgAClhRrG6jniFaArrub7wdkcQEAAwIAA3gAAz0E" alt="5.1.3" /><figcaption>5.1.3</figcaption></figure><p></p><p>本题应该选 A，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtJq0N4duUGOau4EosLu8coz-6ysxgAClxRrG6jniFa0Uj_4tvwXTQEAAwIAA3gAAz0E" alt="5.1.7" /><figcaption>5.1.7</figcaption></figure><p></p><p>本题应该选 D。</p><p>假设度为 1 的结点有 n1 个，则结点总数与边的关系为：3n3+2n2+n1+1=n3+n2+n1+n0，计算可得 9+n1=9+n1，无法确定 n1 具体是多少。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtVq0N-aXu6ov152DdY1282nYXB23wACnRRrG6jniFZpagyefwq0HQEAAwIAA3gAAz0E" alt="5.2.2" /><figcaption>5.2.2</figcaption></figure><p></p><p>第 2 题应该选 C。</p><p>第 3 题应该选 A。</p><p>对于 B，n0+n1+n2=n1+2n2+1。</p><p>对于 D，可能不存在。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtZq0OAETWJ2Oa_L95dLvHCwLUKNbwACohRrG6jniFYGJWOTMuL35wEAAwIAA3gAAz0E" alt="5.2.6" /><figcaption>5.2.6</figcaption></figure><p></p><p>本题应该选 D。</p><p>使用特值法，具有 1 个结点且高度为 1 的二叉树数目显然为 1，代入也就是 C 或者 D，对于 2 个结点且高度为 2 的二叉树，也可以得到 C 或 D，对于 3 个结点且高度为 3 的二叉树，可以构造出 4 个，所以应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtdq0OB7ftOHEyb3OdaR0wt12zkBMAACpRRrG6jniFZFZE1wof6dXwEAAwIAA3gAAz0E" alt="5.2.8" /><figcaption>5.2.8</figcaption></figure><p></p><p>本题应该选 C。</p><p>这道题的意思是说在所有可能的 n 的情况下找，而不是特定的 n 下下面是否存在。</p><p>所以一个二叉树有 2n 个结点，假设结点是 n0+n1+n2=n1+2n2+1，则 n0=n2+1，也就是必然存在奇数个 n1 结点，所以 C 是错的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBthq0OKLpp9atL8Q3BzDrJt9SRxZlgACqhRrG6jniFY0Ce0xDain-wEAAwIAA3gAAz0E" alt="5.2.25" /><figcaption>5.2.25</figcaption></figure><p></p><p>本题应该选 C</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtlq0OK9jcUjnhAq27iE_sVY4ktfbAACqxRrG6jniFb4r1NChwGtrwEAAwIAA3gAAz0E" alt="5.2.28" /><figcaption>5.2.28</figcaption></figure><p></p><p>本题应该选 A。</p><p>得存放所有的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtpq0OLyUw5sQYdjOz4bUV3PrYIHLQACrBRrG6jniFZ9q9CSlY8QWQEAAwIAA3gAAz0E" alt="5.3.1" /><figcaption>5.3.1</figcaption></figure><p></p><p>本题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1hq0f4ysFZgvaI5PTeBL8lEKkYJVAACSxtrG-BrkFZAeawLiF0nNwEAAwIAA3gAAz0E" alt="5.3.3" /><figcaption>5.3.3</figcaption></figure><p></p><p>注意是所有条件，所以应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1lq0f53ofmXJkJTAUez_PtFL-O5KAACTBtrG-BrkFbEfJ7OsG9k0QEAAwIAA3gAAz0E" alt="5.3.6" /><figcaption>5.3.6</figcaption></figure><p></p><p>本题应该选 B。访问页结点的顺序是一样的，只是访问根的顺序不一样。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1pq0f64MfB1hyTgOOhuHHaF5WJLGwACThtrG-BrkFYUWHRmNygyJwEAAwIAA3gAAz0E" alt="5.3.21" /><figcaption>5.3.21</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于这类题应该套到模型上去理解，例如本题升序序列改为降序序列，原本中序遍历的顺序是左根右，也就是要改成右根左的顺序，所以 CD 可以排除。</p><p>而要改成右根左，也就是递归的交换左子树，递归的交换右子树，所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1tq0f-WMXp0B801f5D49v1n0gqlRwACUBtrG-BrkFZiK6bePPVzhwEAAwIAA3gAAz0E" alt="5.3.23" /><figcaption>5.3.23</figcaption></figure><p></p><p>本题应该选 C。</p><p>2 个结点的线索二叉树线索为 3，采用特值法即可以迎刃而解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1xq0f_vn-r-N7SCx4Piej3OJHQ8owACURtrG-BrkFYEuVKOmgRwbQEAAwIAA3gAAz0E" alt="5.3.25" /><figcaption>5.3.25</figcaption></figure><p></p><p>第 25 题应该选 D。采用特值法，模拟一个 5 个结点只有🈶有孩子的树，可以观察到第一个结点的左孩子和最后一个结点的右孩子指向空。</p><p>第 26 题应该选 D。典型的代表是先序的先序和后序的后序。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB11q0gABpHVJhQdO_nnQiAaZ7cinW7AAAlIbaxvga5BW7ROjDTk397IBAAMCAAN4AAM9BA" alt="5.3.29" /><figcaption>5.3.29</figcaption></figure><p></p><p>本题应该选 A，绘制求解即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB15q0gAB2Gez1J85AAF2lBuolayh33yJAAJTG2sb4GuQVsKM9l4Pm7ojAQADAgADeAADPQQ" alt="5.3.31" /><figcaption>5.3.31</figcaption></figure><p></p><p>本题应该选 D。</p><p>先序遍历是根左右，中序遍历是左根右，中序遍历相反是右根左，所以根左右=右根左，也就是该树没有右孩子，所以 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB19q0gEw5kwsmgABpw64EGWYEKG4iiMAAlQbaxvga5BWNemxhbSBLfcBAAMCAAN4AAM9BA" alt="5.4.16" /><figcaption>5.4.16</figcaption></figure><p></p><p>本题应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2Bq0gFOiLscEU6sueDvZ2I7cFZx1wACVRtrG-BrkFZUkGW2ptoAAZkBAAMCAAN4AAM9BA" alt="5.5.6" /><figcaption>5.5.6</figcaption></figure><p></p><p>本题应该选 C。</p><p>哈夫曼树没有 n1 结点，由于有 5 个叶节点，所以由 n0+n1+n2=n1+2n2+1 可得 n0=n2+1，所以 n2=4。</p><p>所以一直向左，也就是 5 个。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2Fq0gHPG4RdPpO2gA6pW2KF_xVW2AACVhtrG-BrkFaHjioQtA1VGAEAAwIAA3gAAz0E" alt="5.5.9" /><figcaption>5.5.9</figcaption></figure><p></p><p>本题应该选 C，属于结论算是。不过用特值法也可以做。</p></section><section><h3>DS 王道选择题 1 刷第 6 章<a href="#ds-王道选择题-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2Jq0gzP3gZ0nHJPYhBxMtIeisXWiwACaRtrG-BrkFYuXJKS_TOeDgEAAwIAA3kAAz0E" alt="6.1.6" /><figcaption>6.1.6</figcaption></figure><p></p><p>本题应该选 A。前者最少为树，后者最少为环。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2Nq0g4xlgGYEjg-39qChEOyLabaUQACbBtrG-BrkFZitOg2pjTctgEAAwIAA3gAAz0E" alt="6.1.10" /><figcaption>6.1.10</figcaption></figure><p></p><p>第 10 题应该选 D。</p><p>对于 1，连通分量的意思是要撑满，所以 1 是错的。</p><p>对于 2 和 3 是对的。</p><p>第 11 题应该选 C。</p><p>利用几个结点构成最大的，也就是 7×6/2=21，也就是扣了 7 个结点，51-7=44，所以总共是 45。</p><p>第 12 题应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2Rq0g9SNrXgldPirKJC4jq73xs3rwACbhtrG-BrkFZPam9oIZs7wAEAAwIAA3gAAz0E" alt="6.1.16" /><figcaption>6.1.16</figcaption></figure><p></p><p>第 16 题应该选 C。</p><p>第 17 题应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2Vq0g-l5Vs2LKxN5o3TLj91VwK1MAACbxtrG-BrkFbI7GqzhhyrrwEAAwIAA3gAAz0E" alt="6.2.1" /><figcaption>6.2.1</figcaption></figure><p></p><p>本题应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2Zq0g_JH5CVYgrJjk8i3ttpb_W3dAACcBtrG-BrkFYIwKa498-WVAEAAwIAA3gAAz0E" alt="6.2.5" /><figcaption>6.2.5</figcaption></figure><p></p><p>BD。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2dq0g_szd2W4TgKV58L1I4G7wJ-4wACcRtrG-BrkFbwRF6DsR6BzwEAAwIAA3gAAz0E" alt="6.3.2" /><figcaption>6.3.2</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1 显然错误。</p><p>对于 2，不存在回路，考虑一个结点下有多个结点，未标记则会重复访问。</p><p>对于 4，可以考虑 1-&gt;2-&gt;3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2hq0hIHy0Ya505LmcHsuodQ0NATUAACdRtrG-BrkFZkR--KFlbP2gEAAwIAA3kAAz0E" alt="6.3.8" /><figcaption>6.3.8</figcaption></figure><p></p><p>本题 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2lq0hJDOnGRzOMAAXYQBnrFmrND7bAAAnYbaxvga5BW64snOnVAS6QBAAMCAAN5AAM9BA" alt="6.3.17" /><figcaption>6.3.17</figcaption></figure><p></p><p>本题应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2pq0iFtJVNuCfYaFuqnZMLozRmTFwACtxtrG-BrkFbvMHAnhESeVwEAAwIAA3gAAz0E" alt="6.4.3" /><figcaption>6.4.3</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 1，显然成立。</p><p>对于 2，假设该图所有权值最小的边刚好全选构成了无向图，那么这课树就是唯一的，所以不选。</p><p>对于 3，假设这 n-1 条权值最小的边刚好构成了一个环，那么就不是最小生成树。</p><p>对于 4，含有 n 个顶点，假设选取另外 n-1 个顶点刚好构成环，那么就不是最小生成树。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2tq0iJV7dwLTVwCUCBCwCK4S1FSmAACuRtrG-BrkFaZJdwNNb6dJgEAAwIAA3gAAz0E" alt="6.4.8" /><figcaption>6.4.8</figcaption></figure><p></p><p>本题应该选。</p><p>对于 1，迪杰斯特拉算法不能使用负权边。</p><p>对于 2，迪杰斯特拉算法求每一对顶点间的时间复杂度，这里要注意是每一对，也就是每一条路，需要求 n 次，所以应该是 O(n^3)。</p><p>对于 3，属于背诵，是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB2xq0iLMqavCD5ZdzsJ-1vaJM1YXJQAC3xtrG-BrkFaMJp8i5Qv22wEAAwIAA3gAAz0E" alt="6.4.10" /><figcaption>6.4.10</figcaption></figure><p></p><p>第 10 题应该选 D。</p><p>第 11 题应该选 I 和二，答案错了，三跟四都是错的，广搜也没办法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB21q0iO7rZuHOHYoEzoDgGtnwXTrYwAC4RtrG-BrkFZfGa50CGCXggEAAwIAA3gAAz0E" alt="6.4.13" /><figcaption>6.4.13</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，有向图存在环路，则必不可能存在拓扑排序。</p><p>对于 2，拓扑排序暂存入度为 0 的点可以使用队列也可以使用栈，典型的例子是使用 BFS 入队实现拓扑排序，第二是利用 DFS 退栈的时候逆向输出。</p><p>对于 3，如答案图所示。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3Nq0xV7E2ZYwCx7fcz_c8YvkI7ZDgACChlrG-BrmFZEg_oWoenpzAEAAwIAA3gAAz0E" alt="6.4.13 解" /><figcaption>6.4.13 解</figcaption></figure><p></p><p>对于 4，出度为 0 的结点不唯一，那么这些结点就都可以作为拓扑排序的终点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3Vq0xW0saBX7A88m0c4GIClctxFAQACCxlrG-BrmFZhl-Zw7WgLpgEAAwIAA3gAAz0E" alt="6.4.15" /><figcaption>6.4.15</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，有多个出度为 0 的点，恰恰说明了这些点是拓扑排序的终点。</p><p>对于 B，很容易想到环，但是如果是先笔直的出去然后再接一个环，这样就不是强连通图了。</p><p>对于 C，有多个入度为 0 的点，恰恰说明了这些点是拓扑排序的起点。</p><p>对于 D，含有顶点数大于 1 的连通分量，意思是必然有一个环。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3Zq0xZ8eorlWjd5Vru-EO-nxuL4XwACDBlrG-BrmFY4XnPa7LdqkwEAAwIAA3gAAz0E" alt="6.4.19" /><figcaption>6.4.19</figcaption></figure><p></p><p>本题应该选 C。如果这道题去掉了有序两个字，那么应该选 D。</p><p>意思就是，本来完成任务 1 之后才能完成任务 2，然后故意把任务 1 标记为 2，任务 2 标记为 1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3dq0xfVj2L4qcNKueUeOlGqNzxU4AACDRlrG-BrmFYO8bfF99uk3wEAAwIAA3gAAz0E" alt="6.4.22" /><figcaption>6.4.22</figcaption></figure><p></p><p>本题应该选 C。</p><p>关键路径长度是最长的，按照题设，答案应该是 18。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3hq0xgkkdgudbC1Z23hAAE-pdG4F0EAAg4Zaxvga5hWc3exhGs4ywABAQADAgADeAADPQQ" alt="6.4.24" /><figcaption>6.4.24</figcaption></figure><p></p><p>本题应该选。</p><p>对于 A，关键路径是以拓扑排序为基础的，显然正确。不过关键路径唯一推导不出来拓扑排序唯一，拓扑排序唯一也推导不出来关键路径唯一，因为关键路径并不需要所有结点都包含，重点在于路径。</p><p>对于 B 和 D 说法正确，对于 C 胡言乱语。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3lq0xkxf9KZ9E4Q-lCBh74D8WTecwACEBlrG-BrmFbjQHIncOAI-AEAAwIAA3gAAz0E" alt="6.4.29" /><figcaption>6.4.29</figcaption></figure><p></p><p>C</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3pq0xlLe693yW4tV6SWOCKV14X8DQACEhlrG-BrmFYRJ2AAAcWoLKEBAAMCAAN4AAM9BA" alt="6.4.36" /><figcaption>6.4.36</figcaption></figure><p></p><p>B</p></section><section><h3>DS 王道选择题 1 刷第 7 章<a href="#ds-王道选择题-1-刷第-7-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3tq0xmj0mLzaegLoAkHfeLwfl_ukAACExlrG-BrmFZ8XnhNgzgsiQEAAwIAA3gAAz0E" alt="7.2.2" /><figcaption>7.2.2</figcaption></figure><p></p><p>本题应该选 B，单纯想当然没有算导致的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3xq0xnUsEvlHNY0OTcB-79cNsqw3AACFBlrG-BrmFYnGdmNjahFdgEAAwIAA3gAAz0E" alt="7.2.8" /><figcaption>7.2.8</figcaption></figure><p></p><p>本题应该选 B。折半查找判定树本质是一棵二叉平衡树。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB31q0xnnZJh-fPidRdlJ3Tw4iU1vdgACFRlrG-BrmFbmlrdZWuHXAwEAAwIAA3gAAz0E" alt="7.2.15" /><figcaption>7.2.15</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，还需要顺序存储；对于 B，折半查找本质是二叉平衡树，所以最坏情况下二叉查找树时间性能应该更差；对于 C，这班查找平均查找长度得看元素位置，假设元素位于最左边，那么显然不是；对于 D，显然正确。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB35q0xqjcSf0kIac-b6DsMNNa3mw_QACFxlrG-BrmFaKSBqv9yUhoQEAAwIAA3gAAz0E" alt="7.5.2" /><figcaption>7.5.2</figcaption></figure><p></p><p>本题应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB39q0xrmiPu9GSe2o4zNSuFWnCwSrgACGBlrG-BrmFYCqcwfAkrCfQEAAwIAA3gAAz0E" alt="7.5.8" /><figcaption>7.5.8</figcaption></figure><p></p><p>第 8 题应该选 C。不能按照平时学算法的角度来想这道题。</p><p>第 9 题应该选 D。</p></section><section><h3>DS 王道选择题 1 刷第 8 章<a href="#ds-王道选择题-1-刷第-8-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4Bq0xs7NtbvvAZucR70lfr1XQwSnAACGRlrG-BrmFbYTOoy0GaxgwEAAwIAA3gAAz0E" alt="8.1.3" /><figcaption>8.1.3</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 A，得看使用场景，而且快排的性能在大多数情况下优于其他很多排序，例如简单选择排序。</p><p>对于 C 和 D 可以举直接插入排序和快排的例子排除。</p><p>对于 B，这里的排序结果不同，可以指的是对结构体中的某一个元素排序，然后最后导致结构体顺序不一样。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4Jq0xwSAXTY8UWnKsENoVtYqlEgWQACGxlrG-BrmFYmbD4Eo1J6ZQEAAwIAA3kAAz0E" alt="8.2.8" /><figcaption>8.2.8</figcaption></figure><p></p><p>本题应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4Nq0xw8ohjeSaeSgSuLLVuXV-CViQACHRlrG-BrmFZdpdMDGCYh5gEAAwIAA3gAAz0E" alt="8.3.5" /><figcaption>8.3.5</figcaption></figure><p></p><p>本题应该选 D。排除 A 和 C，看 B 和 D，对于多个相同值值这类情况可以规避，或者说可以采用三数取中法进行优化，并且影响也不如基本有序。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4Rq0xzFXkFf1xBFTW_-SH38fhYu6gACIxlrG-BrmFazxIRjDNFB1gEAAwIAA3gAAz0E" alt="8.3.10" /><figcaption>8.3.10</figcaption></figure><p></p><p>第 10 题应该选 AD。对于花费最快的情形，应该是每次选取轴的时候，尽可能均匀划分。</p><p>第 11 题应该选 B。纯模拟。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4Vq0x0ZnzM87lpF7D-LOx0FGwW1yAACJBlrG-BrmFYvzZyymkgRtAEAAwIAA3gAAz0E" alt="8.3.15" /><figcaption>8.3.15</figcaption></figure><p></p><p>本题应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4Zq0x0uwvXZTfovX-amGpnNSaFP1wACJRlrG-BrmFY1pm65KRe0lAEAAwIAA3gAAz0E" alt="8.3.18" /><figcaption>8.3.18</figcaption></figure><p></p><p>本题应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4dq0x1czjySofHibwYF5_XhpGmy4AACJxlrG-BrmFb-XejqxJ7ksgEAAwIAA3gAAz0E" alt="8.5.6" /><figcaption>8.5.6</figcaption></figure><p></p><p>本题应该选 B。</p><span><span><span>N≤mSN \le m^{S}</span><span><span><span></span><span>N</span><span></span><span>≤</span><span></span></span><span><span></span><span><span>m</span><span><span><span><span><span><span></span><span><span><span>S</span></span></span></span></span></span></span></span></span></span></span></span></span><p>本质上是构建 m 叉归并树，也就是。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4hq0x88qYlOPBSgFWKTxrnnIL86rgACLBlrG-BrmFYbZ6gt70mTJAEAAwIAA3gAAz0E" alt="8.5.10" /><figcaption>8.5.10</figcaption></figure><p></p><p>本题应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4lq0x-E2dr1yfPWLsZ_itABFJETBgACMRlrG-BrmFZYXQvLA6z1yQEAAwIAA3gAAz0E" alt="8.6.3" /><figcaption>8.6.3</figcaption></figure><p></p><p>本题应该选 C</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4pq0x-9RIeL-TnKkPmh64soQYTJPgACMxlrG-BrmFbdQmIJQpuM-wEAAwIAA3gAAz0E" alt="8.6.8" /><figcaption>8.6.8</figcaption></figure><p></p><p>本题应该选 C。教材里的冒泡排序默认是有 flag 的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4tq0x_1VQfUQdb1OBlljdlfIquabAACNBlrG-BrmFaS9Hf3JH1TVgEAAwIAA3gAAz0E" alt="8.6.10" /><figcaption>8.6.10</figcaption></figure><p></p><p>第 10 题应该选 A。对于 A，A 问的是折半插入排序本身、简单选择排序本身的比较次数，而不是对比这两者。包括我也想成了折半插入排序和直接插入排序比较比较次数了。</p><p>第 11 题应该选 C，堆不是查找的数据结构。</p><p>第 12 题应该选 A，其他两个都有子步骤，所以无所谓。</p></section></section>
<section><h2>计组王道选择题 1 刷（补）<a href="#计组王道选择题-1-刷补"><span>#</span></a></h2><section><h3>计组王道选择题 1 刷第 1 章<a href="#计组王道选择题-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhBqx74qXxEDY63kUIb8GyY-_oofdAACHBNrGz_BQFYBv7FfOvSdoAEAAwIAA3gAAz0E" alt="1.2.5" /><figcaption>1.2.5</figcaption></figure><p></p><p>第 5 题错选为 B。本题没有搞清楚谁为谁提供服务，纯凭感觉选的。对于这道题，正确的理解方式应该是 2 刷那样，谁为谁提供服务。机器语言是硬件本身的，操作系统是最接近硬件的一层软件。</p><p>第 6 题错选为 B。ISA 是指令体系结构，是计算机软/硬件之间的接口，而微体系结构是处理器内部的硬件组织方式，用于实现 ISA 定义的功能。如果说 ISA 定义了做什么，那么微架构定义了怎么做。以 x86 为例，不同的处理器遵循同一套规范，但是内部组织方式差别显著。根据课本 p6 的材料再来看这道题：对于 A，显然是错误的，机器上执行的只有机器指令；对于 B，ISA 定义指令功能，定义了指令格式，操作类型，寻址方式，可访问寄存器等，因此强关联硬件；C 由材料可知；对于 D，即便是解释类语言，也并非一一对应，一条可能会被翻译为多条机器指令。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhFqx75xpIHo-SvV4oMPbhRsEdwBygACHRNrGz_BQFZMGjkYJBt5MwEAAwIAA3gAAz0E" alt="1.3.4" /><figcaption>1.3.4</figcaption></figure><p></p><p>错选为 B。CPI 指的是一条指令平均需要多少时钟周期，显然和时钟频率无关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhJqx76FkLCZdzoSZ5hwN0y_h_8a5wACHhNrGz_BQFa1FI5lAmgIkwEAAwIAA3gAAz0E" alt="1.3.7" /><figcaption>1.3.7</figcaption></figure><p></p><p>错选为 C。原因和 2 刷时一致，没有理解字长也是评价计算机系统性能的指标。</p></section><section><h3>计组王道选择题 1 刷第 2 章<a href="#计组王道选择题-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhNqx767Lyr1C7wP-NYcVjaMMx8GmgACHxNrGz_BQFYt916U1ZFOzgEAAwIAA3gAAz0E" alt="2.2.11" /><figcaption>2.2.11</figcaption></figure><p></p><p>本题错选为 C。模 4 补码指的是两个符号位进行运算，对于这个细节，尤其需要注意在存储的时候不可能出现 10，01 等情况，存储的符号是确定的，也就是必然为 00 或者 11，因此只需要存储 1 位即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhRqx77fcregJ1fkcyt8-_9F8ISzEAACIBNrGz_BQFYjP6UnwQGndQEAAwIAA3gAAz0E" alt="2.2.18" /><figcaption>2.2.18</figcaption></figure><p></p><p>第 18 题错选为 C。本题没有理解加法器的底层原理，对于加法器而言，-y 只取反码，而最后的 +1 靠的是 cin 前一位的进位。</p><p>第 19 题错选为 C。与 18 题一样的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhVqx7733USZSctBMxU0wneN2ELsXAACIRNrGz_BQFat0KVGcuZo2QEAAwIAA3gAAz0E" alt="2.2.21" /><figcaption>2.2.21</figcaption></figure><p></p><p>第 21 题错选为 B。DCH 即 1101 1100，×2 即 1011 1000，-2y 的补码也就是 0100 1000，所以 0100 0100H+0100 1000H=1000 1100H。由于原来是两个正数相加，却得到了负数，所以溢出（根据草稿来看其实是算对了，但是想错了）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhZqx78UWg--XLfeoBxFkYFZ67xdKwACJBNrGz_BQFZDgnqfyVfFUAEAAwIAA3gAAz0E" alt="2.2.29" /><figcaption>2.2.29</figcaption></figure><p></p><p>本题错选为 D。？我自己都看不懂我自己的草稿了。首先根据 FFFF FFDFH 可知 x=-1-32=-33，y=65……我大概知道我为什么错了，直接把 y 当 41 算了，导致全错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhhqx78v8J5sGQHwwi9Mcp3NEAr5vwACJhNrGz_BQFZhhNvYBp4rnAEAAwIAA3gAAz0E" alt="2.2.31" /><figcaption>2.2.31</figcaption></figure><p></p><p>本题错选为 B。FFFF FFFFH=-1,FFFF FFF0=-1-15=-16。OF=0，而对于 CF 也为 0。本题本质上是没有理解 CF 到底是怎么计算的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhlqx79d3ttTD1Dqwu4hF4CIuc5kbAACJxNrGz_BQFb53m3Ffxz-QAEAAwIAA3gAAz0E" alt="2.3.7" /><figcaption>2.3.7</figcaption></figure><p></p><p>第 7 题错选为 C。原码≠无符号数。</p><p>第 8 题错选为 B。与非规格浮点数相比，D 更对，但是为什么呢？因为规格化的意思就是把高位 0 抹去，只让有限的位数用来表述数字。</p></section><section><h3>计组王道选择题 1 刷第 3 章<a href="#计组王道选择题-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhtqx7-cZg4HSFnzJfIUV4ds1OFWwwACKBNrGz_BQFZqrvlZgy9mnQEAAwIAA3gAAz0E" alt="3.1.10" /><figcaption>3.1.10</figcaption></figure><p></p><p>第 10 题错选为 C。对于 1，显然正确，这就是 cache 思想；对于 2，虚拟存储器中主存和辅存之间的数据调动对于机器级语言程序员是透明的，但是再往上就不是了；对于 3，CPU 与主存交换信息可以不经过 cache，例如直写法。</p><p>第 11 题直接看的答案。每次读出 16b=2B，由于存储周期是 250ns，1s 内由 1s/250ns=1/(250×10^-9)=10^9/250=4×10^6 个周期，所以 4×10^6×2B=8×10^6B/s，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAhxqx7_LjzCf79HNzwEJ_KVFFQpD-QACKRNrGz_BQFZOAAEfiOGygWMBAAMCAAN4AAM9BA" alt="3.2.6" /><figcaption>3.2.6</figcaption></figure><p></p><p>本题错选为 B。属于低级错误。对于 A，随机存储器因为需要随机访问，而不应该挑选到只读存储器。深度分析一下，随机存储器比如说 RAM，只读存储器比如说 ROM；统一编址的意思是 CPU 不需要区分芯片到底是 RAM 还是 ROM，而是看成一个连续统一的内存地址，只需要将某一个地址段分出给 ROM，另外的地址段分配出去给 RAM，对 CPU 来说，它只需要发出一个地址，地址译码器电路就会自动帮 CPU 找到对应的芯片去读取数据。CPU 用的是完全相同的读写指令。</p><p>不需要统一编址的概念来源于 IO 设备。IO 设备有两种编制方式，一种是独立编址，例如 x86，地址可以相同，但由于属于不同的地址空间，所以不会发生冲突。CPU 通过专门的 IO 指令例如 in，out 来访问 IO 端口；统一编址将部分主存空间分配给 IO 端口，使 IO 端口与内存单元共享哦同一地址空间，CPU 使用普通的访存指令即可访问 IO 设备。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAh1qx8AIXHwvFyoYUFhjJHBCpui8jgACKxNrGz_BQFYo3j85whR2QwEAAwIAA3gAAz0E" alt="3.2.9" /><figcaption>3.2.9</figcaption></figure><p></p><p>本题错选为 A。DRAM 采用地址复用技术，所以 8 数据线 +10/2 地址线=13。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAh5qx8CG93bHFN3yZ9FtKd6TCzcUFQACLhNrGz_BQFbqgjpmgoTKqwEAAwIAA20AAz0E" alt="3.2.12" /><figcaption>3.2.12</figcaption></figure><p></p><p>第 12 题错选为 C。主存不包括 cache，而对于主存而言，其内部包含 BIOS，所以有一部分的 ROM。</p><p>第 13 题错选为 A。EPROM 采用的是电擦除，擦除次数有限，这里的随机存储器指的是 RAM，显然不可以作为 RAM。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAh9qx8DvKdjMPdCQ5tlaSCiTp3VoIAACMBNrGz_BQFa7aNWxcZzplQEAAwIAA3gAAz0E" alt="3.2.19" /><figcaption>3.2.19</figcaption></figure><p></p><p>本题错选为 A，DRAM 采用地址引脚复用技术，那么问题来了，如果数据线增加 8 根呢？和地址线是表示 2^n 不同，数据线表示的就是数据本身，也就是 8 位需要 8 根地址线，假设原本有 D 根地址线，那么也就是 (D+8)/D 倍。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAiFqx8EI7jwK0OTwyjPutDEd1Rgq4gACMRNrGz_BQFbXzrvhdNvkkQEAAwIAA20AAz0E" alt="3.2.21" /><figcaption>3.2.21</figcaption></figure><p></p><p>本题错选为 A。对于 A，DRAM 采用地址引脚复用技术，即 2^22，所以是 11；对于 B，由于采用的是地址引脚复用，所以仅需发送两次信号即可；对于 C，一行是 2^11，而数据是 4b，所以是 8Kb；对于 D，显然正确。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAiJqx8EfJ7inCppG-ciURrPxNxKvfgACMhNrGz_BQFaOwLNNtx53QgEAAwIAA3gAAz0E" alt="3.2.26" /><figcaption>3.2.26</figcaption></figure><p></p><p>本题错选为。首先辨析一下以下概念：</p><p>低位交叉编制，轮流启动（流水线），把连续的内存地址交叉分配给不同的存储模块，CPU 发起连续的读取时间，不需要等待前一个模块彻底结束，只需要等很短的总线传输周期 t 就可以向下一个模块发送命令；</p><p>地位交叉编址，同时启动（并行），CPU 直接向这 4 个模块发起读指令，然后再同一个时刻读取完毕。</p><p>单体多字，在物理上的字是普通字的 m 倍。与低位交叉编址类似同时启动可以达到相似的效果。</p><p>然后捋一下交叉编址带来的情况（指的是同时启动），假设有 4 个模块，同时启动只能读取同一个行下的 4 个字，第 0 行包含地址 0、1、2、3，第 1 行包含地址 4、5、6、7。</p><ol>
<li>如果 CPU 突然要连续读取 4 个字，但是起始地址是 1，此时 4 个模块同时工作，读出第 0 行 0、1、2、3，并且丢弃 0，但是缺少 4，只能等 1 个 T 然后取 4、5、6、7，并且丢弃 5、6、7</li>
<li>类比遍历二维数组，假设恰好要取 0、4、8、12，会被一直卡</li>
<li>预取失败，也就是预测分支先执行了一些，结果浪费指令</li>
</ol><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAiNqx8G5464nDrb_tXVOIHzjHmU6uwACMxNrGz_BQFYlfIj-JrTBigEAAwIAA3gAAz0E" alt="3.3.2" /><figcaption>3.3.2</figcaption></figure><p></p><p>本题错选为 C。显然这道题只需要字扩展即可。本题属于想当然的低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAiRqx8MPxFbJiwYoHlq9jZxRqgVsVwACNRNrGz_BQFYK9YDPnv8WeQEAAwIAA3gAAz0E" alt="3.3.6" /><figcaption>3.3.6</figcaption></figure><p></p><p>第 6 题错选为 B。对于这道题尤其需要注意高位和低位。这道题 4K×4 位需要 16 个，也就是位扩展 + 字扩展，其中字扩展需要 4，而 16KB 总共占 2^14 个地址，所以也就是需要第 13 和第 14 个地址（从 1 开始算起），对应到题目里，也就是 A2 和 A3。本题错在想当然认为存储用满。</p><p>第 7 题错选为 A。43FFH+1-4000H=4400H-4000H=400H=0100 0000 0000H，也就是 2^10，注意题设采用的是 4 块芯片，所以 2^10×16bit/4，从而选择答案。本题错在把 4 当 4 算，而不是当成 16 进制去算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAiVqx8M90GupShB8AAG35yKq0hcz48sAAjcTaxs_wUBWefRy1D3rIdMBAAMCAAN4AAM9BA" alt="3.3.6" /><figcaption>3.3.6</figcaption></figure><p></p><p>第 6 题错选为 B。对于这道题尤其需要注意高位和低位。这道题 4K×4 位需要 16 个，也就是位扩展 + 字扩展，其中字扩展需要 4，而 16KB 总共占 2^14 个地址，所以也就是需要第 13 和第 14 个地址（从 1 开始算起），对应到题目里，也就是 A2 和 A3。本题错在想当然认为存储用满。</p><p>第 7 题错选为 A。43FFH+1-4000H=4400H-4000H=400H=0100 0000 0000H，也就是 2^10，注意题设采用的是 4 块芯片，所以 2^10×16bit/4，从而选择答案。本题错在把 4 当 4 算，而不是当成 16 进制去算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAiVqx8M90GupShB8AAG35yKq0hcz48sAAjcTaxs_wUBWefRy1D3rIdMBAAMCAAN4AAM9BA" alt="3.3.8" /><figcaption>3.3.8</figcaption></figure><p></p><p>本题错选为 A。CFFFFH+1-90000H=D0000H-90000H=40000H=0100 0000 0000 0000 0000H，即 2^18，16K=2^14，所以需要 16 片。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAidqx8NuUv2DG2no6mfqiGnVf5OXtAACOBNrGz_BQFZ4X9jw3GmrNwEAAwIAA3gAAz0E" alt="3.3.11" /><figcaption>3.3.11</figcaption></figure><p></p><p>本题不知道为啥放进来了，而可能是当时没思路。8K×8bit/2K×4bit=8 个，而其中每 2 个组成一个完整的字，所以实际上其实是 4 个 2K×8bit 的芯片，由于默认采用的是高位交叉编址，2^13-1=10 0000 0000 0000-1=1FFFH。也就是说 A12 和 A11 可以用来当符号位，所以根据 0000 1011 0001 1111H 来看，是 01 组，也就是第 2 组，第 2 组起始地址是 0000 1000 0000 0000H，也就是 0800H。</p><p>需要注意，这种题是求一个范围！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAihqx8OJhCZhpsEJFk2jTfVsgXN_DgACORNrGz_BQFakkthwkJkB-wEAAwIAA20AAz0E" alt="3.4.2" /><figcaption>3.4.2</figcaption></figure><p></p><p>第 2 题错选为 C。对于 A，磁盘驱动器由磁道/柱面、磁头号/盘面号、扇区号组成，对于这一题的记忆可以联想磁盘的寻址，也就是磁盘移动磁盘/柱面是最好耗时的，而改变盘面不会那么耗时。</p><p>第 3 题没选出来。显然 D 是错的，CPU 交换信息必须要经过 cache/内存。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAilqx8PRSxKL4qo0CfUC-u7-a4OMzQACOhNrGz_BQFa29FI9OxPRUQEAAwIAA3gAAz0E" alt="3.4.5" /><figcaption>3.4.5</figcaption></figure><p></p><p>第 5 题没选出来。固态硬盘的读/写是以页为单位的，擦除是以块为单位的。</p><p>第 6 题不知道为啥放在这里了。显然 D 是错的。</p><p>第 7 题不知道为啥放在这里了。一个磁盘转速为 7200 转/分=120 转/s，假设磁盘运行 1s，也就是转 120 次。120×160×512B=960KB。</p><p>第 8 题不知道为啥放在这里了。假设总共运行时间为 1s，则由于有 8 个扇区，所以磁盘在旋转一周的有效读取时间为 25ms-1.25s×8=15ms，一个磁道包含信息 60MB/200=0.3MB，所以 0.3MB/15ms=20MB/s</p><p>第 9 题不知道为啥放这里了。读取时间：4KB/20MB/s=0.2ms；延迟：0.2ms；平均寻道时间：6ms；磁盘转到那个地方：10000 转/分，也就是 1 转/0.0001 分，所以半转也就是 0.00005min 也就是 3ms。总共加起来，也就是 9.4ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAipqx8PzqsnQfLUPc6Q_hpf_PP71NAACOxNrGz_BQFYsSj-h60_Y5wEAAwIAA3gAAz0E" alt="3.4.11" /><figcaption>3.4.11</figcaption></figure><p></p><p>第 11 题不知道为啥放在这里。7200 转/分=120 转/s，即 1 转/ 1/120s，也就是平均转半圈需要 1/240s 所以 8ms+1/240s=12.167ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAitqx8QOLc8QhVwj4DWwS7GgJmgycQACPBNrGz_BQFashudZaIWkfwEAAwIAA3gAAz0E" alt="3.5.14" /><figcaption>3.5.14</figcaption></figure><p></p><p>本题错选为 B。直接映射，随即替换和全写法均不需要额外位，cache 本身需要一个有效位，对于标记信息，也就是 12 位 tag，所以最终需要 12+1bit 也就是 13bit。</p><p>对于这题分析一下要存储的信息是什么，直接映射也就是说分成 64 组，“组”这个信息是可以算出来的，所以不需要保存，真正需要比较的是 tag。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAixqx8QkTfPCLuiEtZAF_gABbxrT6DcAAj0Taxs_wUBW2sPzUM3Qc1kBAAMCAAN4AAM9BA" alt="3.5.20" /><figcaption>3.5.20</figcaption></figure><p></p><p>第 20 题错选为。由于块大小为 16B，分别将上述单元变为 cache 行号。</p><p>A：52/16=3，102/16=6；B：48/16=3，308/16=19；C：60/16=3，160/16=10；D：46/16=2，236/16=14。显然对比之下可以发现，本题应该选择 B。这道题错误是因为没有意识到多少号单元实际上指的不是块号。</p><p>第 21 题错选为 C。一点一点分析，1 个字=32bit=4B，所以块内地址为 2，由于采用全相联，没有 cache 行号，所以有 30bit 用来存 tag。cache 本身需要 1 个有效位，回写法需要 1 个脏位，所以总共是 32 位。由于存放的数据是 1 字，所以总共 64 位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAi1qx8RDROjsksI7XMIVfXVEEB9zVQACPhNrGz_BQFb0bQfn7px7tQEAAwIAA3gAAz0E" alt="3.5.25" /><figcaption>3.5.25</figcaption></figure><p></p><p>第 25 题错选为 D。需要注意，在实际运行过程中，直接映射并不是顺序下来存的，而是随机存的，然后加时间戳或者先后顺序。</p><p>或者可以注意下这种做法，其实不是时间戳。对于这个是固定顺序：第逻辑 0 换，第逻辑 1 换，到第逻辑 N-1 换，然后从逻辑 0 换。Logn 个。</p><p>第 26 题错选为 A。主存块通常和 cache 的大小块一致，但是也只是块，而非 cache 容量，以三级 cache 举例，1 级缓存 64KB，二级缓存 1MB，三级缓存 32MB，所以容量是和 cache 块大小是无关的；而主存块从小变大，cache 缺失率会先变低再变高。块太大会导致总房间数 N 变小，从而产生抖动。</p><p>但是和页表相比，页表的块越大缺失率越低，这是因为页表只存地址，不存数据，完全不会影响。事实上应该从视角的角度出发，假设 cache 角度为 32KB，块大小为 64 字节时，有 512 个 cache 行，而块大小变为 4KB 时，仅有 8 个 cache 块；假设主存有 16GB，不管采用页大小 4KB（四百万），还是采用 2MB 的页（8000 多），都不会发现太少而抖动的情况。页变大之后，TLB 还可以几乎完全命中。</p><p>这是为什么呢，本质上是因为 cache 缺失只需要去主存读，也就是只需要花几 ns，而页表缺失需要去外存读，可能需要几 ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAi5qx8RkgstRpoqNLG7TjP2qRh5TbQACPxNrGz_BQFZsP27wnOpWEwEAAwIAA3gAAz0E" alt="3.6.2" /><figcaption>3.6.2</figcaption></figure><p></p><p>第 2 题错选为 B。不全</p><p>第 3 题错选为 C。学了操作系统就知道这道题应该是 D 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAi9qx8R22cLyjC4ESaGy5v2Jl3MsggACQBNrGz_BQFaTUvQi7EIfSwEAAwIAA3gAAz0E" alt="3.6.12" /><figcaption>3.6.12</figcaption></figure><p></p><p>本题错选为 C。ABC 显然成立，分析 D，由于调入 TLB 的必在 Page 内，即便该进程下处理机，也会有专门的硬件将 TLB 内的有效位修改为 0，所以不可能出现 D 这种情况。</p></section><section><h3>计组王道选择题 1 刷第 4 章<a href="#计组王道选择题-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjBqx8SZSIOc3mFdxQGyDcny2t8yagACUhNrGz_BQFZkiaYpDOKXSQEAAwIAA20AAz0E" alt="4.1.5" /><figcaption>4.1.5</figcaption></figure><p></p><p>本题错选为 D。对于 ABD，本质上都是在控制程序流；对于 C，中断隐指令是程序由操作系统调度由 CPU 本身执行的（也就是硬件执行的指令），所以并不是程序控制类指令。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjFqx8ToNeclhDDTiCUZ_TY8vYIMgwACUxNrGz_BQFadCPnFQmHtJAEAAwIAA20AAz0E" alt="4.1.8" /><figcaption>4.1.8</figcaption></figure><p></p><p>本题错选为 A。回顾扩展操作码的概念，其并不是减少指令字长度，而是采用哈夫曼树的思想。使操作码长度随地址码的减少而增加，并没有减少指令的长度。（比如说操作码 1bit，地址码 3bit，以及操作码 3bit，地址码 1bit）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjJqx8bWsD7VMZVrs57ejN4DIDW-RAACWBNrGz_BQFbrKmfup0oS9AEAAwIAA20AAz0E" alt="4.2.1" /><figcaption>4.2.1</figcaption></figure><p></p><p>本题错选为 D。属于想当然错误。对于 A，显然采用扩展操作码增加译码难度；对于 C，采用不同寻址方式和程序控制无关系，程序控制一般都是采用相对寻址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjNqx8brLD2i8aaaIg98l1aNDOU2vAACWRNrGz_BQFYzlqqh9c1RggEAAwIAA3gAAz0E" alt="4.2.3" /><figcaption>4.2.3</figcaption></figure><p></p><p>第 3 题错选为 C。一般而言，寄存器的个数非常少，所以最短的地址（如果有）是寄存器寻址。注意，这里指的是地址码，而不是最终需要获取到的地址位。</p><p>第 4 题错选为 C。何为简化，也就是原来需要 2 个地址码现在只需要 1 个。对于隐含寻址而言，其操作数地址默认来自于 ACC。举两个例子，对于 1 位操作数的指令而言，不需要指明地址，因为已经隐含在 ACC 里了，例如取反，对于 2 位操作数而言，只需要指令一个操作数地址，另一个隐含在 ACC 里，例如相加。</p><p>第 5 题错选为 D。显然，获取操作数最快的应该是立即数寻址，数本身就是操作数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjRqx8cEfVCBUcG5VM1QtIwVzzO4RQACWhNrGz_BQFYi-IPh8JP6aQEAAwIAA20AAz0E" alt="4.2.9" /><figcaption>4.2.9</figcaption></figure><p></p><p>本题错选为 C。PC 自动 + “1”。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjVqx8dZ-Ocm84XYD2zjr-PiGmHV1wACXBNrGz_BQFYks-VcHSDXmwEAAwIAA3gAAz0E" alt="4.2.15" /><figcaption>4.2.15</figcaption></figure><p></p><p>本题错选为 D。由于存储字长=指令字长，所以有 16 位可以存储指令。97 种操作意味着需要 2^7=128，也就是 7 位；而寻址方式有 6 种，所以需要 2^3=8，也就是 3 位存储寻址方式。还剩下 16-7-3=6 位，采用补码表示即 -32-31。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjZqx8d0EaHs8aqdrHv0S9lIan5iSgACXRNrGz_BQFY3NHU4mIL4GgEAAwIAA3gAAz0E" alt="4.2.17" /><figcaption>4.2.17</figcaption></figure><p></p><p>第 17 题错选为 B。寄存器寻址意味着操作数在寄存器内，寄存器寻址意味着操作数的地址在寄存器里，一定要看清楚题目问了什么。</p><p>第 18 题没有理解题目的意思，这题的意思是说选两个选项。PC 当前值为 240，由于自动 + “1”，并且由题目可知地址为 2B，所以到了 242，290-242=48，由于 48=0000 0000 0011 0000H=0030H，采用小端方式，</p><p>上面的解释是错的，可以联想真题的大题，得知事实上应该 + 指令长度的大小，也就是 3B，所以这里的 + “1”意思是 +3B，也就是到 243，290-243=47=0000 0000 0010 1111=002FH，由于采用小端方式，所以存储为 2F 00；同理，243-200=-43，-43=1111 1111 1101 0100=FFD5H，采用小端方式，即 D5 FF。</p><p>之所以想错，是因为想着指令字长不可变。</p><p>第 19 题错选为 A。LSB 指的是低地址部分。将 FF00H 扩展为 FFFF FF00H，即 EA=C000 0000H+FFFF FF00H=BFFF FF00H，由于采用的是大端法表示，所以 AB 存储在 BFFF FF00H 里，CDH 存储在 BFFF FF01H 里，00H 存储在 BFFF FF02H 里，FFH 存储在 BFFF FF03H 里。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjdqx8fgeB-YG6_KPNchqwE99OJnxQACXhNrGz_BQFbUymLOAAFtXccBAAMCAAN4AAM9BA" alt="4.2.21" /><figcaption>4.2.21</figcaption></figure><p></p><p>本题错选为 D，理由也是没有捋清楚这里的 + “2”的具体意思以及没有捋清楚 CF，OF 等的作用。题设说明采用双字节字长指令，即 1 指令长=2B，由于采用 Imm8，也就是 8 位数，范围为 -128-127，带入公式可得偏移的具体单位最后/2，即 D 选项。若 bgt 采用的是无符号整数的比较，如果两个数字相加没有溢出或者相减没有溢出，在无符号数里必然为正数，所以 CF=0，加上一个 0，所以转移条件就是 CF+ZF=0。若 bgt 是有符号数的比较，则有符号数溢出的标志为 SF，假设两个小负数相加，那么 SF=1，OF=0，1 异或 0=1，可得该选项错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjhqx8f-ym6qp9q1MOT5E4oNSc3bkQACYBNrGz_BQFaEHeLWlv_wcwEAAwIAA3gAAz0E" alt="4.3.2" /><figcaption>4.3.2</figcaption></figure><p></p><p>第 2 题错选为 D。本题是 CF 理解不清晰，对于 sub bx，ax，显然够减，所以 CF=0。7FE6-FFE8=7FE6+0018，显然不会溢出，所以 OF 也是 0。</p><p>第 3 题错选为 A。由于采用小端存储，根据题目，xxxx 对应的是 imm 的机器码，所以由于 immm=-3=FFFDH，且采用小端存储，所以 2D FD FFH。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjlqx8gXyVAx4fDUUOrtbQ01x1tcqgACYRNrGz_BQFajNokMTJkTIgEAAwIAA3gAAz0E" alt="4.3.6" /><figcaption>4.3.6</figcaption></figure><p></p><p>本题错选为 B。注意存储地址，i 存储在 eax 里，j 存储在 edx 里，由于题目为 i&lt; j，显然这是不成立的，所以根据下一条指令需要跳转。根据题设可知 804846cH 为 2 字节指令，所以 PC=804846EH，再 +0dH，可得 27=16+11，也就是 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjpqx8iXlLwsAXFuytOhMhSFoBD-BgACZBNrGz_BQFb1rGcqz4N1pAEAAwIAA3gAAz0E" alt="4.3.11" /><figcaption>4.3.11</figcaption></figure><p></p><p>本题错选为 A。在 C 语言里写一个过程调用，经过编译后对应一个 call；对于 D，必须得告诉 CPU 去哪。</p><p>对于函数的栈帧，ebp+8 为传参的第一个参数，ebp+4 为返回地址，ebp+0 为 call 函数上一层的老 ebp，ebp-4 开始是局部变量。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjtqx8kFOZJmy06MDIt0LN7V3F_BGAACZhNrGz_BQFae-5hGsK6fVgEAAwIAA20AAz0E" alt="4.4.2" /><figcaption>4.4.2</figcaption></figure><p></p><p>本题错选为 B。显然 B 是 CISC 的系统特点。</p></section><section><h3>计组王道选择题 1 刷第 5 章<a href="#计组王道选择题-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAjxqx8khMSK3MEf8_-2Il76nq3CvhgACZxNrGz_BQFYml-tXOZfFMAEAAwIAA3gAAz0E" alt="5.1.4" /><figcaption>5.1.4</figcaption></figure><p></p><p>本题错选为 C。为低级错误，看错选项。用一条指令的流动来解释一下这道题。</p><p>假设 CPU 需要执行一条指令 ADD R1,[X]，即把内存 X 地址里的数据加到寄存器 R1 中，结果存回 R1。</p><p>阶段一：取指阶段，将指令从内存搬到 CPU，并让 PC 指向下一条指令。PC 首先拿出当前指令的内存地址，送入 MAR 中；MAR 将地址 1000H 放到地址总线上，控制器 CU 向控制总线发出读信号；内存收到读命令后，把 1000H 单元内存放的机器码放到数据总线上；数据总线上的机器码被写入 MDR 中；MDR 将这条指令机器码送给 IR，也就是指令寄存器；(PC)+“1”。</p><p>阶段二：分析指令/译码。IR 把指令的操作码部分送入指令译码器，CU 解析出这是一条加法指令；CU 分析指令的寻址方式；根据寻址方式计算出操作数 X 在内存中的真是物理地址 EA；CPU 内部电路读取 R1 里的值，送入 ALU 的输入端。</p><p>阶段三：访存。把上一阶段计算好的形式地址 EA 送入 MAR；发起读内存，MAR 将 EA 放到地址总线上，CU 再次通过控制总线发出都信号；内存把 EA 地址里的具体数据放到数据总线上，存入 MDR；MDR 将渠道的操作数送到 ALU 的输入暂存器中。</p><p>阶段四：执行指令。CU 向 ALU 发送加法控制信号，将寄存器 R1 的值和暂存器 Y 的值相加；ALU 根据计算结果，更新 PSW 里的标志位（ZF，SF，OF，CF）。</p><p>阶段五：写回。ALU 通过 CPU 总线写入目标寄存器并覆盖；CPU 根据 PC 发起下一条指令的取值阶段。</p><p>根据上述分析可知，指令寄存器即 IR，用于暂存指令（因为 PC 会自动 + “1”，没法留住当前指令），地址寄存器用于暂存地址，例如存储 X 的地址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAj1qx8lKwCAoISCRmqwtiw5wgFk4ngACaBNrGz_BQFYVFSubEd4RjgEAAwIAA20AAz0E" alt="5.1.7" /><figcaption>5.1.7</figcaption></figure><p></p><p>本题错选为 B。指令从哪里读出，根据上一题的分析可知，指令总是从程序计数器，也就是 PC 内读出。对于转移指令，可能会改变 PC 值，但是指令仍然是从 PC 里读出来的；对于地址寄存器 MAR，它可能存乱七八糟的东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAj5qx8l8iREXsRf_xIsMp-1jzz6WBgACbRNrGz_BQFb8NafO5VDTeAEAAwIAA3gAAz0E" alt="5.1.10" /><figcaption>5.1.10</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAj9qx8mo9AO6AtEHAngCe2omBk6_4AACbxNrGz_BQFYhCblp4F0z7QEAAwIAA3gAAz0E" alt="5.1.10 订" /><figcaption>5.1.10 订</figcaption></figure><p></p><p>其实也不算，只要搞清楚一个公式就好了：PC = 存储容量 / IR。</p><p>第 11 题错选为 C。对于这道题，以一个函数调用另一个函数来解释。执行 call 指令后，也就是先压入传参，执行 call 后 cpu 自定压入返回地址（原来的 PC 值），然后将新函数的入口地址赋予给 PC。进入新函数头部后，需要把旧的 ebp 保存在栈内，然后将当前栈顶指针 esp 赋予给 ebp。需要注意，函数栈和 PC 是两码事，可以理解为函数栈是正在执行的东西，而 PC 指向的是一块地方。</p><p>第 12 题错选为 B。指令寄存器保存的是当前正在执行的指令，当前正在执行的指令来源是 PC 值“指向”的指令，这个指向的指令也就是指令字长。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkBqx8nqI-PHxaU6hNQnJJ3blvVRpwACcRNrGz_BQFadUGCja3KcoAEAAwIAA3gAAz0E" alt="5.1.21" /><figcaption>5.1.21</figcaption></figure><p></p><p>本题错选为 C。取指令，将指令从 PC 送入 IR，并且解析出指令本身，PC+“1”；分析指令，分析指令的寻址方式，计算出指令的操作数地址；访存；运行；写回。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkFqx8oCWyne5KqPmHyBa679IqagxAACchNrGz_BQFb6KO0r9e4sHwEAAwIAA3gAAz0E" alt="5.1.23" /><figcaption>5.1.23</figcaption></figure><p></p><p>本题错选为 C。主存空间为 4GB，也就是 4×2^30B=2^32B，字长 32bit=4B。指令 32bit=4B。所以，PC，即程序计数器，可以用 2^32/2^2=2^30，即 30bit 来存储，剩下 2 位可以默认 00，指令寄存器是指令本身，即 32bit，所以本题应该选 B。
这里解释一下按字边界对齐存放，也就是 0，4，8，12…</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkJqx8qpscumTDKlW0RyWmC9rXSF3gACdhNrGz_BQFYaEZnlh5ne_gEAAwIAA20AAz0E" alt="5.2.6" /><figcaption>5.2.6</figcaption></figure><p></p><p>本题错选为 D。ACD 显然正确，对于 B，考虑 CISC，指令长度可能不相等，所以取的字节数可能不相等。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkNqx8rAWGr1oaK05fM-_xdaNluCrgACeBNrGz_BQFaFw2zq6Ud_4AEAAwIAA3gAAz0E" alt="5.2.10" /><figcaption>5.2.10</figcaption></figure><p></p><p>本题错选为 A。考虑 CPU 的五个阶段：取指令，分析指令，访存，执行，写回。CPU 在取指令的时候把指令读入内存，在分析指令的时候将操作码送入 CU 得出这是什么指令，然后根据其操作数进行访存，得到操作数的地址。访存阶段则是根据操作数的地址来得到操作数。</p><p>显然对于 A，指令操作码译码出来的东西得到这个指令的作用是什么，对于 B，指令寻址和数据寻址，人类可以知道指令寻址的方式有顺序寻址和跳跃寻址，数据寻址的方式有那 10 种，但是 CPU 不知道。例如跳跃寻址本质其实是和相对寻址是一样的。对于 D，指令和数据所在的存储单元的物理地址由操作系统分配，是透明的（采用页式存储）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkRqx8rpMh3U9PZTbtKzMzN65RAEswACeRNrGz_BQFZpiBoaUuEqVQEAAwIAA3gAAz0E" alt="5.3.2" /><figcaption>5.3.2</figcaption></figure><p></p><p>本题错选为 C。辨析一下这里的概念。CPU 主要由 CU 和数据通路组成，数据通路主要有操作原件（ALU）以及状态原件（MAR，MDR，PC 等）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkRqx8rpMh3U9PZTbtKzMzN65RAEswACeRNrGz_BQFZpiBoaUuEqVQEAAwIAA3gAAz0E" alt="5.3.8" /><figcaption>5.3.8</figcaption></figure><p></p><p>第 8 题错选为 C。对于 1，单总线数据通路完成一次主存读操作。由于是单总线，所以在主存读指令的时候得取指令等等，会有竞争，所以 1 排除。对于 2 显然为 1 个时钟周期，对于 4 和 3，这里需要注意式寄存器内部，所以 ok。对于 5，显然是小于一个时钟周期的。</p><p>第 9 题错选为 D。对于 A，单周期的 CPU 如果支持乘除法，那么会让整个单周期更慢。对于 D，无论怎么编排 D，总是接近 1，不可能=1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkZqx8sZISv6JgT502H8MvsJoZyplwACexNrGz_BQFYLJWg8AAHUBDsBAAMCAAN4AAM9BA" alt="5.3.13" /><figcaption>5.3.13</figcaption></figure><p></p><p>本题错选为 B。即 Cin 和 Cout 线。Cin 代表想要写，Cout 代表进位读。显然 ABC 均正确，例如想要读数据，Cin=1，然后应该是数据流向 CPU，存储器流向总线。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkdqx8zF5Er9Bg471greK9GwL7bv_AAChxNrGz_BQFaBCN08p2AVogEAAwIAA3gAAz0E" alt="5.4.17" /><figcaption>5.4.17</figcaption></figure><p></p><p>本题错选为 C。辨析一下这里的概念：一条机器指令=一个微程序=若干个微指令，微指令=若干个微命令，微命令=微操作。所以一个微程序周期等于一个机器指令周期，所以也就等于指令周期。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkhqx84HtLpL3NrjdNJgCpmmUgiGXAACihNrGz_BQFaSKqNKoEedUgEAAwIAA3gAAz0E" alt="5.4.22" /><figcaption>5.4.22</figcaption></figure><p></p><p>本题错选为 D。操作控制字段主要有 3 种方式，直接编码法，字段直接编码，字段间接编码，对于直接编码而言，一位代表一个信号；对于字段直接编码，先花 x 位表示有多少个互斥类，然后每个再花 y 位。对于字段间接编码，则是 x+y 混杂编码器来，把互斥的操作可以放在一起编码成 2 个字段。需要注意的是，别忘了 000 代表空状态。</p><p>对于这道题，5 个互斥类对应 5，也就是 3bit，对于后续的，7+1 需要 3bit，3+1 需要 2bit，12+1 需要 4 比特，5+1 需要 3bit，6+1 需要 3bit，总计 3+2+4+3+3=15，控制字段为 15bit。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAklqx84bMaP9xYBVLvm7UtaTcU-njwACixNrGz_BQFbWLqpNz99TDgEAAwIAA3gAAz0E" alt="5.4.23" /><figcaption>5.4.23</figcaption></figure><p></p><p>本题错选为 D。对于 CPU，想要翻译指令需要利用 CU，CU 有两种翻译指令的方式，一种是硬布线控制器，另一种式微程序控制器，即在 CU 内部再放一个微型控制器。主存（RAM）里存着机器指令；而 CPU 内部的控制存储器（ROM/CM）里，存着微指令。</p><p>所以本题的意思是说普通的 PC 来指明下一条机器指令，那么 CU 内部也是自然有一个μPC，也就是微程序计数器。所以，当一条微指令执行完之后，μPC 怎么知道下一条微指令在哪呢？</p><ol>
<li>增量方式，即计数器方式，也就是μPC 自动 +1</li>
<li>断定方式，即下地址字段方式，也就是当前微指令显式地指定下一条微指令，微指令包含下址字段，可以直接给出下一条微指令。在断定法种，每一条微指令的格式被分成了两半，操作控制字段，也就是存放 0 和 1，顺序控制字段，也就是下地址字段，里面存放着在控制存储器里的绝对地址。</li>
</ol><p>所以要确定总共有多少条（后地址）的，找绝对地址。总共 32 条指令，32×4=128，而需要额外的公共取值 2 个，也就是 128+2，总共 130。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkpqx85t3_6eSxcowbSDf8vFf5HBbAACjRNrGz_BQFbVx8RP6yopzgEAAwIAA3gAAz0E" alt="5.5.10" /><figcaption>5.5.10</figcaption></figure><p></p><p>本体错选为 C。对于 C，内部异常的“响应”是在指令的执行过程中。当指令一条指令结束后的末尾进行响应？对于 D，内部异常处理完之后返回异常执指令的下一条执行，而不是本条。</p><p>对于内部中断有三种情况，故障，陷阱和终止，分别对应返回本条，下一条，不反悔。对于外部中断一定是返回下一条指令执行，因为检查是在每条指令执行结束之后。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAktqx86jTr0Yx1MdTohhH17ebPxFuQACjhNrGz_BQFZdnaZueKYzJgEAAwIAA3gAAz0E" alt="5.6.12" /><figcaption>5.6.12</figcaption></figure><p></p><p>第 12 题错选为 A。根据这道题总结一下所有的冒险。冒险主要分为 3 大类，结构冒险（资源冲突），数据冒险以及控制冒险。其中控制冒险主要分为 3 类，延迟执行相关指令，采用旁路转发技术以及采用 lode-use 技术。</p><p>主要辨析一下旁路转发技术以及 load-use 技术。主要解决类似写后读的问题。</p><p>对于旁路转发，即将执行指令的时候，下一个时间片直接把寄存器的脏数据送入下一条指令的执行阶段。例如连续执行 add，sub 的时候，这类可以使用旁路转发；</p><p>对于 load-use 技术，指令 1，去内存里把数据读出来装进 R1，指令 2，立即使用刚刚读进 R1 的数据进行加法。指令 1 在 EX 阶段计算出来数据的地址，再 MEM 阶段访存取这个数据；指令 2 在 EX 阶段就要计算上一阶段取的数据（如果没有阻塞的话，则上一个指令处于 MEM），但是数据还在访问，怎么能取呢？所以阻塞指令二一个阶段，等待数据取完之后，把指令 1 的 MEM 通过软件方式发到指令 2 的 EX。</p><p>这里需要注意，并不是所有的指令的 EX 阶段都是计算数，也有可能是计算数地址，然后在 MEM 访存。
第 13 题错选为 A。经典 load-use，阻塞 1。</p></section><section><h3>计组王道选择题 1 刷第 6 章<a href="#计组王道选择题-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkxqyJlg7QvxDb48aia6EWhsBd7YpwACxxFrG6T-SFaXKtYQRlD8mwEAAwIAA3gAAz0E" alt="6.1.5" /><figcaption>6.1.5</figcaption></figure><p></p><p>第 5 题错选为 B。取指令，分析指令（间指），也就是通过数据总线传输，all is data。</p><p>第 6 题错选为 A。A 表述不全，除了主存地址之外还可以有 D 所说的东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAkxqyJlg7QvxDb48aia6EWhsBd7YpwACxxFrG6T-SFaXKtYQRlD8mwEAAwIAA3gAAz0E" alt="6.1.9" /><figcaption>6.1.9</figcaption></figure><p></p><p>本题错选为 D。本题考虑来源于总线复用，但是也应该是控制总线，而不是控制单元。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAk5qyJpl5RIaSSJyZsny86p3uYeJpgACzBFrG6T-SFZIVBMcJBIETAEAAwIAA3gAAz0E" alt="6.1.11" /><figcaption>6.1.11</figcaption></figure><p></p><p>第 11 题不会做。</p><p>第 12 题不会做。</p><p>第 13 题不会做。</p><p>第 14 题错选为 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAk9qyJq2bnCGV7oNsogQ3WNG-4CouwACzRFrG6T-SFZFqusJPfXXHAEAAwIAA20AAz0E" alt="6.2.6" /><figcaption>6.2.6</figcaption></figure><p></p><p>本题错选为 A。异步总线方式按需分配。整理一下四种方式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlBqyJran9UdPBxojowRbxXJnaCDPQACzhFrG6T-SFZEVv_7FWJ7mAEAAwIAA3gAAz0E" alt="6.2.11" /><figcaption>6.2.11</figcaption></figure><p></p><p>本题错选为 C。（本题算是略超纲，从 16 年之后就基本不考了）本题错误在于没有考虑异步串行通信的起始位和结束位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlFqyJwYppNdmHdUtKCedvNma3FXWAAC0RFrG6T-SFafESIt6vM-2gEAAwIAA3gAAz0E" alt="6.2.17" /><figcaption>6.2.17</figcaption></figure><p></p><p>本题错选为 C。超纲题。</p></section><section><h3>计组王道选择题 1 刷第 7 章<a href="#计组王道选择题-1-刷第-7-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlJqyJ7cXwABz71M8MoK6q6EYriMUOQAAtMRaxuk_khWYd4YDyGUG14BAAMCAAN4AAM9BA" alt="7.2.2" /><figcaption>7.2.2</figcaption></figure><p></p><p>第 2 题错选为 B。IO 接口=设备控制器。</p><p>第 3 题错选为 B。对概念理解有误，显然在统一编制的时候，不需要额外的地址线，只是将某一片特定的区域划给设备；而在独立编址下，需要。对于统一编址，例如 RICS，只能用 load 和 use 访存。</p><p>第 4 题错选为。IO 接口的寄存器即 IO 端口，需要具备 3 个最基本的功能：数据寄存器，控制寄存器和状态寄存器。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlRqyJ-hu0AOUoOgDPnfRIGTMbM_DwAC1BFrG6T-SFY44S0IDAne5gEAAwIAA3gAAz0E" alt="7.2.10" /><figcaption>7.2.10</figcaption></figure><p></p><p>第 10 题错选为 C。</p><p>第 11 题错选为 B。打印控制接口和交换机之间交换的信息，指的是 IO 接口和 IO 设备之间。中断“请求”是 IO 接口发给 CPU 的，自然不需要再 IO 接口和 IO 设备之间传输。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlVqyJ_MOHQl42t8GIfmYcjdjsQZ4AAC1RFrG6T-SFYO2CgvacP9igEAAwIAA20AAz0E" alt="7.2.13" /><figcaption>7.2.13</figcaption></figure><p></p><p>本题错选为 C。对于 A，举一个很简单的例子，例如键盘，纯字符设备。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlZqyJ_xNrOiURb_4ndPo2CdwS1XRQAC1hFrG6T-SFb-0xX91kWtVAEAAwIAA3gAAz0E" alt="7.2.16" /><figcaption>7.2.16</figcaption></figure><p></p><p>本题错选为 A。IO 端口是 IO 设备的寄存器。假设 IO 设备需要向内存发送数据，那么先将数据写道 IO 端口（数据寄存器上），然后发往 CPU 内的寄存器，即 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAldqyKA5g6yhczGyWCdGnhsPwqC1lQAC1xFrG6T-SFbsyf57VvSmewEAAwIAA20AAz0E" alt="7.3.2" /><figcaption>7.3.2</figcaption></figure><p></p><p>本题错选为 A。对于 A，中断服务程序最开始三个是硬件实现的。中断向量是中断服务程序的入口地址，而不是中断向量的地址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlhqyKCmGenxD1CozX1hDYB9V0ijKwAC2BFrG6T-SFZliTiKTyRSJQEAAwIAA3gAAz0E" alt="7.3.4" /><figcaption>7.3.4</figcaption></figure><p></p><p>第 4 题错选为 D。对于 1，显然；对于 2，是每个指令即将结束后；对于 3，关于 DMA 是可以在指令中间执行的；对于 4，中断服务程序的最后一般不是无条件转移指令，而是继续之前的服务运行；对于 5，这里辨析一下中断响应判优和中断屏蔽字。中断响应判优是硬件排队器，焊死在主板上，而中断屏蔽字决定的事中断处理优先级，即谁能打断谁。‘中断响应判优’，管的是门外的人怎么排队进门！</p><p>‘中断屏蔽字’，管的是门内的人能不能被外面的人强行打断！</p><p>第 5 题错选为 C。高速外设不一定是使用 DMA 方式，只是最好是 DMA 方式。也可以采用其他方式，只是 CPU 会累一点。当然也可以采用管道方式。</p><p>第 6 题错选为 B。中断向量地址是中断服务程序入口地址的地址，属于背书。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAllqyKDdndZuaWtJv13eHWXi34fabQAC2RFrG6T-SFYsknV69jNhRgEAAwIAA3gAAz0E" alt="7.3.12" /><figcaption>7.3.12</figcaption></figure><p></p><p>本题错选为 A。辨析一下外中断和内中断。在一条指令执行的时候，外中断只能发生在一条指令执行的末尾，而内中断会发生在一条指令执行的时候（例如缺页异常）。对于 D 有两种可能性，关中断/中断屏蔽。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlpqyKEIuJdshwvO4647-0SyCERPyQAC2hFrG6T-SFaMC4C2Te5KXgEAAwIAA3gAAz0E" alt="7.3.14" /><figcaption>7.3.14</figcaption></figure><p></p><p>第 14 题错选为 D。对于 A 是 C 的物理限制。多个中断同时发生，需要硬件判断器来判优，从而让 CPU 来轮流处理。</p><p>第 15 题错选为 A。背书。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAltqyKE3T5z1oermiQ1nQteooIADSAAC2xFrG6T-SFbkL6rFm2ZUygEAAwIAA3gAAz0E" alt="7.3.17" /><figcaption>7.3.17</figcaption></figure><p></p><p>本题错选为 B。这里指的是中断屏蔽字，ABC 都是物理硬件的事，而谁最先，也就是门内谁可以打断谁。考虑这样一种情况，中断优先级是 A&gt;B&gt;C，如果没有设置中断屏蔽，那么 C 在执行过程中可以被 A 和 B 打断。如果设置中断屏蔽（例如屏蔽 A 打断的权利），那么 C 在执行过程中就不会被 A 打断。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAlxqyKFXDJI89tPNTzxOTuwOXIQC2AAC3BFrG6T-SFYDZ5aTDFZvMAEAAwIAA3gAAz0E" alt="7.3.23" /><figcaption>7.3.23</figcaption></figure><p></p><p>本题错选为 C。前处理和后处理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAl1qyKGFhAv0UOX63KWPtcd1p-ytlAAC3xFrG6T-SFbCg3Dh1P-ckQEAAwIAA3gAAz0E" alt="7.3.25" /><figcaption>7.3.25</figcaption></figure><p></p><p>本体错选为 C。对于 A，DMA 请求优先；对于 B，DMA 请求在指令执行过程中就需要执行。对于 C 不确定，对于 D，有些指令即便是关中断下也必须响应。</p><p>这里需要辨析一下 DMA 和普通中断的区别，DMA 盯上的是机器周期/总线周期，而普通外中断盯上的是指令周期的缝隙。DMA 要求的是夺取 CPU 的控制权，即可以采用周期挪用/停止 CPU 访问/DMA 与 CPU 交替访问的方式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAl5qyKHJPH5nKkBEdMrklFamAyQbMgAC4BFrG6T-SFajCJtK9SJH1gEAAwIAA20AAz0E" alt="7.3.27" /><figcaption>7.3.27</figcaption></figure><p></p><p>本题错选为 B。这里捋一遍中断的全流程：关中断；保存断点，也就是保存旧地址的 PC 以及 PSW；中断服务程序寻址，也就是找到新的 PC，直接覆盖；接下来是软件，把所有东西压栈，然后后续步骤。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAl9qyKIKBD6po12p-xXEH5x2yoB8CgAC4hFrG6T-SFZqOYsTPtQQfAEAAwIAA3gAAz0E" alt="7.3.29" /><figcaption>7.3.29</figcaption></figure><p></p><p>本题错选为 A。属于低级错误。DMAC 可以理解为 DMA 的数据寄存器，数据通路是 CPU 的概念，CPU 内部主要由 CU 和数据通路构成，数据通路又可以分成数据和状态两大类，其中 ALU 属于前面的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmBqyKIdMv5-bJ2ZO-2BgWE7FtOw1QAC4xFrG6T-SFYc7w0l6BZA_AEAAwIAA3gAAz0E" alt="7.3.32" /><figcaption>7.3.32</figcaption></figure><p></p><p>第 32 题错选为 D。没必要传输 C，显然对于 DMA 方式，直接放在内存即可，不需要涉及到 CPU 寄存器</p><p>第 33 题错选为 D。属于低级错误。BCD 均为异常。</p><p>第 34 题错选为 C。辨析硬件和软件分别需要做的事情。</p></section></section>
<section><h2>OS 王道选择题 1 刷（补）<a href="#os-王道选择题-1-刷补"><span>#</span></a></h2><section><h3>OS 王道选择题 1 刷第 1 章<a href="#os-王道选择题-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmFqyKJRP3iSOsxLktd9qmkrvnQ3BAAC5BFrG6T-SFZyBAtFmLrJiAEAAwIAA3gAAz0E" alt="1.1.1" /><figcaption>1.1.1</figcaption></figure><p></p><p>第 1 题选了 B、C，答案是 C、D</p><p>关于第 1 题，是因为没背书，答案在第 1 页的黑字部分。</p><p>关于第 2 题，可能是因为没学后面的。OS 负责管理内存，CPU，文件系统（外村），I/O。源程序虽然以文件形式存储在外存中，但是其代码语义等信息不归操作系统管。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmJqyKJjM7RgMsFCIZpOygths-q9MgAC5RFrG6T-SFYMdqPBOWGipQEAAwIAA3gAAz0E" alt="1.2.3" /><figcaption>1.2.3</figcaption></figure><p></p><p>错选为 A。因为多道程序需要访问相同的临界资源，所以他们之间是相互制约的。对于顺序性，每道程序的内部是顺序的，但是程序间的执行顺序不是顺序的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmNqyKKbIqVNnTaIORnb7vyohqxZDAAC5hFrG6T-SFaKjY-Jbb0TlwEAAwIAA3gAAz0E" alt="1.2.5" /><figcaption>1.2.5</figcaption></figure><p></p><p>错选为 D。时间片的概念来自于 RR 调度，也就是分时操作系统。在分时操作系统下，每个对象轮流分配处理机，就好像他们单独拥有这台机子一样。即便在分时操作系统下，也不一定是在时间片内处理完所有的信息，此时就体现了中断的作用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmRqyKKs7zA8G_YoTi__eKvwjFkvGgAC5xFrG6T-SFbGbGbHbG4YagEAAwIAA20AAz0E" alt="1.2.8" /><figcaption>1.2.8</figcaption></figure><p></p><p>错选为 D。分时操作系统确实是一种多用户系统，可以让每个用户轮流使用时间片。批处理系统主要用于处理批作业，这里把批作业理解为了轮流。分时操作系统让每个用户轮流使用时间片。</p><p>分时操作系统响应时间取决于用户数量，但总体而言是公平的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmVqyKLrgkMP_w25vnEQ3JoTeje5SAAC6RFrG6T-SFZozQ8epV6JYwEAAwIAA3gAAz0E" alt="1.2.16" /><figcaption>1.2.16</figcaption></figure><p></p><p>本题错选为 A。多道程序系统意味着程序并发执行（非并行），而并发意味着轮流上处理机调度，所以必须拥有中断功能。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmZqyKMLbiRsnr-Cgiuen_yK_6Ng1QAC6hFrG6T-SFbkXklhzFSrAgEAAwIAA3gAAz0E" alt="1.3.2" /><figcaption>1.3.2</figcaption></figure><p></p><p>第 2 题错选为 B。批处理系统的主要缺点是无法实时交互，I/O 指令必须在内核态进行，操作系统采用多道程序设计技术主要原因是提高利用，而非可靠。通道技术是 I/O 形式的第 4 钟（考纲已移除），是硬件技术。</p><p>第 3 题错选为 A。对于 1 和 2，屏蔽中断指令是内核态运行的，用户不可以修改。对于 4，考虑这样一个场景，假设用户任务返回的是终止（异常），原程序已经无法执行，返回没有意义，操作系统继续处理。</p><p>第 4 题错选为 B。没有中断处理意味着操作系统完全无法进行干预。对于 B，考虑宏内核和微内核，微内核为进程提供系统调用命令是是现在外部的。</p><p>操作系统至少要提供：低级进程通信，调度，低级 I/O，中断处理等。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmdqyKMmNl7qj496WiU7vtOtM3bEVgAC6xFrG6T-SFYt_e1K1p9LbAEAAwIAA3gAAz0E" alt="1.3.10" /><figcaption>1.3.10</figcaption></figure><p></p><p>本题错选为 C。设备驱动也需要在内核态执行，具体可以见操作系统的 I/O 管理——进程调用，设备独立性软件，驱动程序，中断处理，具体的硬件处理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmhqyKM9CmQ4hPBlPRUT2YPrnSzfbAAC7BFrG6T-SFbHjy5KLwuGpgEAAwIAA3gAAz0E" alt="1.3.14" /><figcaption>1.3.14</figcaption></figure><p></p><p>本题错选为 A。保存 PSW 是中断处理中硬件完成的部分，一般过程调用不需要保存程序状态字指令。被调用过程的意思是说这个东西本身，也就是函数本身，而不是 trap 指令。我使用 trap 指令这个过程是调用过程，被调用过程是内核执行的东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmlqyKNNDC2vw67G9mp54F10akCRiwAC7RFrG6T-SFYiG_9ZljkSwwEAAwIAA3gAAz0E" alt="1.3.17" /><figcaption>1.3.17</figcaption></figure><p></p><p>本题错选为 A。用户态发生系统调用，系统调用的被调用态在内核态。进程切换必然是发生在内核态。外中断可能在用户态发生，这个时候应该转到内核态处理。进程切换泽必须需要在内核态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmpqyKNkkJ9IrgbSZ--7RkgpoMPnQAAC7hFrG6T-SFYh3X_n6z0-8AEAAwIAA3gAAz0E" alt="1.3.21" /><figcaption>1.3.21</figcaption></figure><p></p><p>本题错选为 A。程序计数器的内容在中断处理的第 2 步由硬件保存（中断隐指令）通用寄存器在中断处理的后续步骤被操作系统保存。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmtqyKOULUjFqD_hzBcspwm0eaM_9AAC7xFrG6T-SFZZkFIJQFA8IAEAAwIAA3gAAz0E" alt="1.3.25" /><figcaption>1.3.25</figcaption></figure><p></p><p>第 25 题错选为 C。考虑 RR 调度，123 同时需要满足，更新这三者来判断是否进程需要被 RR 调度下掉。</p><p>第 26 题错选为 A。操作系统需要提供对外设的访问。对于 3，可以理解为 Linux 系统，Windows 系统等。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAmxqyKPJgPn0mqD2ve4H2kgsyxfc3AAC8BFrG6T-SFYcrRGmt1NGOQEAAwIAA3gAAz0E" alt="1.6.6" /><figcaption>1.6.6</figcaption></figure><p></p><p>本题错选为 B。实际考察的是操作系统必须的功能。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAm1qyKPwx01sEPe5H-6ewb5Dyopn2AAC8RFrG6T-SFappQ54VdXT6AEAAwIAA3gAAz0E" alt="1.6.8" /><figcaption>1.6.8</figcaption></figure><p></p><p>本题错选为 D。微内核并不高效，因为进行一些操作的时候需要频繁变态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAm5qyKQB5T0pH9igh1J24_PEicnJ_QAC8hFrG6T-SFbj-FpOPwK9FQEAAwIAA3gAAz0E" alt="1.6.11" /><figcaption>1.6.11</figcaption></figure><p></p><p>本题错选为 B。背书。并不会将操作系统所有东西都加载到内存里，只会把必要的部分加载进来，也就是内核。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAm9qyKRZI9ytf1VbtzW3Wz3e85nA4AAC8xFrG6T-SFbpYREVgRgIOAEAAwIAA3gAAz0E" alt="1.6.13" /><figcaption>1.6.13</figcaption></figure><p></p><p>引导程序位于硬盘，背书。整个过程大致是先在 BIOS 初始化，自检，根据 CMOS 设置的设备优先级启动设备。加载主引导。确定活动分区。加载启动管理器。加载操作系统内核。初始化内核并且启动用户环境。</p><p>B→“自”→“主”→“分”→“管”→“核”→“始”</p><ul>
<li>B：BIOS 读入（ROM）</li>
<li>自：自检 POST 查启动项（CMOS）</li>
<li>主：主引导记录（MBR，全盘唯一首扇区），也就是磁盘引导</li>
<li>分：分区引导记录（PBR，活动分区首扇区）</li>
<li>管：启动管理器（GRUB / Bootmgr）</li>
<li>核：加载核心内核（Kernel 接管，重建中断）</li>
<li>始：内核初始化（页表/PCB/设备表）→ 唤醒 init 首个用户进程</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnBqyKUQ9WTg71exGJKOe7dGeYIw_wAC9BFrG6T-SFZ7eYF-qmWhQwEAAwIAA3gAAz0E" alt="1.6.16" /><figcaption>1.6.16</figcaption></figure><p></p><p>本题错选 B，为低级错误，看错选项。考虑第二类虚拟机，依赖于宿主计算机的，不可以。考虑第一类虚拟机，底层硬件被第一类虚拟机管理程序综合管理的，所以也不行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnFqyKUjHFbLjvhgCQ9AbpqkGMNyAgAC9RFrG6T-SFZteog_Wff9GwEAAwIAA3gAAz0E" alt="1.6.18" /><figcaption>1.6.18</figcaption></figure><p></p><p>本题错选为 A。VMM 代码量远低于操作系统的量，比如说只需要实现一些特定的协议转换就可以了。</p></section><section><h3>OS 王道选择题 1 刷第 2 章<a href="#os-王道选择题-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnJqyKVAu-bhRYFJppKRd2Gy8x38ogAC9hFrG6T-SFaRIl2NSiodwAEAAwIAA3gAAz0E" alt="2.1.8" /><figcaption>2.1.8</figcaption></figure><p></p><p>本题错选为 B。进程在被创建后，进入就绪队列，为进程分配 CPU 是调度程序做的事情。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnNqyKVlMhoPMND0hfcDoxgcHgcs6AAC9xFrG6T-SFbG01xTOF4zowEAAwIAA3gAAz0E" alt="2.1.10" /><figcaption>2.1.10</figcaption></figure><p></p><p>本题错选为 B。用户登录意味着创建了一个用户进程，打开浏览器程序相当于点击 exe，点击 exe 肯定会创建新进程。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnRqyKV4FIiWrPGuyKlMZRqTohk7ZgAC-BFrG6T-SFbXz5xJpVZxFQEAAwIAA3gAAz0E" alt="2.1.13" /><figcaption>2.1.13</figcaption></figure><p></p><p>本题错选为 D。即便考虑闲逛进程，闲逛进程也是这 10 个进程之一，而非独立出去的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnVqyKWG-GarUOwsidw6YYjyENPrTwAC-hFrG6T-SFb9gtJoRVC_dAEAAwIAA3gAAz0E" alt="2.1.22" /><figcaption>2.1.22</figcaption></figure><p></p><p>本题 2 错选为 B。未赋值的局部变量在应在栈区。（局部变量都在栈区）</p><p>保留区 - 代码段 - 只读/全局变量 - 堆，内存映射，栈（局部变量）- 内核。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnZqyKWWfzTe3WWj8luHN7CNjjKuLgAC-xFrG6T-SFZnjh09knGZGgEAAwIAA3gAAz0E" alt="2.1.29" /><figcaption>2.1.29</figcaption></figure><p></p><p>本题错选为 B。通过信号量通信需要发送信号量和接收信号量，在这过程中会消耗时间，而采用共享内存直接访问即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAndqyKWmX8zDIVN534m8_09vqMwsyQAC_BFrG6T-SFZfP2vCT1SKFgEAAwIAA3gAAz0E" alt="2.1.34" /><figcaption>2.1.34</figcaption></figure><p></p><p>本题错选为 B。对于进程以及线程的理解，可以从以下角度入手：</p><ol>
<li>线程可以被调度，所以线程可以独立执行程序</li>
<li>线程没有自己的资源，其资源是来自于进程的</li>
<li>由于 2，所以进程是分配资源的单位</li>
</ol><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnhqyKW9MAABXJQSwtFgZox2vAt1570AAv0Raxuk_khWEcjOSuo4PIQBAAMCAAN4AAM9BA" alt="2.1.49" /><figcaption>2.1.49</figcaption></figure><p></p><p>本题错选为 C。看题目，主角是内核级线程。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnlqyKXSNePCrNnHglSLFM0nNoOtnwAC_hFrG6T-SFYg0tDNxvWhlAEAAwIAA3gAAz0E" alt="2.1.58" /><figcaption>2.1.58</figcaption></figure><p></p><p>本题错选为 D。设备分配显然并非创建进程，而是可能可以让其他进程从就绪态变成运行态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnpqyKXmevl_QdhdVAbcmw8U8w3pPQAC_xFrG6T-SFYUTGoEUQ-SwQEAAwIAA3gAAz0E" alt="2.1.60" /><figcaption>2.1.60</figcaption></figure><p></p><p>本题错选为 D，本质依旧是对线程与进程的不了解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAntqyKYuboeBhFhkKoMuyVj5y2iJQAADEmsbpP5IVr_8CY_FyIOVAQADAgADeAADPQQ" alt="2.2.9" /><figcaption>2.2.9</figcaption></figure><p></p><p>本题错选为 A。依旧是对线程和进程的不充分理解。对于打开文件表，这个是分配给进程的。对于页基址寄存器，一个进程分配一个页表，所以不变。而线程私有的需要变。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAnxqyKaZB76vIDP80wSCDc_zp3Q6awACARJrG6T-SFb7ERR9-QABhysBAAMCAAN4AAM9BA" alt="2.2.27" /><figcaption>2.2.27</figcaption></figure><p></p><p>错选为 B。本题应该是脑子里认为是 B，然后即便是算出来了 D，也脑子想想就改为了 B</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAn1qyKbLdP4KsWtSkWzkUASyIB9AJQACAhJrG6T-SFa5nGlvLYpRqwEAAwIAA3gAAz0E" alt="2.2.40" /><figcaption>2.2.40</figcaption></figure><p></p><p>错选为 A</p><p>注意 P2 比 P1 晚来 5min。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAn5qyKdEP0dhaTejjyu-H_2sVpQ5KwACAxJrG6T-SFZmxUyrL8mDGgEAAwIAA3gAAz0E" alt="2.2.48" /><figcaption>2.2.48</figcaption></figure><p></p><p>第 47 题错选为 A。这题在做的时候完全没有理解什么意思，但是 2 刷的时候细想，就意识到这题应该是从 P1 上处理机开始算（也就是只有 P1 的等待时间不算，其他的等待时间都要照常算。</p><p>这里等待时间的意思是说它在就绪队列的等待时间，也就是假设 P2 运行了还差 18s 结束，此时 P2 到达。而不是 P1，P2，P3 一开始就全到了。</p><p>包括本题第一次被调度上去也要算时间。</p><p>第 48 题错选为 D。平均等待时间，而非平均周转时间。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAn9qyKhO6OrDJca8q_5_iTu-ac5TtgACCBJrG6T-SFbH-Pkb3X4XCQEAAwIAA3gAAz0E" alt="2.3.5" /><figcaption>2.3.5</figcaption></figure><p></p><p>本题错选为 B。航空公司可以有很多订阅渠道，所以不是互斥资源。而每一张飞机票只能卖给一个人。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAoBqyKhqf3QSf9BPx_HmRH-GL7PQWgACCRJrG6T-SFaM3-pq-AABy1QBAAMCAAN4AAM9BA" alt="2.3.18" /><figcaption>2.3.18</figcaption></figure><p></p><p>错选为 B。这题应该是受到了以前什么同步先 V 后 P 的影响，摒弃这种思想，改为：互斥指的是对临界区的访问，而同步是制约先后顺序的。考虑这样一个场景：一个消费者和一个生产者，生产者可以消耗 x 个空间，这个 x 就是用户指定的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAoFqyKh7QQlSTdAi8d60w7QZG1DLCgACChJrG6T-SFaFHs-bYz3qcgEAAwIAA20AAz0E" alt="2.3.22" /><figcaption>2.3.22</figcaption></figure><p></p><p>错选为 D。对一个互斥锁加锁后忘记解锁，只能导致其他人无法访问这个临界资源（也就是 P(mutex) 后忘记 V，这种都是 P，执行完后立刻 V，所以一般不会死锁）；</p><p>对于 C，考虑这样一个场景 A 进程：P(S1);P(S2); V(S2); V(S1);，B 进程：P(S2);P(S1);V(S1);P(S2)；这样就显然了。（题目的阅读理解）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAoJqyKiPTm6--LkV9MrIjbfT4Ay1sgACCxJrG6T-SFb_wDslRtu-VwEAAwIAA3gAAz0E" alt="2.3.27" /><figcaption>2.3.27</figcaption></figure><p></p><p>错选为 A。临界区指的是进程访问临界资源的代码。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAoNqyKigAdvLhFMqQCTTiYm8qi9nhwACDBJrG6T-SFaIDTzD4RibvQEAAwIAA3gAAz0E" alt="2.3.29" /><figcaption>2.3.29</figcaption></figure><p></p><p>29 题错选为 D。管程可以理解为对 PV 操作的类封装。对于 C，考虑读者写者问题的读者。
对于 B，对于一个读者而言，只能互斥的访问+-count。</p><p>30 题错选为 B。假设现在只有 1 个资源，我申请了这个资源，这个资源先减 1，变为 0，我再被分配到这个资源。下一个人申请了这个资源，这个资源先减 1，变成 -1，然后没资源了。所以应该是 A。</p><p>31 题第 2 空错选为 A。考虑了闲逛进程。有两个问题</p><ol>
<li>即便是闲逛进程，也占用了 n 个里面的一个</li>
<li>闲逛进程应该是不会进入阻塞态的。</li>
</ol><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAoRqyKi7FNdap8rA8pD29AABxN97EMsAAg0Saxuk_khWHpCmx00HYaABAAMCAAN4AAM9BA" alt="2.3.42" /><figcaption>2.3.42</figcaption></figure><p></p><p>本题错选为 C。互斥使用缓冲区的互斥信号量，而非同步信号量。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAoVqyKjR8fjgSHM5y-nEL_nMWfaEngACDhJrG6T-SFbU8uGXXUjLFAEAAwIAA3gAAz0E" alt="2.3.50" /><figcaption>2.3.50</figcaption></figure><p></p><p>本体错选为 A。a 为线程的私有变量，所以不需要加锁。对于同一个进程的相同全局变量需要加锁。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAoZqyKjk5vXAZR56o93fH0v91PtxwQACDxJrG6T-SFaCygoflSjKcwEAAwIAA3gAAz0E" alt="2.4.23" /><figcaption>2.4.23</figcaption></figure><p></p><p>错选为 A。本题是读者写者问题读优先的代码，可以注意。</p><p>并且，在做题目的时候，先思考一下经典模型，再去想是不是新东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAodqyKj4uVc22AJhp4b-mo8iNh28bQACEBJrG6T-SFaGiyBuAAHDjwsBAAMCAAN4AAM9BA" alt="2.4.26" /><figcaption>2.4.26</figcaption></figure><p></p><p>错选为 B。计算错误，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAohqyKkS8783oU_qlpeHlj6OGpNpOwACERJrG6T-SFa2a5iFy7YtEgEAAwIAA3gAAz0E" alt="2.4.26 订" /><figcaption>2.4.26 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAolqyKkgptnNPHCpVM9PK81QORF9yAACEhJrG6T-SFbej9m9j4rIgwEAAwIAA3gAAz0E" alt="2.4.39" /><figcaption>2.4.39</figcaption></figure><p></p><p>错选为 B。死锁避免指的是银行家算法那一套，死锁检测则是先分配，然后检测是否死锁。对于 1，限制用户申请资源的顺序是死锁预防干的事情。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAopqyKkxYJpNJ2AGoFJm3a_Jk0NWcQACFBJrG6T-SFbYWD2YzhF7jwEAAwIAA3gAAz0E" alt="2.4.43" /><figcaption>2.4.43</figcaption></figure><p></p><p>错选为 B。计算错误，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAotqyKlCPTn9w1FdPIhxfNSaTlvZDAACFRJrG6T-SFaNE6fzK0c0xQEAAwIAA3gAAz0E" alt="2.4.43 订" /><figcaption>2.4.43 订</figcaption></figure><p></p></section><section><h3>OS 王道选择题 1 刷第 3 章<a href="#os-王道选择题-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAoxqyKlgtYiGRNhh0H0a59eZiGAOAwACFhJrG6T-SFajkc8-PSRwgwEAAwIAA3gAAz0E" alt="3.1.4" /><figcaption>3.1.4</figcaption></figure><p></p><p>错选为 D。固定分区是直接采用的固定地址（也就是固定把这一块分给你，或者意思是说，提前分区分好了这一块大小，只能拿这么大大小的）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAo1qyKl04Gz4b6xtJYkzN-8ykvQ-qAACFxJrG6T-SFa0NKoGkzI5LQEAAwIAA3gAAz0E" alt="3.1.11" /><figcaption>3.1.11</figcaption></figure><p></p><p>错选为 D。不依赖于目标程序，目标程序本质是在磁盘里的东西，而且是逻辑地址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAo5qyKmCDhsJaL4Sb3JUJqSUFGwYwAACGRJrG6T-SFa98AmfvN0-BwEAAwIAA3gAAz0E" alt="3.1.14" /><figcaption>3.1.14</figcaption></figure><p></p><p>第 14 题错选为 B。重定位寄存器是寄存器，很贵，只有一个</p><p>第 15 题错选为 D。属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAo9qyKmUFmhZMCyBSmPMTB3mV_-liwACGhJrG6T-SFY-04uPMvnVWwEAAwIAA3gAAz0E" alt="3.1.26" /><figcaption>3.1.26</figcaption></figure><p></p><p>错选为 B。二刷也是错的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApBqyKm0juKJby-KWG_bGaY4oBnIaQACGxJrG6T-SFY5A6BQN-lmhgEAAwIAA3gAAz0E" alt="3.1.28" /><figcaption>3.1.28</figcaption></figure><p></p><p>错选为 B。2 刷也是错的这题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApFqyKnFRQkPa48W5xcY1O-CEdX3SAACHBJrG6T-SFayG6t5sjCeaAEAAwIAA3gAAz0E" alt="3.1.39" /><figcaption>3.1.39</figcaption></figure><p></p><p>错选为 D。分页式管理和外存无关，划分大小必须相同。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApJqyKnWICfEE6MBIl3Gf8dD13X65gACHhJrG6T-SFYsIViK5gABjwgBAAMCAAN4AAM9BA" alt="3.1.41" /><figcaption>3.1.41</figcaption></figure><p></p><p>错选为 A。主存访问以 B，交换数据之类的是 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApNqyKnmm6wg7lkFFFaXbrGzPR5s2QACHxJrG6T-SFYXNlXPXkan9AEAAwIAA3gAAz0E" alt="3.1.48" /><figcaption>3.1.48</figcaption></figure><p></p><p>错选为 B。2 刷也是错的。2 的意思是说，对于一些进程（这些进程分别在就绪态，运行态，阻塞态），只有在运行态的页表在内存里，这句话显然是错误的。对于这些只要在就绪，运行，阻塞的，都有存一份 pcb 在内核里，pcb 里存着页表基址，只要运行的时候把值赋值给 cpu 的 PTR 寄存器就可以了。</p><p>辨析一下，PTR 寄存器是页表基址寄存器，基址寄存器其实等同于重定位寄存器。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApRqyKo6HCcY9n79PX6Bu7jS9RxmGAACIBJrG6T-SFZQIhh9k0ry6QEAAwIAA3gAAz0E" alt="3.1.57" /><figcaption>3.1.57</figcaption></figure><p></p><p>第 57 题错选为 B。页面大小 4KB/表项大小 8B=512 个表项。256TB=2^48。2^48/4K=2^36，所以还剩下 36 个位置放页号。由于 512 个表项需要 9 位，恰好 4x9=36。</p><p>第 58 题错选为 C。并非越界访问（）这个简单想想就知道是错的了，你都越界了怎么访问这个页。
越界访问的意思是说 CPU 试图访问一个超出合法界限范围的内存地址，这道题指向同一个页帧，也不会发生指向 A 页帧取 B 页帧的情况（因为本来就是一个页帧）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApVqyKpmn90IMDm_tAHl9z2w4V5W7gACIRJrG6T-SFYtH_oemXjzagEAAwIAA3gAAz0E" alt="3.2.2" /><figcaption>3.2.2</figcaption></figure><p></p><p>错选为 C。页面变大，存的东西变多了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApZqyKqhMOtyAUbbsbUy0I9KQgABee8AAiISaxuk_khWu5bO__EVhSQBAAMCAAN4AAM9BA" alt="3.2.13" /><figcaption>3.2.13</figcaption></figure><p></p><p>第 13 题见 2 刷，错选为 D。</p><p>第 14 题错选为 A。0.75+0.25(1+2)。把这道题理解成多级 cache 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApdqyKq1lLubU-FZUhxX8cBe142N2wACIxJrG6T-SFZphsm1zlL5UwEAAwIAA3gAAz0E" alt="3.2.16" /><figcaption>3.2.16</figcaption></figure><p></p><p>错选为 D。详见 2 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAphqyKrtlNEu3rBhv0wckW5OjGlAlAACJBJrG6T-SFZo3wSn4O8MogEAAwIAA3gAAz0E" alt="3.2.18" /><figcaption>3.2.18</figcaption></figure><p></p><p>错选为 B。虚拟存储不依赖物理存储。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAplqyKr-mfsSOgvSt0ZcPX8KxXs_qgACJRJrG6T-SFax53tL4t2M3AEAAwIAA3gAAz0E" alt="3.2.23" /><figcaption>3.2.23</figcaption></figure><p></p><p>棍母，错选为 A，详见 2 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAppqyKtTkPuF2nxee7jJpyWrah2sRAACJhJrG6T-SFYrv3fnfTQ38wEAAwIAA3gAAz0E" alt="3.2.31" /><figcaption>3.2.31</figcaption></figure><p></p><p>错选为 B。对于 B，感觉不可以从文件系统的角度理解。文件系统那个角度是关闭文件，关闭文件不等于立刻把文件写回，但是这里是换页面，写回速度越慢可能会导致换的速度越慢。CPU 和内存交换的速度是 CPU 和内存之间的关系，而题目里是内存和磁盘之前的关系。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAptqyKtlMmzekBuFX0xG5rsg38t1YwACJxJrG6T-SFaEarwpFZa49gEAAwIAA3gAAz0E" alt="3.2.46" /><figcaption>3.2.46</figcaption></figure><p></p><p>错选为 D。2 刷也错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACApxqyKt4bZZWhZ4SywkJXAiY3JRCjwACKBJrG6T-SFYiBwq4I86jjAEAAwIAA3gAAz0E" alt="3.2.49" /><figcaption>3.2.49</figcaption></figure><p></p><p>错选为 D。本题为概念背诵。固定分配了再去别人那里抢位置，棍母了。</p></section><section><h3>OS 王道选择题 1 刷第 4 章<a href="#os-王道选择题-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAp1qyKubbG1v1p6YUl7l2WXSU9nbhAACKRJrG6T-SFaV1IA9Fn1eYAEAAwIAA3gAAz0E" alt="4.2.3" /><figcaption>4.2.3</figcaption></figure><p></p><p>本题错选为 B。FAT32 所有的信息都包含在其本身，而不需要包括其本身的物理位置。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAp5qyKuttrewVUwQo9JCgNr1_o5vhgACKhJrG6T-SFZrq7vnOj8IgwEAAwIAA3gAAz0E" alt="4.2.5" /><figcaption>4.2.5</figcaption></figure><p></p><p>本题错选为 A。异步 IO 是节约 CPU 的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAp9qyKu7P0saQg4BBc90VnI4lBTF-gACKxJrG6T-SFagVaCDOzhevQEAAwIAA3gAAz0E" alt="4.2.10" /><figcaption>4.2.10</figcaption></figure><p></p><p>本题错选为 A，需要注意读入，两个过程，open 和 read。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqBqyKvLgcvnsIIfpeyhdKpqUZbjLAACLBJrG6T-SFaX9EMcFJZvlwEAAwIAA3gAAz0E" alt="4.2.25" /><figcaption>4.2.25</figcaption></figure><p></p><p>本题没做出来。首先是 open 过程，本题已经 open 好了，然后是 write，第 22 个逻辑记录也就是 5，5，5，5，2，启动五次，然后写，写完要写回去。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqFqyKva0cjmR7lLTxwLnNQKnejzXQACLRJrG6T-SFZehIRyVFmSsQEAAwIAA3gAAz0E" alt="4.2.28" /><figcaption>4.2.28</figcaption></figure><p></p><p>本题错选为 A。采用 FAT+ 显示链接分配，也就意味着该文件系统采用 FAT。FAT 文件系统的特点是臃肿，只有数据信息不在 FAT 里。512MB/8KB=2^16 个，即 16bit 来记录，一条文件信息需要记录 2B 的数据。由于 FAT 表必须连续且不可拆，所以最多有 2^16 条文件记录，所以 2^16×2B=128KB。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqJqyKvs3_TxQkarVkmDE6Ammg6ahgACLhJrG6T-SFYj3MS5L2xPhQEAAwIAA3gAAz0E" alt="4.2.38" /><figcaption>4.2.38</figcaption></figure><p></p><p>本题错选为 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqNqyKv8wqgHnEFujKYoRCmTlielfgACLxJrG6T-SFZnygGsXUrqugEAAwIAA3gAAz0E" alt="4.2.40" /><figcaption>4.2.40</figcaption></figure><p></p><p>第 40 题错选为 B。先检查合法性然后再 read；发动请求交换后然后再将得到的物理转换为逻辑。</p><p>第 41 题错选为 C。经典错误。用户优先级和调度那块有关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqRqyKwRSD3EQGpjhYh-WT-rcqZIuwACMBJrG6T-SFbVCZj_4ldj-QEAAwIAA3gAAz0E" alt="4.2.44" /><figcaption>4.2.44</figcaption></figure><p></p><p>本题错选为 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqVqyKwgYGIevo1BIr1O8S0cJiga7gACMRJrG6T-SFbiJrNuMdW8IwEAAwIAA3gAAz0E" alt="4.2.47" /><figcaption>4.2.47</figcaption></figure><p></p><p>本题错选为 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqZqyKwwlI0WBCJyUH9qDYoQkXxPCgACMhJrG6T-SFaL0el8qYa_GwEAAwIAA3gAAz0E" alt="4.2.56" /><figcaption>4.2.56</figcaption></figure><p></p><p>本题没选出来。采用 inode 结点也就意味着采用 UFS 文件系统，UFS 文件系统的 inode 结点存储在文件系统分配的地方，通常是磁盘刚开始那块。Inode 结点总数意味着这个操作系统最多拥有多少个文件数量，所以 A 无关。对于 B，间接地址索引的级数越多，意味着乘级越大；对于 C，地址项越多意味着对于单个级别有越大的索引范围；对于 D，文件块越大可以存储的文件越多。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqdqyKxCTC4_LoK-k5ivKinWWekAAbgAAjMSaxuk_khW-pBlMxkKYWUBAAMCAAN4AAM9BA" alt="4.2.60" /><figcaption>4.2.60</figcaption></figure><p></p><p>本题错选为 A。文件要完全表示。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqhqyKxULxulSsYyAsvTf-MpkgtlYQACNhJrG6T-SFbOm6jIYbYeAwEAAwIAA3gAAz0E" alt="4.3.10" /><figcaption>4.3.10</figcaption></figure><p></p><p>本题没选出来。对于位示图，100=32+32+32+4，即 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqlqyKxkzZ8FITMf-vTUdVraqA_zCQACNxJrG6T-SFYBVI6h6hVfMQEAAwIAA3gAAz0E" alt="4.3.14" /><figcaption>4.3.14</figcaption></figure><p></p><p>第 14 题错选为 D。</p><p>第 15 题没做出来。本题是选分配空闲的数据结构，传统的分配方式有空闲表法，空闲链表法，位示图和成组链表法，显然 1 和 3 正确。由于 FAT 表项与磁盘块一一对应，所以也可以记录空块。索引节点是专门为了实现文件名和文件信息发分开的数据结构，存储文件描述信息。</p></section><section><h3>OS 王道选择题 1 刷第 5 章<a href="#os-王道选择题-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqpqyKx-taObiPkN9Pl0C_ZY2t_fowACOBJrG6T-SFZApiqxAVFWagEAAwIAA3gAAz0E" alt="5.1.5" /><figcaption>5.1.5</figcaption></figure><p></p><p>本题错选为 D。设备控制器=IO 设备=IO 接口。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqtqyKyVEWWN2DtAAAGnR59hvXL5JuwAAjkSaxuk_khWFgt45A46AaoBAAMCAAN4AAM9BA" alt="5.1.11" /><figcaption>5.1.11</figcaption></figure><p></p><p>本体错选为 B。见 2 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAqxqyK0OqDdB378FW1qggw0cFh_QrAACOxJrG6T-SFa9uNj0EdmaHwEAAwIAA3gAAz0E" alt="5.1.16" /><figcaption>5.1.16</figcaption></figure><p></p><p>本题错选为 D。参数翻译为操作命令由设备无关性软件完成，驱动程序将这些命令翻译成操作系统听得懂的东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAq1qyK0glm7vPwpbCr7R2abCj2PR7QACPBJrG6T-SFZCSEEAAdZq3ZYBAAMCAAN4AAM9BA" alt="5.1.23" /><figcaption>5.1.23</figcaption></figure><p></p><p>第 23 题错选为 D。见 2 刷的流程分析。</p><p>第 24 题错选为 C，见 2 刷的流程分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAq5qyK00Wg9wT2tfhRPbJJ0EOaXCawACPRJrG6T-SFYgG1KW3PhqIgEAAwIAA20AAz0E" alt="5.2.1" /><figcaption>5.2.1</figcaption></figure><p></p><p>本体错选为 B。设备独立性可以理解为设备独立性软件那块。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAq9qyK1NiYyUcNl-QsYZDm8hOCiSrwACPhJrG6T-SFaV88IlfsVQsAEAAwIAA3gAAz0E" alt="5.2.9" /><figcaption>5.2.9</figcaption></figure><p></p><p>本题错选为 C。使用单缓冲，本题显然情景为稳定的时候，而不是一开始的时候。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArBqyK1jrdGAVzDyMjCP3YAoA48aeQACPxJrG6T-SFYem2jm3piruQEAAwIAA3gAAz0E" alt="5.2.13" /><figcaption>5.2.13</figcaption></figure><p></p><p>本体错选为 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArFqyK10luGFKprxzETazZvFYntsZAACQRJrG6T-SFalbEdbOVG3iwEAAwIAA3gAAz0E" alt="5.2.19" /><figcaption>5.2.19</figcaption></figure><p></p><p>本题错选为 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArJqyK2L8DKjRYlmpkhWzWuXWi4ZQwACQhJrG6T-SFav8A6NyNccUQEAAwIAA3gAAz0E" alt="5.2.22" /><figcaption>5.2.22</figcaption></figure><p></p><p>第 22 题错选为 C。</p><p>第 23 题错选为 C。背书题，为 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArNqyK2f3Bn40hSsX7wme45rcim5ewACQxJrG6T-SFYKcGpMWkzhhgEAAwIAA3gAAz0E" alt="5.2.25" /><figcaption>5.2.25</figcaption></figure><p></p><p>本题错选为 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArRqyK2v9SgD5p5z6tcdOqB5sFVPGgACRBJrG6T-SFbNtLtnE4jv1gEAAwIAA3gAAz0E" alt="5.2.31" /><figcaption>5.2.31</figcaption></figure><p></p><p>本题错选为 D。设备独立性软件做的事情是将用户操作转换为设备操作。向设备寄存器内写命令是将设备操作转换为操作系统操作。对于 3 是属于用户层软件做的事情。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArVqyK3Gjm3Xix3qF8Af5k5_fw-mYQACRhJrG6T-SFZCScCk3etYkgEAAwIAA3gAAz0E" alt="5.2.34" /><figcaption>5.2.34</figcaption></figure><p></p><p>本题错选为 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArZqyK3YwdMxKIgCG9rzXpVYXl5_xgACRxJrG6T-SFYvjjobzbdWbQEAAwIAA3gAAz0E" alt="5.3.1" /><figcaption>5.3.1</figcaption></figure><p></p><p>本体错选为 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArdqyK306VnCP7LWnr_2ujRHpxQS8AACSBJrG6T-SFZprx8r79Qx-gEAAwIAA3gAAz0E" alt="5.3.3" /><figcaption>5.3.3</figcaption></figure><p></p><p>本题错选为 C，注意光盘，例如选特定动画片的集</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArhqyK4HGLcPtUm62R7y-zVcWuXYlgACSRJrG6T-SFYkfmriXA0fbAEAAwIAA3gAAz0E" alt="5.3.5" /><figcaption>5.3.5</figcaption></figure><p></p><p>本题错选为 B。显然 CLOCK 是内存管理的东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArlqyK4ZmgtczIXeW3Kzby_ASx10jwACSxJrG6T-SFYF1sTqDFKO4QEAAwIAA3gAAz0E" alt="5.3.16" /><figcaption>5.3.16</figcaption></figure><p></p><p>第 16 题错选为 C。</p><p>第 17 题没做出来。</p></section></section>
<section><h2>计网王道选择题 1 刷（补）<a href="#计网王道选择题-1-刷补"><span>#</span></a></h2><section><h3>计网王道选择题 1 刷第 1 章<a href="#计网王道选择题-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArpqyK5D9a2TEol7YRZoCh6HEXuMbwACTBJrG6T-SFYBA_72TcK6vQEAAwIAA3gAAz0E" alt="1.1.12" /><figcaption>1.1.12</figcaption></figure><p></p><p>本题错选为 A。</p><p>对于 A，H1 向 H2 发送 5kb 数据，使用电路交换，首先先电路连接 2s，然后传输数据 5kb/2.5kb/s=2s，总共需要 4s；使用报文交换，则需要经过两端链路，5kb/2.5kb/s=2s，2×2s=4s；使用分组交换，5kb/5kb=1 组，所以 4s，综上，A 可以说是对的，也可以说是错的。</p><p>对于 B，H1 向 H2 发送 500kb 的数据，使用电路交换，首先先电路连接 2s，然后传输数据 500kb/2.5kb/s=200s，所以总共需要 202s；使用分组交换，总共有 500kb/5kb=100 组，由于有 2 段链路，所以最后应该是 101×2s=202s。</p><p>对于 C，H1 向 H2 发送 10kb 的数据，使用报文交换，即 10kb/2.5kb/s=4s，所以总共需要 8s；使用分组交换，10kb/5kb=2 组，所以 3×2s=6s。</p><p>对于 D，H1 向 H2 发送 15kb 的数据，使用报文交换，即 15kb/2.5kb/s=6s，所以总共需要 12s；使用分组交换，15kb/5kb=3 组，所以需要 4×2s=8s。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArtqyK5gP0Thl8q6j0iL2jzZqyo1ZAACTRJrG6T-SFb896aLY-5BPQEAAwIAA3gAAz0E" alt="1.2.4" /><figcaption>1.2.4</figcaption></figure><p></p><p>本题错选为 A。本题为背书，实体指的是实现该层。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACArxqyK56xMVU1Q_JJN1XU_BGs3DvcQACThJrG6T-SFa_WFYjQpWd4gEAAwIAA3gAAz0E" alt="1.2.12" /><figcaption>1.2.12</figcaption></figure><p></p><p>第 12 题错选为 A，为超级低级错误，脑子不知道怎么想的选的 D。</p><p>第 13 题错选为 A，对于 A，事实上是电气特性。这里辨析一下，机械特性指的是物理尺寸，电气特性指的是电压等，功能特性指的是什么线做什么，规程特性指的是时序。避免快速发送方淹没慢速接收方，指的是流量控制。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAr1qyK6X8oubL8H8LFHvgZwwPHHRXwACTxJrG6T-SFbeaRifpc1SdQEAAwIAA3gAAz0E" alt="1.2.15" /><figcaption>1.2.15</figcaption></figure><p></p><p>本题错选为 A。A 是应用层的功能，需要记住，用户处在最高位；对于 B，B 是物理层的功能；对于 C，C 是网络层的功能。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAr5qyK-hTi3sV32xO0dgcDCUswJ-CQACURJrG6T-SFbEi3bJESMjhQEAAwIAA3gAAz0E" alt="1.2.23" /><figcaption>1.2.23</figcaption></figure><p></p><p>本题第 5 空错选为 C。为网络实体提供，所以是为网络层提供服务，所以应该是数据链路层。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAr9qyK-34qgTGLPh5erdNcM_AsPL5gACUhJrG6T-SFay25-K1-LJ3gEAAwIAA3gAAz0E" alt="1.2.28" /><figcaption>1.2.28</figcaption></figure><p></p><p>第 2 空错选为 B。差错控制再 OSI 模型在数据链路层，而且这道题说了序号错误的是帧。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsBqyK_OqpR8BEDxGQYgz-N2-emQdAACUxJrG6T-SFZAbyXCbNjBCwEAAwIAA3gAAz0E" alt="1.2.33" /><figcaption>1.2.33</figcaption></figure><p></p><p>第 33 题错选为 D。不说了。</p><p>第 34 题错选为 B。这道题需要捋清楚具体过程，把图画出来然后捋一遍就好了。</p></section><section><h3>计网王道选择题 1 刷第 2 章<a href="#计网王道选择题-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsFqyLADlBexgGGHMjgrk4qqmPrh0wACVBJrG6T-SFY7EJwYJLjb8wEAAwIAA3gAAz0E" alt="2.1.2" /><figcaption>2.1.2</figcaption></figure><p></p><p>本题错选为 B。根据奈奎斯特定理，无噪声信道最大传输速率为 2Wlog2V，其中 W 为频率范围，V 为物理状态；根据香浓定理，有噪声信道最大传输速率为 Wlog2(1+S/N)，其中 W 为频率范围，S/N 为信噪比。所以</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsJqyLAUzpE9NXVw2qtk83baf0SpcAACVRJrG6T-SFayowyykm1CsgEAAwIAA3gAAz0E" alt="2.1.5" /><figcaption>2.1.5</figcaption></figure><p></p><p>本题错选为 D。更强的抗干扰能力为差分曼彻斯特编码，可以 10bastT 快速以太网默认采用的是差分曼彻斯特编码。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsNqyLAoMVZkKbVcmmRlmC3A0lfG7AACVhJrG6T-SFbDbrA0ywABBVgBAAMCAAN4AAM9BA" alt="2.1.7" /><figcaption>2.1.7</figcaption></figure><p></p><p>本题错选为 B。该题为无噪声的信道，且需要注意，4kb/s 不是最大传输速率，只是一个稀疏平常的值，所以 Wlog2V=4000，即 V=16。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsRqyLA8XFDB3BC9XUnq9MGd71E-IwACVxJrG6T-SFa1ioxFVKztGQEAAwIAA3gAAz0E" alt="2.1.9" /><figcaption>2.1.9</figcaption></figure><p></p><p>第 9 题错选为 A。某信道传输速率为 64kb/s，没说是最大的，所以就按照普通的算，所以 Wlog2V=64000 可得 W=32000，即有 32000Baud。</p><p>第 10 题没做出来。无噪声的 8kHz 信道，也就意味着 W 最大是 8kHz，每秒采样 24k 次，意味着每秒采样的 W 达到 24kHz，而最大只能是 8kHz，所以用 8kHz 算，2Wlog2V=2×8000×3=48000</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsVqyLBTf8yGjIzQWadU6ej8U5TMvgACWBJrG6T-SFa_2M6Zmsy7vgEAAwIAA3gAAz0E" alt="2.1.12" /><figcaption>2.1.12</figcaption></figure><p></p><p>第 12 题错选为 A。考虑有噪声的信道，Wlog2(1+127/1)=4000×7；考虑无噪声的信道，2Wlog2V，注意这里题目说了是二进制信号，所以 V=2。如果 V=1，那么电线上只能由一种状态，显然无法表示信号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsZqyLBm25pR0OznVjVurfqf4wxvUgACWRJrG6T-SFY1-lskwuehRAEAAwIAA3gAAz0E" alt="2.1.14" /><figcaption>2.1.14</figcaption></figure><p></p><p>本题错选为 C。这里的频率指的是频率范围，所以 W=0.4MHz。信噪比为 0.14/0.02=7。所以考虑无噪声的信道，2Wlog2V，由于没有给 V，所以先略去；考虑有噪声的信道，Wlog2(1+7)=3×0.4MHz=A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsdqyLB4COZ00PBJlRlKOEEqzzJ2BAACWhJrG6T-SFZZ_Xuwihb2xgEAAwIAA3gAAz0E" alt="2.1.15" /><figcaption>2.1.15</figcaption></figure><p></p><p>第 15 题错选为 B。8 相位两种幅度意味着 log2V=4，所以为 D。</p><p>第 16 题都没做出来。信道每 1/8s 变化一次，意味着 W=8Hz。需要注意的是，这里的 W=8Hz 是人为固定死的，而非频带宽度，所以只能用 8 去算。</p><p>第 17 他没做出来。考虑无噪声的信道，则 2Wlog232=2×10Mhz×5；而采用 Wlog2(1+S/N) 大于前者。所以最后是 2。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAshqyLCkGp1ic3uyqA_Xf7HLGdpKCQACWxJrG6T-SFZDNi92WhtEmgEAAwIAA3gAAz0E" alt="2.2.4" /><figcaption>2.2.4</figcaption></figure><p></p><p>本题想当然直接选 D。让网速变快是让电压跳变频率更快以及波形更清晰；减少信号衰减并没有影响到传输速率。</p><p>这里辨析一下，粗同轴电缆 10BASE5，细同轴电缆 10BASE2（最长 185 米），10BASET 双绞线（早期双绞线屏蔽行不如同轴电缆）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAslqyLC1VQJpKulY-nDDx7cm1RJXGwACXBJrG6T-SFaciTnOJERynwEAAwIAA3gAAz0E" alt="2.2.7" /><figcaption>2.2.7</figcaption></figure><p></p><p>本题错选为 D。光纤越粗，也就是多模光纤，多模光纤只适合近距离传输，并且采用普通灯光即可；单模光纤得用昂贵的激光作为光源，传输距离非常长。对于多模光纤，三束光再同一时刻进入，但是由于射入∠不一样，所以时间就不一样。光纤里肯定不是空的，因为要全反射。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAspqyLDOgYYV9bNZz0ihnhptr6SBGAACXRJrG6T-SFYCyVBIZC_mYAEAAwIAA3gAAz0E" alt="2.3.3" /><figcaption>2.3.3</figcaption></figure><p></p><p>本题错选为 C。调制解调器是在解析的时候用的，而不是中继器。中继器的作用是放大和整形。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAstqyLDkTVSPmyACL_E0Wfdof5elQwACXhJrG6T-SFaf6lUbxuIYxgEAAwIAA3gAAz0E" alt="2.3.5" /><figcaption>2.3.5</figcaption></figure><p></p><p>第 5 题错选为 D，为极其低级的错误</p><p>第 6 题错选为 D。不同协议的局域网指的是网络层的范畴，例如 IP 协议，早期的其他协议；不同类型的局域网，例如令牌环路网，以太网，显然不能转换（电信号的含义不同）且不同类型的局域网意思是物理拓扑不一样，例如总线型/环形/星形；局域网和广域网使用路由器。</p></section><section><h3>计网王道选择题 1 刷第 3 章<a href="#计网王道选择题-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAsxqyLEDxoA3nhFR0oLq_68JNTH6UgACXxJrG6T-SFZ76Xz2utr4IQEAAwIAA3gAAz0E" alt="3.1.3" /><figcaption>3.1.3</figcaption></figure><p></p><p>本题错选为。对于数据链路层这里考虑 OSI 模型，显然 AB 都是其功能。对于 D，显然 MAC 层需要根据物理层来设计，所以不可能屏蔽物理层，D 是网络层的功能。对于 C，需要理解介质控制子层也就是 MAC 的概念，例如以太网和令牌环的区别之类的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAs1qyLERbhWR4x1TT59adlRM7fVjYQACYBJrG6T-SFZMHj8l16kXcQEAAwIAA3gAAz0E" alt="3.1.5" /><figcaption>3.1.5</figcaption></figure><p></p><p>本题错选为 B。首先，这道题需要辨析，这里的“信道比较可靠”指的是信道本身可靠，而不是需要可靠。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAs5qyLEjnDxinuUMr7HLxAswDGCSwQACYRJrG6T-SFaBg5A5gK5pfAEAAwIAA3gAAz0E" alt="3.2.1" /><figcaption>3.2.1</figcaption></figure><p></p><p>HDLC 协议采用零比特填充法，即用 0111 1110 作为帧的起始和结束，除了这两个之外，剩下的每遇到 5 个 1 就填充 1 个 0。</p><p>所以对于 0111 1100 0111 1110 组帧，也就是 0111 1100 0011 1110 10，即 A。
辨析一下四种组帧方案：</p><p>其一，字符填充法。采用特定字符，例如“5”来区分边界，主要的缺陷在于计数字段错误会导致灾难性后果。</p><p>其二，字符填充发，可以理解为 PPP 协议（异步 PPP）采用的方案。</p><p>其三，零比特填充法，即碰到连续的五个 1 就加一个 0，比如说同步 PPP 协议</p><p>其四，违规编码法，若采用曼彻斯特编码，那么必然中间会有 1 跳变至 0（代表 1），0 跳变至 1，如果没有跳变，那么意味着为边界，这样的好处是不用扫描。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAs9qyLFBckgF5szbiB0MsXQq7-YcYgACYhJrG6T-SFbQXluzx332-AEAAwIAA3gAAz0E" alt="3.3.9" /><figcaption>3.3.9</figcaption></figure><p></p><p>需要注意的是，逗号才是分隔编码的，而不是空格与逗号都分隔。</p><p>这里捋一下编码这一章的概念，首先引入码距的概念，码距是两个编码之间异或出来为 1 的个数，任意两个有效字之间的码距的最小值即该编码集的码距。</p><p>而 l≥d+c+1，且 d≥c，其中 d 为检错，c 为纠错。</p><p>检错码常见的有两类，奇偶校验与循环冗余 CRC。对于奇偶校验码，有两种类型，奇校验与偶校验，最终的目的都是加一位，让 1 的个数为奇/偶。奇偶校验码只能校验奇数位的错误。</p><p>对于循环冗余 CRC，即首先约定一个 r+1 的生成式，然后在原始的式子后面+r 位 0，进行除法，这里的除法是模 2 除法，也就是期间的运算是异或，而不是正常的数值相减。最终得出的式子覆盖原本的 r 位。对于接收方，只需要运算一下，然后为 0，那么就可以了。</p><p>基于此，梳理一下校验。对于网络层的 IP 协议，ipv4 协议，其校验计算过程中引入的进位需要回卷，最终的出来的校验码取反码，作用范围为首部；ipv6 没有校验和。</p><p>对于传输层的 UDP，引入伪首部，对于伪首部以及全体进行求和，计算过程中引入的进位需要回卷，最终的出来的校验码取反码。对于 TCP，也需要引入伪首部，对整体进行与 UDP 类似的计算方法。</p><p>对于纠错码，主要是海明码。海明码的纠错 c=1，可以实现单比特纠错。也就是 <span><span>2k≥n+k+12^k \ge n+k+1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span></span></span></span></span><span></span><span>≥</span><span></span></span><span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>k</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>，其中 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 为校验码位数，信息为为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位。将校验位放在 <span><span>2i−12^{i-1}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>i</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 位上。举个例子。假设 n=4，则 k=3，所以对于海明码 H7H6H5H4H3H2H1，记 D 为信息位，P 为校验码，则 D4D3D2P3D1P2P1（校验码放在第 1，2，4 位）。对于信息位 1010，P1 校验 H3，H5，H7；P2 校验 H3，H6，H7；P3 校验 H4，H6，H7（P1 校验 H 位置所对应的最低位为 1）。将之分别异或可得校验位，最终演算的时候，P1 异或其校验的位，也就是 H3，H5，H7，最终需要 s1s2s3 均为 0，可得无错误，否则根据 s3s2s1 可以反推出某 1bit 错误。需要注意的是，这里所有数值都从 1 开始编码。</p><p>捋清楚了之后，来看这道题：显然码距为 4，所以 l≥d+c+1，且 d≥c，即 3≥d+c，所以可以反推出：d=3，c=0；d=2，c=1；d=1，c=1；d=1，c=0；d=0，c=0。由此可以判断出答案。
CRC 采用硬件计算，所以快，而 IP 那块如果再用的话，成本很高。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtBqyLF71EMaJBU4LuwGpaC9WMwXtwACZBJrG6T-SFY0lWvbTQORZwEAAwIAA3gAAz0E" alt="3.4.2" /><figcaption>3.4.2</figcaption></figure><p></p><p>本题错选为 D。本题想当然，没有具体情况具体分析。停止等待协议的使用场景主要是卫星链路，卫星链路源主机和目的主机距离间隔远，数据传输率低，误码率高。定量分析一下，假定忽略 ACK 帧的传输时延，则传输 1 个数据所需要的时间为 t+RTT，其中 t 为发送时延，效率=t/(t+RTT)，显然，当 t 变大的时候，即传输速率变低，整体效率变高；当 t 变小，即传输速率变高，整体效率变低。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtFqyLGPeM4wxF5GWbRyfEd7MqgG1wACZRJrG6T-SFZuoVVZyfzt0QEAAwIAA3gAAz0E" alt="3.4.8" /><figcaption>3.4.8</figcaption></figure><p></p><p>本题错选为 C。连续 ARQ 主要有两种形式，回退 N 帧与选择重传协议。对于回退 N 帧协议，接收窗口只有 1，所以必须按序接收。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtJqyLGgmoSkE7XFz8g-x8LQflv-cgACZhJrG6T-SFZqXAEJeySpFQEAAwIAA3gAAz0E" alt="3.4.15" /><figcaption>3.4.15</figcaption></figure><p></p><p>本题错选为 B。这里是理解死板的问题，永远记住总窗口为 2^4=16，然后发送窗口 + 接收窗口≤16，所以本题发送窗口最大为 9。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtNqyLIFRSUtPdbnzAAB-wABDwABKp4ERAACaRJrG6T-SFYolBe8_TbdygEAAwIAA3gAAz0E" alt="3.4.17" /><figcaption>3.4.17</figcaption></figure><p></p><p>本题错选为 C。2000B=16000bit，即发送时延为 16000/20000=0.8s=800ms。若采用停止等待协议，则传输一次数据的总时间为 RTT+800×2=1400+1600=3000ms，所以 800/3000&lt;0.8；若采用 GBN 协议，采用 3bit 给数据帧编号，即发送窗口为 7，接收窗口为 1，假定采用发 7 个数据回 1 次帧，即总时间为 8×800+1400=7800ms，所以 8×800/7800=64/78&gt;0/8；与后面的类似的做法，显然利用率=1；若采用 SR，则 NTd≥Td+RTT+Ta，所以利用率为 1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtRqyLI4PaKTia91B1T72lJXoml9wgACahJrG6T-SFb71SXXWitAtwEAAwIAA3gAAz0E" alt="3.4.19" /><figcaption>3.4.19</figcaption></figure><p></p><p>本题错选为 D。128B=128×8=1024。即 1024/16000=64ms，即 Td=Ta=64ms。为了使得信道利用率最高，即 NTd=Td+Ta+RTT，即 64N=64+64+500，向上取整，即 N=10，所以发送总窗口至少为 11，所以需要 4 位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtVqyLJJ2tQSjD13lwNzeLHgB8uT8gACaxJrG6T-SFbVHHV0sFZYXAEAAwIAA3gAAz0E" alt="3.4.24" /><figcaption>3.4.24</figcaption></figure><p></p><p>第 24 题不会做。显然，128B-512B=128×8bit-512×8bit，此时 Ta=Tb=64ms-256ms，所以 NTd=Td+Ta+RTT，即 N=(2T+540)/T。当 T=64ms 时，N 向上取整，即 N=11，所以发送总窗口为 12，所以至少为 4。</p><p>第 25 题不会做。显然，RTT=100ms，Td=8000/100M=0.08ms。NTd/(Td+RTT)=0.8，即 80%。</p><p>第 26 题不会做。显然，1000B=8000bit，Td=8000/128000=62.5ms，RTT=500ms，所以 NTd/(Td+RTT)≥0.8，向上取整可得 N=8。尤其需要注意，这里的 N 指的是发送窗口，接收窗口至少为 1，所以窗口总数至少为 9。</p><p>这几题最大的问题是不要双倍算时间。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtZqyLJghgz5QFhrCqBs_Z0iszD88wACbRJrG6T-SFba7j6qDb2oyAEAAwIAA3gAAz0E" alt="3.4.28" /><figcaption>3.4.28</figcaption></figure><p></p><p>本题错选为 C。和之前类似的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtdqyLJ1QznOAAEiZRIxAAFGRF3Dhe0eAAJuEmsbpP5IVhKj68Vtfct1AQADAgADeAADPQQ" alt="3.5.4" /><figcaption>3.5.4</figcaption></figure><p></p><p>第 4 题不会做。第 5 题错选为 D。借助这两道题理解一下复用的概念。为了提高效率以及节约成本，提出公用物理线路（信道）的概念。然而如何互不打扰？</p><p>复用的核心目的是最大化利用物理链路的容量。</p><p>模拟带宽：信号的频率范围。</p><p>数字带宽：数字的传输速率，每秒能传输多少个 bit。</p><p>FDM，频分复用，物理信道拥有很宽的频率范围，即模拟带宽，所以将之切为多块，每个人分到一个特定的频率区间。如果本身在 100Hz，即可以通过调制奇技术到其他地方。缺点是信号的频率边缘并非蒸汽切割，所以为了防止串，工程师必须在每个频道之间留出一道空白的频率区域，即卫带，
TDM，时分复用，每个人分固定的时间片。在 TDM 中，物理介质传输的是数字脉冲，如果有 4 个用户，每个用户每秒想发 1kb 的数据，那么物理介质每秒必须跑 4kb，即位速率必须大于单位用户位速率之和。其优化位统计时分复用，即 STDM，也就是动态分配时隙，代价是得多带上控制信息，即地址标签。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAthqyLKS0NGIQ86Q2SawihLR3ptgRAACbxJrG6T-SFYpNnJGBOKEAgEAAwIAA3gAAz0E" alt="3.5.14" /><figcaption>3.5.14</figcaption></figure><p></p><p>本题错选为 D。对于 1，2，显然正确，对于 3，节点在传输数据的时候，需要把令牌交付给下一个人。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtlqyLKnmf_zJUmqgJwECYO5vFrqkQACcBJrG6T-SFYThKV6POIlDgEAAwIAA3gAAz0E" alt="3.5.20" /><figcaption>3.5.20</figcaption></figure><p></p><p>本题错选为 A。CDMA 为码分复用，CSMA 为载波监听，TDMA 为时分复用，FDMA 为频分复用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtpqyLK5Odxp8xNjHEXexpPvFIoHmAACcRJrG6T-SFZLu1BMkSKKZgEAAwIAA3gAAz0E" alt="3.6.4" /><figcaption>3.6.4</figcaption></figure><p></p><p>本题错选为 B。网卡即网络接口卡，网络适配器，主要实现物理层和数据链路层。实际上也就是说，网卡本身并不具备网络层的功能，其并不负责帮别人转发数据。网卡拥有 mac 地址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAttqyLLUjWC00zqMg4o4KuN-wICzMwACchJrG6T-SFZeqyGJ14YphQEAAwIAA3gAAz0E" alt="3.6.19" /><figcaption>3.6.19</figcaption></figure><p></p><p>第 19 题错选为 D。本题实质上是对最短帧长之类的理解不足，这里总结一下。</p><p>CSMA/CD主要用于10BaseT网络中，最大段长为100m，争用期为51.2us，最短帧长为64B。最大单向传播时延=单向物理长度/信号传播速率，争用期=2×最大单向传播时延，最短帧长=争用期×数据传输率。</p><p>对于 A，冲突域最大距离变短，也就意味着单向传播时延变小，也就意味着争用期变短，也就意味着最短帧长变小。对于 B，网络传输速率增大，也就意味着最短帧长增加；对于 C，上层协议使用 TCP 的概率增加，什么都没有影响；对于 D，减少中继器数量意味着信号传播速率变大，也就意味着单向传播时延变短。</p><p>第 20 题错选为 C。使用 1 个 Hub 连接 2 个点，也就意味着总共单向传播距离为 200m，也就意味着单向最大传输时延为 200/200000000s，也就意味着争用期=2×200/200000000。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAtxqyLL-2pMsiQEHL-iDccrl36JwKAACdBJrG6T-SFbf0_m47Z-ncAEAAwIAA3gAAz0E" alt="3.6.23" /><figcaption>3.6.23</figcaption></figure><p></p><p>本体错选为 D。没什么好说的其实。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAt1qyLMlI4yIKnVHNs5wG7VII9E5pwACdxJrG6T-SFZBktlX0OVFtwEAAwIAA20AAz0E" alt="3.6.25" /><figcaption>3.6.25</figcaption></figure><p></p><p>本题错选为 C。吉比特以太网可以使用光纤/双绞线，有两种协议，支持全双工与半双工，半双工模式下使用 CSMA/CD；十吉比特以太网可以使用光纤/双绞线，只支持全双工。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAt5qyLM5opEhePd7f4it4CJHJp2szAACeBJrG6T-SFabOwmFBWuD8AEAAwIAA3gAAz0E" alt="3.6.28" /><figcaption>3.6.28</figcaption></figure><p></p><p>本体错选为 C。对于 A，如果信道空闲，需要等待 DIFS 的时间。B 是 CSMA/CD 的特点，对于 C，CSMA/CA 确实可以预约信道，但是并不是主要特点，而且也可以不适用这个（普通的不使用），对于 D，CSMA/CA 使用停止等待协议。</p><p>捋一下 DIFS 和 SIFS，PIFS 的话是点对点，基本没咋用。DIFS 是帧间，也就是区分实体帧和帧之间的，对于发送 ack 之类的中间都是停顿 SISF。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAt9qyLNR642HJPaGPOUhBXqaYkS9ugACehJrG6T-SFb520m0Epn90AEAAwIAA3gAAz0E" alt="3.6.31" /><figcaption>3.6.31</figcaption></figure><p></p><p>本题错选为 B。谁收，谁发，最终。AP2 发给 B，B 收，所以第一个地址是 MACB，AP2 发，所以是 BSSID2，这里的最终是源地址，源地址这里应该是 MAC2（因为过了一个路由器）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuBqyLNjqIPY3fkNSNgqlRjL5wsNPwACfBJrG6T-SFYkgoDPVc9DIQEAAwIAA3gAAz0E" alt="3.6.41" /><figcaption>3.6.41</figcaption></figure><p></p><p>本题错选为 C。100BaseT 而就意味着 100MB/s。假设总共距离为 x，那么单向最大传播时延为 x/200+1.535，争用期即 x/100+1.535×2，所以最短帧长即争用期×数据传输率=64B，其中数据传输率为 64Mbit/s。</p><p>2×3×4</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuFqyLO6S4t-877pAAHEj5pf4By3dqQAAn0Saxuk_khW4-W8Hjn2v9UBAAMCAAN4AAM9BA" alt="3.6.44" /><figcaption>3.6.44</figcaption></figure><p></p><p>本题错选为 C。最短帧长=128B=2×单向传播时延×数据传输率，所以 128×8/(2×100)=5.12us。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuJqyLPvnfeUkrvVmdecKblNiymfawACfhJrG6T-SFZ1Stp5sHEixgEAAwIAA3gAAz0E" alt="3.6.46" /><figcaption>3.6.46</figcaption></figure><p></p><p>本题错选为 C。第一个是 DISF，后面三个都是 SIFS。</p><p>捋一下 MAC 地址。</p><p>6B，前 3B 是 OUI，也就是唯一组织标识符，后 3B 是 NIC，位厂家自行分配的序列号。</p><p>第一个字节的 LSB，也就是最低一位，例如位 0000 0001，最低位也就是 LSB 是 I/G 位，为 0 则为单播，为 1 则为多播/组播。倒数第 2 位为 U/L 位，为 0 是全球唯一，为 1 是本地生成的虚拟地址。所以，0000 0000 是全球唯一，单播；0000 0001，全球唯一，多播；0000 0010，本地生成，单播；0000 0011，本地生成，多播。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuNqyLQH09bEILLvD6jr886FB26J3wACfxJrG6T-SFYN0nraqxN8KQEAAwIAA3gAAz0E" alt="3.7.1" /><figcaption>3.7.1</figcaption></figure><p></p><p>本题错选为 D。广域网使用 PPP 技术，局域网使用广播技术。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuRqyLQfZecNmtLz4yN3YJ4EysM5YQACgBJrG6T-SFbr-c4nBmrAIAEAAwIAA3gAAz0E" alt="3.7.7" /><figcaption>3.7.7</figcaption></figure><p></p><p>第 7 题错选为 C。PPP 是面向字节的协议。可以注意，差错控制指的是 CRC 这种，而不是传输是否可靠。使用校验然后丢弃和使用校验然后告知是两码事。</p><p>第 8 题错选为 A。PPP 可以支持不同的网络层协议。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuVqyLQ5m8_NYf1m5biBORomfvr8fwACgRJrG6T-SFbn7bFCKTmj5QEAAwIAA20AAz0E" alt="3.7.11" /><figcaption>3.7.11</figcaption></figure><p></p><p>本题错选为 C。PPP 仅支持全双工协议。</p><p>这里捋一下 PPP 协议，PPP 协议首先通过 LCP 鉴别，然后然后使用 NPC 配置网络参数；PPP 的主要特征是提供不可靠服务（不使用需要确认机制，仅提供无差错的接收，可以运行不同的网络层协议）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuZqyLRUXOZWyCxD_swnL8UEMQyuhAACghJrG6T-SFYZxxA1IlFgEgEAAwIAA3gAAz0E" alt="3.8.10" /><figcaption>3.8.10</figcaption></figure><p></p><p>第 10 题错选为 A。共享型以太网采用集线器。以太网物理拓扑为星形，逻辑拓扑为总线型。以太网提供的是无确认无连接的服务。</p><p>第 11 题错选为 B。广播式网络用于局域网，这里的服务接入点的意思是提供服务，也就是物理层为数据链路层提供服务。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAudqyLRpp9dpRV2NOmXVgglzk6gWAwACgxJrG6T-SFbISnhn11bvVQEAAwIAA3gAAz0E" alt="3.8.14" /><figcaption>3.8.14</figcaption></figure><p></p><p>本题错选为 B。本网络通信频繁的应该使用交换机。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuhqyLR7ZXZuEleuIRmYQ8EX66JcCgAChBJrG6T-SFaqXLsGwxZeZwEAAwIAA3gAAz0E" alt="3.8.20" /><figcaption>3.8.20</figcaption></figure><p></p><p>本题错选为 C。以太网帧最短为 64B，最长为 1518B，但是需要注意这里的交换方式是直通，直通的意思是只检查帧的 mac 地址就选择出口，也就是 6B。</p><p>此外可以注意，这里的是转发时延，而不是传输时延。</p></section><section><h3>计网王道选择题 1 刷第 4 章<a href="#计网王道选择题-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAulqyLSbOD7bK5i_ma9d_cWvK7-rPgAChRJrG6T-SFZ1AAEniH2ElNwBAAMCAAN4AAM9BA" alt="4.1.3" /><figcaption>4.1.3</figcaption></figure><p></p><p>本题错选为 B。可以理解为 ipv4 和 ipv6 网络。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAupqyLTBMVQD4cxnW8pFeGiIdfXfiwAChhJrG6T-SFZyDf7VqCq9BAEAAwIAA20AAz0E" alt="4.1.9" /><figcaption>4.1.9</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAutqyLT2WJomzRwl0s3-GFtYKvdj2QAChxJrG6T-SFbTjvVukGRsTwEAAwIAA3gAAz0E" alt="4.1.11" /><figcaption>4.1.11</figcaption></figure><p></p><p>这两题均错选为 A。</p><p>要搞清楚这两题，首先先捋一下概念，数据交换有三类技术，电路交换，报文交换以及分组交换。其中分组交换可以又分为虚电路
方式和数据报方式。</p><p>电路交换是在物理层实现的，即在物理层建立一条透明的传输通路，此时交换机根本不会去解析数据内容，也不会要求中间结点重传，差错控制必须由高层协议（例如传输层）去控制。</p><p>在高故障率的网络系统，数据报方式更适合。举一个例子，假假设美军的通信网络受到了敌方的核打击，网络中可能有 30% 甚至 50% 的路由器和通信链路在瞬间被炸毁！在这样故障率极高、节点随时毁灭的环境下，如何保证军方指挥指令依然能准确送达？</p><p>如果采用虚电路方式那么会频繁的建立与拆除连接。</p><p>对于第 11 题，也就是概念辨析了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAuxqyLUpL-oroLrgnXS-OTA66vcliQACiBJrG6T-SFa0Gz9aWfljNAEAAwIAA20AAz0E" alt="4.2.4" /><figcaption>4.2.4</figcaption></figure><p></p><p>本题错选为 C。对于 AB，IP 分组的校验和作用范围为首部（对于 IPv6 则没有校验和），计算校验和的方法是每 16bit 按反码求和再取反。如果是 TCP/UDP 的话，则是作用范围为全部，并且校验和每 16bit 按反码求和后需回卷，再取反。对于 C，TCP/IP 的网络层提供差错校验，但是不提供补救措施，仅丢弃该 IP 分组。ICMP 差错报文是 IP 分组不可达/时间超过/参数问题/改变路由时发送的。需要注意对于源点抑制（即拥塞丢弃），新版的已经取消。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAu1qyLVPc7pLP03s4kL1-ivEQu1BeQACiRJrG6T-SFbWe5oa0D_8SAEAAwIAA3gAAz0E" alt="4.2.11" /><figcaption>4.2.11</figcaption></figure><p></p><p>本题错选为 D。IP 片偏移字段为 100，即偏移为 800，IP 长度字段为 5，即 20B，总长度字段值为 100，即 100B。所以该分组数据部分长度为 100B-20B=80B，即 800-879（不给首部编号）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAu5qyLVh3nm38PDMaaFQlObSPJysjQACihJrG6T-SFYkMn3npK2owQEAAwIAA20AAz0E" alt="4.2.15" /><figcaption>4.2.15</figcaption></figure><p></p><p>本题错选为 C。单播地址，也就意味着非广播/多播地址。对于 D，224.0.0.0 至 239.0.0.0 为多播地址，对于 C，192.168.24.0011 1011/30，为广播地址；对于B，显然为广播地址，对于A，172.31.1000 0000.1111 1111，并没有后 32-18=14 位均为 1，所以显然是单波地址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAu9qyLVwMuWJl_m4LRxdDUvvI5kPlgACixJrG6T-SFbARreFSssipAEAAwIAA3gAAz0E" alt="4.2.22" /><figcaption>4.2.22</figcaption></figure><p></p><p>第 22 题没理解题目意思，所以没做出来。198.90.0000 1010.0000 0000/27，显然这是一个C类地址，即32-27=5，所以后5位作为IP地址，前3位作为主机地址。</p><p>第 23 题错选为。一个主机有 2 个 IP 地址，意味着这个主机有两块网卡。显然这是一个 C 类地址，且为私有地址。192.168.11.0001 1001；对于 A，显然这是网络号，所以不可以作为主机地址。对于 B，192.168.11.0001 1010，待定；对于 C，这是另一个网络的 IP 地址；对于 D，192.168.11.0001 1000。显然对于 B 和 D 而言，它们没有什么区别。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvBqyLWB7uzRNaXfAAEa0VT8f7F37uEAAowSaxuk_khWyp8cG6IyiDoBAAMCAAN4AAM9BA" alt="4.2.29" /><figcaption>4.2.29</figcaption></figure><p></p><p>本题错选为 B。</p><p>不能转发的：10.0.0.0-10.255.255.255；172.16.0.0-172.31.255.255；192.168.0.0-192.168.255.255。</p><p>回头理解一下：本机在决策使用哪个 ip 地址的时候，会根据目的 ip 进行类似和路由器一样的子网掩码计算，然后决定自己使用哪个 ip 发送。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvFqyLWWH3sw57TMUzi6lMxVYcZUGgACjRJrG6T-SFbBpozBfF3v9AEAAwIAA3gAAz0E" alt="4.2.33" /><figcaption>4.2.33</figcaption></figure><p></p><p>本题错选为 B。属于脑子抽了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvNqyLXGSoaY1t92CfZzPV7OagQlXwACjxJrG6T-SFb6p8IOjHYRNgEAAwIAA3gAAz0E" alt="4.2.40" /><figcaption>4.2.40</figcaption></figure><p></p><p>本题错选为 A。可以采用类似哈夫曼树的思想。</p><p>192.168.1.1000 0010/26</p><p>192.168.1.0000 0000/25</p><p>192.168.1.0100 0000/26</p><p>192.168.1.0110 0000/27</p><p>192.168.1.1110 0000/27</p><p>对比这几个 IP 地址，绘制哈夫曼树。需要注意的是，这道题的意思不是 ABCD 以及题目里给的，五选四凑出答案，而是问能不能是其中之一。</p><p>题目里显然是占 1/4，所以需要利用剩下的去凑 1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvRqyLXlbIPxJNJ-4He5rOZrq1nbjgACkBJrG6T-SFYhQOmK-IMH0AEAAwIAA3gAAz0E" alt="4.2.45" /><figcaption>4.2.45</figcaption></figure><p></p><p>本题错选为 C。首先观察子网掩码与默认网关，从 H1，H2 的视角来看，所有主机都在本网络内，从 H3 和 H4 的视角来看，只有它们相互认识，而不认识的必须交付给默认网关。</p><p>对于 A，H1 向 H3 发送数据，首先检查 IP 和子网掩码，发现属于同一个网络，所以直接发，但是没有 mac 地址，所以进行 ARP 请求。交换机收到这个请求后，由于为空，所以进行自学习，填 MACH1，随后进行泛洪，除了 H1 进入的那个端口外全部都发一遍广播帧。H2 收到广播帧后，在网络层将之丢弃，集线器收到之后直接信号放大转发，H3 和 H4 都收到，H4 在网络层丢弃，H3 收到。</p><p>对于 B，H3 向 H1 发送数据，首先检查 IP 和子网掩码，发现不属于同一个网络，所以发往默认网关，但是由于不知道默认网关的 MAC 地址，所以 H3 发送 ARP 请求寻找路由器。此时除了 H3 之外所有主机都受到了 ARP 请求，而只有 R2 进行回应。随后 H3 将数据发给 R2，R2 发送 ARP 请求，H1 发给 R2 其 MAC 地址，R2 发给 H1。</p><p>对于 C，H1 向 H2 发送，发现是同一个网络，直接发送，ARP 请求。</p><p>对于 D，H3 向 H4 发送数据，也是 ARP。</p><p>所以这道题可以很好的理解 ARP 请求与 IP。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvVqyLYhIYoAASSg6mgEy3_ng3hB31UAApESaxuk_khWBb8Rr726mq4BAAMCAAN4AAM9BA" alt="4.3.4" /><figcaption>4.3.4</figcaption></figure><p></p><p>本题错选为 C。需要注意，可以省略的是前导 0。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvZqyLYyIMcMVsnHv6Sq6C_v8R0UjwACkhJrG6T-SFa1V_gljk79twEAAwIAA3gAAz0E" alt="4.3.6" /><figcaption>4.3.6</figcaption></figure><p></p><p>本题错选为 D。IPv6 只有源主机才能分片，路由器收到太大的分片直接丢弃。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvdqyLZWjaWIEZjfJbMGF7DP-n_hjAACkxJrG6T-SFa7luhnOTzHigEAAwIAA3gAAz0E" alt="4.4.3" /><figcaption>4.4.3</figcaption></figure><p></p><p>本题错选为 B。A 显然是 RIP 的，对于 B，在稳定了之后是一样的（没必要重复去算）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvhqyLZnjMR7mFU2ffJwVa4IXMe1EAAClBJrG6T-SFagt4i8Q3NkjwEAAwIAA3gAAz0E" alt="4.4.5" /><figcaption>4.4.5</figcaption></figure><p></p><p>第 5 题错选为 A。B，并不是每个路由器都知道，而是只需要区域边界路由知道即可。</p><p>第 6 一错选为 D。使得 OSPF 协议更复杂。注意这里是区域，而不是自治系统边界路由器/核心路由器那一套。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvlqyLZ6CVUDxCSioUS12dEMxWWqBAAClRJrG6T-SFZAwuwK9ZUe4QEAAwIAA3gAAz0E" alt="4.4.23" /><figcaption>4.4.23</figcaption></figure><p></p><p>本题没做出来，其实只是因为最前面的分组转发没理解。</p><p>IP 多播主要需要注意，将 IP 地址的后 23 位映射到多播 mac 地址即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvpqyLaXTSj-TyPCuiiz6BHCLNoAAdoAApYSaxuk_khW_eRvqwU2wX8BAAMCAAN4AAM9BA" alt="4.4.1" /><figcaption>4.4.1</figcaption></figure><p></p><p>本题错选为 D。</p><p>移动 IP 的全过程，就像你（移动节点）带号离家出走去外地旅游。你到了外地后，先找当地的居委会（外地代理 FA）办个临时的暂住证（转交地址 CoA），并立刻打电话回老家，把这个暂住证号码告诉老家的村长（归属代理 HA）。这样，以后别人再往你老家寄信（真实目的地仍是你的永久 IP），老家村长就会直接把信截胡，然后用一个更大的新信封把原信包起来（IP 隧道封装），写上你的暂住证号码寄到外地。外地居委会收到大信封后，拆开扔掉，把里面的原信安全地交到你手里，从而保证你的 TCP 连接在漫游时永远不断线！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvtqyLasC8EyHngx2-Ilgg_WZri5iwAClxJrG6T-SFbalSbpSnBdfwEAAwIAA20AAz0E" alt="4.7.2" /><figcaption>4.7.2</figcaption></figure><p></p><p>本题错选为 A。其实理解一下就知道了。A 指的是广播域内的设备，B，显然很多设备都可以发送广播帧，对于 D，隔离冲突的设备是交换机，显然交换机的集合并不是冲突域。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAvxqyLbH5HRrsS9rBiqwW65hZjwD0gACmBJrG6T-SFYQPBSWN9_IpgEAAwIAA3gAAz0E" alt="4.7.13" /><figcaption>4.7.13</figcaption></figure><p></p><p>第 13 题错选为 B。显然是 D。</p><p>第 14 题错选为 A。显然是 C，因为过了 3 层。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAv1qyLbfNBtnj4VC1f3fxHKh9oTYmgACmRJrG6T-SFb76QpyHEa8LwEAAwIAA3gAAz0E" alt="4.7.16" /><figcaption>4.7.16</figcaption></figure><p></p><p>本题错选为 A。已经找到目的条目后，根据标识符转发。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAv5qyLbzVcroZePUPbNXMVotmhab-gACmhJrG6T-SFZrzqX8SKJ4twEAAwIAA3gAAz0E" alt="4.7.20" /><figcaption>4.7.20</figcaption></figure><p></p><p>本题错选为 D。对于 3，对于 IP 分组进行差错检测后，如果错了直接丢了。</p></section><section><h3>计网王道选择题 1 刷第 6 章<a href="#计网王道选择题-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAv9qyLcQn3IpGmzyaKUMgiqRlXEoTgACmxJrG6T-SFZ5mKoT8DBXeAEAAwIAA3gAAz0E" alt="6.1.4" /><figcaption>6.1.4</figcaption></figure><p></p><p>本题错选为 C。客户是面向用户的，服务器是面向任务的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwABasi3Ij-hNHjE93E7Z3iRh68TA8MAApwSaxuk_khW1gdM5aaDcUgBAAMCAAN4AAM9BA" alt="6.2.5" /><figcaption>6.2.5</figcaption></figure><p></p><p>本题错选为 A。主机请求域名解析的软件只需要知道本地域名服务器的地址并且委托其查询。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwJqyLeMzYd_NPrBrUA-jFns_mtIfgACnRJrG6T-SFZOs9e5RDWRogEAAwIAA3gAAz0E" alt="6.2.9" /><figcaption>6.2.9</figcaption></figure><p></p><p>本题错选为 A，事实上应该是背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwNqyLeeSTZxqybYCI48PU7Gj4XWwwACnhJrG6T-SFYhorof_6v-bwEAAwIAA3gAAz0E" alt="6.2.14" /><figcaption>6.2.14</figcaption></figure><p></p><p>本题错选为 B。捋一下过程：</p><p>本机委托本地域名服务器进行递归查询，此时不消耗 RTT，假设本地没有 DNS 缓存，那么本地域名服务器向根域名服务器查询，并且得到.com 的信息，消耗 1RTT，向顶级域名服务器查询，得到.abc.com 的信息，消耗 1RTT，向权限域名服务器查询，得到 &lt;<a href="http://www.abc.com" target="_blank">www.abc.com</a>&gt; 的 ip 地址，消耗 1RTT，递归结束。再对 ip 进行 get 请求，建立 TCP 连接，TCP 连接需要消耗 2 个 RTT，而 web 服务器传回来需要 1 个 RTT，所以综合上述，DNS 解析需要 5RTT。假设本地有 DNS 缓存，那么直接访问 ip 即可，即 2RTT。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwRqyLe0iF1L9n_Ibw2olTqBTh23HgACnxJrG6T-SFZ2HATPSnaYrQEAAwIAA3gAAz0E" alt="6.3.8" /><figcaption>6.3.8</figcaption></figure><p></p><p>本题错选为 A。传输数据应该由 20 号端口走。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwVqyLfLhV0mXvKi_-9VmgQnYWOg_QACoBJrG6T-SFamAAFl06ho6PwBAAMCAAN4AAM9BA" alt="6.3.12" /><figcaption>6.3.12</figcaption></figure><p></p><p>本题错选为 C。属于低级错误，在 IP 协议上跑的是 OSPF。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwZqyLfgQ-gtXB2m-pnlbZwUQfwzFgACoRJrG6T-SFYWlhZI_UlXugEAAwIAA3gAAz0E" alt="6.4.7" /><figcaption>6.4.7</figcaption></figure><p></p><p>本题错选为 D。显然 B 是错误的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwdqyLfzYRVr80digBdwWzEAASVU7YcAAqISaxuk_khWkoJlwCPlfkoBAAMCAAN4AAM9BA" alt="6.5.1" /><figcaption>6.5.1</figcaption></figure><p></p><p>本题错选为 D，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwlqyLgGYYnKspzSKUncdbsnuL7IGwACoxJrG6T-SFYFl9fqr627mwEAAwIAA3gAAz0E" alt="6.5.6" /><figcaption>6.5.6</figcaption></figure><p></p><p>第 6 题错选为 C。首先获得 index 建立一次，然后获取 3 个图像建立 3 次。</p><p>第 7 题错选为 A。GET 需要返回所有数据，PUT 需要新建，POST 需要处理，HEAD 仅为侦察。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwpqyLgW4BZyERNLmZM8j4gxN8OVCwACpRJrG6T-SFYAARzQwIPKlLgBAAMCAAN4AAM9BA" alt="6.5.11" /><figcaption>6.5.11</figcaption></figure><p></p><p>本题错选为 C。并行 TCP，所以首先先建立 TCP，花费 2RTT 的时间拿到 index，然后花费 2RTT 的时间拿到剩下的图片。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwtqyLgzNl5ijxOsjRz07s65w6WLcQACpxJrG6T-SFbYXS5Z9FZz1gEAAwIAA3gAAz0E" alt="6.5.14" /><figcaption>6.5.14</figcaption></figure><p></p><p>第 14 题错选为 A。5KB/MSS=5，所以数据信息抽象为 5。首先建立 TCP 连接，花费 1.5RTT，然后采用慢开始，也就是 0 时刻传输 1（花费 0.5RTT），1 时刻传输 2（花费 1RTT），2 时刻传输 2（花费 1RTT），这样可以传输完所有数据。此时总共是 4RTT。然后进行四报文挥手，花费 2RTT 后再消耗 2MSL 的时间，也就是总共 6RTT+2MSL=300ms+1600ms=1800ms。</p><p>第 15 题错选为 B。本道题应该这么考虑，源端口为 80 的分组，且 192.168.32.56，也就意味着这是一个来自于内网的 web 服务器的回应。此时有两种情况：第一，目的地址是内网 ip，那么此时只需要丢弃即可；第二，目的地址是外网 ip，那么意味着外网 ip 必然先对该内网 web 服务器进行请求，而想对内网 web 服务器进行请求，那么必然得有一个端口映射到 192.168.32.56&lt;80&gt; 端口。NAT 技术的本质是端口到端口的映射！对 HTTP 服务器请求的时候默认是到 80 端口，当然也可以自己去配。</p></section></section>
<section><h2>DS 王道选择题 2 刷<a href="#ds-王道选择题-2-刷"><span>#</span></a></h2><section><h3>DS 王道选择题 2 刷第 1 章<a href="#ds-王道选择题-2-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADy2rFHD9qCarlJkIZk02KjGRq7QFzAAK6FGsbxNooVmV88A6bSeh4AQADAgADbQADPQQ" alt="1.2.3" /><figcaption>1.2.3</figcaption></figure><p></p><p>错选为 D。考虑一个 n×n 大小的图，我的任务是得到这个图边 1 的入度，那么我只需要竖着遍历一次即可，即时间复杂度是 O(n)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADzGrFHGf5DJSqDOiBLyahlGwAASDISQACuxRrG8TaKFaMq7pTKC5CfwEAAwIAA3gAAz0E" alt="1.2.17" /><figcaption>1.2.17</figcaption></figure><p></p><p>第 17 题错选为 C。显然，执行时间为 <span><span>1+2+4+8+⋯+2t1+2+4+8+\cdots+2^t</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>4</span><span></span><span>+</span><span></span></span><span><span></span><span>8</span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>t</span></span></span></span></span></span></span></span></span></span></span>，其中 <span><span>t≤log⁡2nt \le \log_2 n</span><span><span><span></span><span>t</span><span></span><span>≤</span><span></span></span><span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span></span></span></span>。前者由等比数列求和公式可得 <span><span>2t+1−12^{t+1}-1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>t</span><span>+</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>，将 <span><span>t≤log⁡2nt \le \log_2 n</span><span><span><span></span><span>t</span><span></span><span>≤</span><span></span></span><span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span></span></span></span> 代入，显然是 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 的规模。</p><p>第 18 题错选为 C。显然，执行时间为 1+2+3+…+t，其中 t^2≤n。前者由数列求和公式可得 (1+t)t/2，将 t≤sqrtn 代入，显然是 n 的规模。</p></section><section><h3>DS 王道选择题 2 刷第 2 章<a href="#ds-王道选择题-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADzWrFHILmAwtvb4Z406DeocHKL_0UAAK8FGsbxNooVtCx9jGM2KTWAQADAgADeAADPQQ" alt="2.1.1" /><figcaption>2.1.1</figcaption></figure><p></p><p>本题错选为 D。数据元素的意思是一个 struct，而数据项是数据元素里的数据。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADzmrFHKjJtuVvHrYazeHPM_PmJHhAAAK_FGsbxNooVlxL5Ae6KMpNAQADAgADeAADPQQ" alt="2.3.3" /><figcaption>2.3.3</figcaption></figure><p></p><p>本题错选为 C。这里注意是结点内的单元。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADz2rFHL3ENueBMP4UsONhoOubdl5uAALAFGsbxNooVmsw80_Jg-xnAQADAgADeAADPQQ" alt="2.3.7" /><figcaption>2.3.7</figcaption></figure><p></p><p>本题错选为 B。注意这里是有序。</p><p>并且可以注意，可以先对数组进行排序然后再插入，从而选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD0GrFHXGPQkmXUi67BxRVIDRXvCBCAALCFGsbxNooViUvHDhZZ9ubAQADAgADeAADPQQ" alt="2.3.21" /><figcaption>2.3.21</figcaption></figure><p></p><p>本题错选为 D。L 本身就是指针。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD0WrFHaL1XAfBQaymsjaMxNkHh0mCAALDFGsbxNooVmntTF-HV-kOAQADAgADeAADPQQ" alt="2.3.28" /><figcaption>2.3.28</figcaption></figure><p></p><p>本题错选为 C。属于低级错误，没仔细看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD0mrFHe8aPrzXkXMgtKZ7oBmjPp6QAALFFGsbxNooVpTg6zIAAd0F3QEAAwIAA3gAAz0E" alt="2.3.33" /><figcaption>2.3.33</figcaption></figure><p></p><p>第 33 题错选为 C。注意这道题是 a，e，f，最终的选项不是 a，f，e。</p><p>第 34 题错选为 C。属于低级错误，模拟一遍既可以得到正确答案。</p></section><section><h3>DS 王道选择题 2 刷第 3 章<a href="#ds-王道选择题-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD02rFHhCbrX94o28Wysxwdwu-oM_YAALHFGsbxNooVhrrS6NHCHtEAQADAgADeAADPQQ" alt="3.1.15" /><figcaption>3.1.15</figcaption></figure><p></p><p>本题错选为 B。本题的意思是说，出栈的时候，必须 c 是第一个，d 是第二个。所以一开始必须 a 压进去，然后 b 压进去，c 压进去的时候必须立刻出去，然后 d 压进去的时候也必须立刻出去，然后出 b 和 a。这道题的意思不是 c 或 d 是最开始的，而是必须出栈顺序是 cd。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD1GrFHi8Mfv6RKhOKDxEsusukmc8XAALIFGsbxNooVtUzf5iT0gHSAQADAgADbQADPQQ" alt="3.2.2" /><figcaption>3.2.2</figcaption></figure><p></p><p>本题错选为 D。漏看了选项。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD1WrFHkXXkbMKIg2hKbQjfBlZDuvxAALKFGsbxNooVge7RIYYHLxtAQADAgADeAADPQQ" alt="3.2.15" /><figcaption>3.2.15</figcaption></figure><p></p><p>第 15 题错选为 A。全删的话，需要全部指向 null。其实多考虑几种情况，如果用的是循环双链表。</p><p>第 16 题错选为 C。D 这个选项更好，应该是这个意思。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD1mrFHmZuoyMejQE9JfgmOFXJnG6-AALLFGsbxNooVnDvouvgQLUbAQADAgADeAADPQQ" alt="3.3.6" /><figcaption>3.3.6</figcaption></figure><p></p><p>本题错选为 B。对于这类题有几个非常需要注意的地方，那就是调用最后不需要调用，这道题的思想反而在计组的 19 年大题理解了，以前还以为单纯是粗心大意。</p><p>对于这类题只需要记住，如果 f(1)=1 而不是调用，则不需要算。绘制出调用树即可（只需要包含 f 的结点）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD12rFHpbbciptkWXPmg-09cNu3ugIAALMFGsbxNooVpuZe2b5zBFLAQADAgADeAADPQQ" alt="3.3.11" /><figcaption>3.3.11</figcaption></figure><p></p><p>本题错选为 D。显然栈只允许在一端进行操作。对于 A，例如可以用动态规划。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD2GrFHrFjy9CCo5mZN9YQcLJ2zr9HAALPFGsbxNooVgb-Sw4AAdoXdgEAAwIAA3gAAz0E" alt="3.4.10" /><figcaption>3.4.10</figcaption></figure><p></p><p>本题错选为 B。对于 1，显然第一行和最后一行不是；对于 2，需要考虑 0 这个元素。</p></section><section><h3>DS 王道选择题 2 刷第 4 章<a href="#ds-王道选择题-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD2WrFHzZkHRpq37h2-El4TzP_fSuQAALQFGsbxNooVtPG6akP4PfwAQADAgADeAADPQQ" alt="4.2.9" /><figcaption>4.2.9</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD2mrFH09Brg1P_ymqLlIe0B15hjLrAALSFGsbxNooVnr94f6sKhp_AQADAgADeAADPQQ" alt="4.2.12" /><figcaption>4.2.12</figcaption></figure><p></p><p>这两题放一起讲，属于同类错误。首先先分别计算出两道题的 nextval，next 数组，然后尤其注意这道题是“滑动”距离，移动到的下标。</p><p>其他方面，注意一下下标问题。放在上面的是数字，放在下面的是移动到 xx，注意上面的开始是 0，下面的开始是 1。</p></section><section><h3>DS 王道选择题 2 刷第 5 章<a href="#ds-王道选择题-2-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD22rFH3oiQV2S2KbrEehwDlo4ge1RAALTFGsbxNooVtTvsRUs-mDsAQADAgADeAADPQQ" alt="5.2.19" /><figcaption>5.2.19</figcaption></figure><p></p><p>本题错选为 B。对于 1，显然正确；对于 2，显然根节点并非；对于 3，对于只有一个根节点的树并非。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD3WrFIP0sxdii8yWWVD9_YyzGOj6gAALXFGsbxNooVhIil4SIUwxmAQADAgADeAADPQQ" alt="5.3.3" /><figcaption>5.3.3</figcaption></figure><p></p><p>本题错选为 D。这道题得考虑多种情况，而不是只考虑一种。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD32rFIREPu3pWS2jBOhGYFHHbFKdWAALYFGsbxNooVh1FrRJ62LFnAQADAgADeAADPQQ" alt="5.3.7" /><figcaption>5.3.7</figcaption></figure><p></p><p>本题错选为 D。为想当然的错误。这道题一下子比较反直觉，不过想一下就知道应该是 C 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD4GrFISsiT2zZeZbVtJYUzyjP19s2AALZFGsbxNooVpdGAAGjVpSHvQEAAwIAA3gAAz0E" alt="5.3.10" /><figcaption>5.3.10</figcaption></figure><p></p><p>本题错选为 A。首先后序遍历的最后一个 A 是根，所以选项 A 可以直接排除。然后再绘制出完全二叉树的位置，一个个填上去就行了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD4WrFIXYSjPNpDPCxong0-fWvwav6AALaFGsbxNooVtOmnZZvlocTAQADAgADeAADPQQ" alt="5.3.21" /><figcaption>5.3.21</figcaption></figure><p></p><p>本题错选为 D。T 的中序遍历是一个升序序列，也就是原本的顺序是左根右，现在需要的顺序是右根左，所以采用递归交换左右子树，也就是先递归交换最左子树，递归交换右子树，最后再向上传递。对于 C 和 D 显然错误。</p><p>对于销毁，修改树而言，后序遍历一般是最优解也是最安全的。先把左右子树处理完之后再向上汇报。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD4mrFIb0oGdAcYnc-SzK4s0QipVPvAALbFGsbxNooVqlEJl__dpIeAQADAgADbQADPQQ" alt="5.3.24" /><figcaption>5.3.24</figcaption></figure><p></p><p>本体错选为 B。线索二叉树的指针可能是指向下一个点，也可能是指向结点。对于 tag 而言，如果 tag==0，那么意味着该结点有孩子，如果 tag==1，那么意味着这个指针指的是下一个点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD42rFIdbugiZLQkwKBw5jXoCuspGDAALcFGsbxNooVuGEUOVLUwZ3AQADAgADeAADPQQ" alt="5.3.27" /><figcaption>5.3.27</figcaption></figure><p></p><p>本题错选为 A。首先排除 BC。对于 A，无法解决先序前驱问题，对于 D，无法解决后续后继问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD5GrFJVGiDGofjF0V6hJx5EalHsmIAAIFFWsbxNooVlAXsCRo6VlsAQADAgADeAADPQQ" alt="5.5.9" /><figcaption>5.5.9</figcaption></figure><p></p><p>本题错选为 A。首先辨析概念，什么是度为 m 的哈夫曼树。首先辨析一下什么是度，对于普通的二叉树来说，每个非叶结点最大的度数为 2，对于 m 叉树，每个非叶节点最大的度数为 m。这里这道题指的是 m 叉树。</p><p>和后续的外部排序联系起来，这里可能会引入空结点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD5WrFKJEFyjNy1v7ztdVXlOX-JS6MAAIIFWsbxNooVqqbmqUw2bW4AQADAgADeAADPQQ" alt="5.5.15" /><figcaption>5.5.15</figcaption></figure><p></p><p>本题错选为 C，属于低级错误。显然对于 D，110，1100 重复。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD5mrFKKlrj5lq1qF7s2QfQZD6AajiAAIJFWsbxNooVq3ZwWaZPNd7AQADAgADeAADPQQ" alt="5.5.21" /><figcaption>5.5.21</figcaption></figure><p></p><p>本题错选为 C。对于 T1 而言，显然可能成立可能不成立。对于这类题应该多考虑边界情况。</p></section><section><h3>DS 王道选择题 2 刷第 6 章<a href="#ds-王道选择题-2-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD52rFKTJRr4DDQzJXfcP3o906s-emAAIKFWsbxNooVpmWNOLn1wHKAQADAgADeAADPQQ" alt="6.1.3" /><figcaption>6.1.3</figcaption></figure><p></p><p>本题错选为 D。对于 D，图可能是不连通的，所以不成立</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD6GrFKVjL86tz-xqzZlVTqZ1riORNAAIMFWsbxNooVmNG1neYk4GiAQADAgADeAADPQQ" alt="6.1.5" /><figcaption>6.1.5</figcaption></figure><p></p><p>对于这道题，显然让一个结点孤立无援，剩下的所有节点成为完全图。所以 n(n-1)/2=28，可得 n=8，所以 n+1=9。注意这里不是 n(n+1)。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD6WrFKW6lkFQvkwvLS1rMJIfycJnNAAINFWsbxNooVj4k_geqRVO2AQADAgADeAADPQQ" alt="6.1.10" /><figcaption>6.1.10</figcaption></figure><p></p><p>本题错选为 C。这道题一定要注意，连通分量指的是最大连通子图。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD6mrFNKJzGcr3VeQyvzSmeLqNVwx9AAIXFWsbxNooVs7T4qClWewWAQADAgADeAADPQQ" alt="6.2.14" /><figcaption>6.2.14</figcaption></figure><p></p><p>第 14 题错选为 D。第 15 题错选为 D。对于这题，被求入度和删除结点被要遍历所有边影响了。辨析一下，这道题注意是 1 个，如果要求所有结点的入度的话，是 O(n^2+ne)（得注意 n 和 e 谁更大），当然如果用数组记录的话会是 n+e。D 属于经典迷惑项，需要注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD62rFWEFEv7GWOiLmB2_bMOa2m-OfAALoD2sbxNowVkBJOzCZ86uUAQADAgADeAADPQQ" alt="6.3.2" /><figcaption>6.3.2</figcaption></figure><p></p><p>本题错选为 C。对于 1 和 2 显然是错误的。对于 4，非强连通图显然对于有向图 A-&gt;B-&gt;C，其只需要一次遍历即可。</p><p>对于 2，可以采用返利 A-&gt;C，B-&gt;C。</p><p>对于 4，可以采用 A-&gt;B，A-&gt;C。</p><p>对于判环——</p><p>对于无向图，可以采用 dfs/bfs。</p><p>对于有向图，可以采用 bfs/拓扑排序。</p><p>强连通图：全员两两互通、双向奔赴。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD7GrFWHDK0zVKP6HXt3AlFu7jVHCFAALpD2sbxNowVhSZ70CjoL_GAQADAgADeAADPQQ" alt="6.4.8" /><figcaption>6.4.8</figcaption></figure><p></p><p>本题错选为 A。对于 1 和 3 显然正确，对于 2，这道题的意思是求所有的每一对顶点，所以是 On3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD7WrFWjLAWc51IY60KJji1QdqKUoYAALqD2sbxNowVtPJotDIhkUxAQADAgADeAADPQQ" alt="6.4.24" /><figcaption>6.4.24</figcaption></figure><p></p><p>本题错选为 D。对于 D，可能。对于 C，是从所有出发的活动里最迟开始时间的最小值，这里不需要再减去什么东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD7mrFWm8Di4bJEv-5M0Rv4INSy6AtAALrD2sbxNowVkzWeH7DUhi9AQADAgADeAADPQQ" alt="6.4.26" /><figcaption>6.4.26</figcaption></figure><p></p><p>本题错选为 C。入度为 0，所以一定是起点。</p><p>辨析一下符号的含义，对于无权图，1 代表有线，0 代表无线，对于带权图，具体的值为有线且权值为 w，而 0 只会出现在主对角线，无穷大代表没有路。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD72rFWqaFjHPGjwxvjY3Q1_locI05AALsD2sbxNowVvQ1-8hw4rrtAQADAgADeAADPQQ" alt="6.4.44" /><figcaption>6.4.44</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD8GrFWtJSozUV4azG4PZUpJx4ae3OAALtD2sbxNowVqufDOQ0K7RoAQADAgADeAADPQQ" alt="6.4.44 订" /><figcaption>6.4.44 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD8WrFWuujI8OXY4Og3IhUdSWjqC64AALuD2sbxNowVujonMuMmjjiAQADAgADeAADPQQ" alt="6.4.46" /><figcaption>6.4.46</figcaption></figure><p></p><p>显然 1 和 2 是错的，3 是对的，所以是 B。</p></section><section><h3>DS 王道选择题 2 刷第 7 章<a href="#ds-王道选择题-2-刷第-7-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD8mrFWyKhKUQ0shciHWFovM0U3oLIAALvD2sbxNowVgNkLbGbbpn5AQADAgADeAADPQQ" alt="7.2.2" /><figcaption>7.2.2</figcaption></figure><p></p><p>本题错选为 C。对于这道题，想当然没有计算 ASL，想当然导致的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD82rFXEt1zqtaqRjaLGxZ36rzZMAlAALwD2sbxNowVr4NEpOmkeWFAQADAgADeAADPQQ" alt="7.2.19" /><figcaption>7.2.19</figcaption></figure><p></p><p>对于这类题，首先先开根号。65025 开根是 255。现在最开始 255 进行折半查找，得出 8 次比较，而因为是最好的情况，所以内部也是有序的，所以也是 8。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD9GrFXGgr5hVWDQLVfxfoE6j8iGQ7AALxD2sbxNowVtxQFY6NL_xKAQADAgADeAADPQQ" alt="7.3.11" /><figcaption>7.3.11</figcaption></figure><p></p><p>对于第 11 题和第 12 题，采用递推求解方式，也就是 Cn=Cn-1+Cn-2+1，代入计算即可。</p><p>这个公式算的是总结点数，而不是那一层的结点数。</p><p><span><span>N0=0N_0 = 0</span><span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>（空树，高度为 0）</p><p><span><span>N1=1N_1 = 1</span><span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></p><p><span><span>N2=2N_2 = 2</span><span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span></p><p><span><span>N3=N2+N1+1=2+1+1=4N_3 = N_2 + N_1 + 1 = 2 + 1 + 1 = 4</span><span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span></p><p><span><span>N4=N3+N2+1=4+2+1=7N_4 = N_3 + N_2 + 1 = 4 + 2 + 1 = 7</span><span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>7</span></span></span></span></p><p><span><span>N5=N4+N3+1=7+4+1=12N_5 = N_4 + N_3 + 1 = 7 + 4 + 1 = 12</span><span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>5</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>7</span><span></span><span>+</span><span></span></span><span><span></span><span>4</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>12</span></span></span></span></p><p><span><span>N6=N5+N4+1=12+7+1=20N_6 = N_5 + N_4 + 1 = 12 + 7 + 1 = 20</span><span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>5</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>12</span><span></span><span>+</span><span></span></span><span><span></span><span>7</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>20</span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD9WrFXTNNXDzaIHEjMts-xnrGd3pZAALyD2sbxNowVqoWfBU4S_eQAQADAgADeAADPQQ" alt="7.3.15" /><figcaption>7.3.15</figcaption></figure><p></p><p>对于第 15 题，注意这道题只有一个根节点的二叉树高度是 0。</p><p>对于第 16 题，显然 AB 正确。</p><p>对于 3：</p><p>AVL 树是绝对高度平衡的（左右子树高度差绝对值小于 1），树高严格控制在约 <span><span>1.44log⁡2n1.44\log_2 n</span><span><span><span></span><span>1.44</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span></span></span></span>；</p><p>红黑树是弱平衡的（最长路径不超过最短路径的 2 倍），树高最高可达 <span><span>2log⁡2n2\log_2 n</span><span><span><span></span><span>2</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span></span></span></span>；</p><p>红黑树的优势在于减少旋转开销。</p><p>对于 4：左右孩子可以左孩子高为 2，右孩子高为 1，孩子平衡但是自己不平衡。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD9mrFXirTSRr0nw7DPIGnVDgMz8DaAALzD2sbxNowVl0O3SQ0Y36oAQADAgADeAADPQQ" alt="7.4.1" /><figcaption>7.4.1</figcaption></figure><p></p><p>本题错选为 A。如果是 4，那么 4/2 取高，也就是至少有 2 个分叉，至少 1 个结点，至多 3 个结点；如果是 3，那么 3/2 取高，也就是至少 2 个分叉，至少 1 个结点，但是至多 2 个结点；如果是 5，那么 5/2 取高，也就是至少 3 个分叉，至少 2 个结点，至多 4 个结点。所以可能是 4，5。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD92rFXki-P__kAzYqGN6fqLjeQWZKAAL0D2sbxNowVsQeGcY3taN-AQADAgADeAADPQQ" alt="7.4.4" /><figcaption>7.4.4</figcaption></figure><p></p><p>第 4 题错选为 A。属于低级错误。显然应该是 B。</p><p>第 5 题错选为 D。m 阶 B 树，假设 3 阶 B 树有 1 个关键字（需要注意 B 树的叶节点指的是 null），那么显然是 2 个页结点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD-GrFXrQI9qqynihRWli4iJwhfnyVAAL1D2sbxNowViXoXR2Pxoj2AQADAgADeAADPQQ" alt="7.4.7" /><figcaption>7.4.7</figcaption></figure><p></p><p>第 7 题错选为 A。一样注意 B 树的叶节点指的是 null，所以假设 m 为很大的数，n 为 1，那么关键字至少为 1，显然可以排除法做出为 D。</p><p>第 8 题没做出来。注意 B 树树高只到终端节点，B+ 树树高到信息。</p><p>假设是基本空的，也就是 5/2 取高 -1，也就是每层最少 2 个结点。所以当 h=1，总共是 2 个分叉，第 2 层 2× 3 个分叉，第三层 2×3×3 个分叉，以此类推。</p><p>所以 <span><span>54≥2×3h−154 \ge 2 \times 3^{h-1}</span><span><span><span></span><span>54</span><span></span><span>≥</span><span></span></span><span><span></span><span>2</span><span></span><span>×</span><span></span></span><span><span></span><span><span>3</span><span><span><span><span><span><span></span><span><span><span>h</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>，即 <span><span>hmax⁡=4h_{\max}=4</span><span><span><span></span><span><span>h</span><span><span><span><span><span><span></span><span><span><span><span>m</span><span>a</span><span>x</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span>。（这道题用的是失败算的，也就是第 <span><span>h+1h+1</span><span><span><span></span><span>h</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 层的总数至少是 <span><span>2×3h−12 \times 3^{h-1}</span><span><span><span></span><span>2</span><span></span><span>×</span><span></span></span><span><span></span><span><span>3</span><span><span><span><span><span><span></span><span><span><span>h</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD_GrFXyqNbmRQY6xK5Q9nKfKKkQbUAAL2D2sbxNowVgbYCPoqTXEcAQADAgADeAADPQQ" alt="7.4.10" /><figcaption>7.4.10</figcaption></figure><p></p><p>本题错选为 C。根节点已经读入内存，所以不需要花费额外时间去读根。那么假设查找失败为 2017，也就是 <span><span>2017≥2×7h−12017 \ge 2 \times 7^{h-1}</span><span><span><span></span><span>2017</span><span></span><span>≥</span><span></span></span><span><span></span><span>2</span><span></span><span>×</span><span></span></span><span><span></span><span><span>7</span><span><span><span><span><span><span></span><span><span><span>h</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>，可得 <span><span>h=5h=5</span><span><span><span></span><span>h</span><span></span><span>=</span><span></span></span><span><span></span><span>5</span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD_WrFX1q0Xk9ADXM1N9wXg1oL6WmSAAL3D2sbxNowVmz-Fqrf2Q6MAQADAgADbQADPQQ" alt="7.4.12" /><figcaption>7.4.12</figcaption></figure><p></p><p>本题错选为 D，属于低级错误。显然对于 B 树只支持…</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD_mrFX30JKeQpU1ECyE_O5nTwfXrUAAL4D2sbxNowVlbdWqQrYSNcAQADAgADeAADPQQ" alt="7.4.23" /><figcaption>7.4.23</figcaption></figure><p></p><p>第 23 题错选为 C。删除 260 后，可能用其直接前驱来补，所以也就是把 110 补上去。但是把 110 补上去又导致 100 那里缺了一个关键字，所以访问左右兄弟，发现左兄弟可以拿一个结点，所以变成 90，100；
删除 260 后，从其直接后继补，也就是 280，300 缺了人，左右兄弟都补不了，所以需要合并，合并的时候，显然 A 是对的，B 也是对的。假设是 D，那么……</p><p>对于这道题，直接把 D 带进去，会发现必然不可能成立，这道题分析不如直接带！</p><p>第 24 题错选为 A。1 显然是正确的，3 显然是不正确的；对于 4，插入的关键字结点最终位于叶节点，不一定，可能通过调整调整上去了，所以综合上述，CD 可以排除。考虑 2，B 树的叶节点指的是最下面一层的空结点，一旦删除那么必然会导致也会节点变化。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQAD_2rFX8Qi1mt5r-cTpq1UfW9Oio9QAAL5D2sbxNowVj7ic1uqKHDaAQADAgADbQADPQQ" alt="7.5.2" /><figcaption>7.5.2</figcaption></figure><p></p><p>本题错选为 C。很小也可以用哈希。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQABasVf4veYzV67n9mfs8tlU0NouPYAAvsPaxvE2jBWW6s6y6Ns5v0BAAMCAAN4AAM9BA" alt="7.5.4" /><figcaption>7.5.4</figcaption></figure><p></p><p>本题错选为 A，属于低级错误。显然对于开放定址法，非同义词之间也有可能发生冲突。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQFqxWAE8yGUFUdlAlY7q1G9b537DgAC_A9rG8TaMFYO-3RUBKe-WgEAAwIAA3gAAz0E" alt="7.5.8" /><figcaption>7.5.8</figcaption></figure><p></p><p>第 8 题错选为 B。为低级错误。如果选择一个很烂的散列函数。</p><p>第 9 题错选为 C。为低级错误。</p><p>第 10 提错选为 D。解决冲突的时候肯定不在原来的位置。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQJqxWB7CJAiyXpK1nq4nSEJ0nI9hwAC_Q9rG8TaMFY9vfM5UxrejgEAAwIAA3gAAz0E" alt="7.5.11" /><figcaption>7.5.11</figcaption></figure><p></p><p>本题错选为 C，属于低级错误。拉链法构造，mod13 即可，这道题忽略了 1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQNqxWCaxHbQHWyqRP1AC-sFnUHzjgAC_g9rG8TaMFZMzzO5NDRepgEAAwIAA3gAAz0E" alt="7.5.19" /><figcaption>7.5.19</figcaption></figure><p></p><p>本题错选为 A。显然 AB 是肯定正确的，对于 C，不管有没有发生都 +1。</p></section><section><h3>DS 王道选择题 2 刷第 8 章<a href="#ds-王道选择题-2-刷第-8-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQRqxWEb0Feq4qO5v0in_GnJGxC6AwAC_w9rG8TaMFY8gh8Y7hMhJwEAAwIAA3gAAz0E" alt="8.2.11" /><figcaption>8.2.11</figcaption></figure><p></p><p>原本的：EASYQUESTION</p><p>第一轮：EASIONESTYQU（总比较为 6 次）</p><p>第二轮：4+4+3</p><p>所以总共是 6+4+4+3=17 次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQVqxWE8LxAh0u3-OmjlWy89E_0cDQADEGsbxNowVnima8HhEVTvAQADAgADeAADPQQ" alt="8.3.5" /><figcaption>8.3.5</figcaption></figure><p></p><p>本题错选为 D。扣个字眼，最。对于 D，可以 shuffle 一下，但是对于 B 却无法解决。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQZqxWFXzg5w38HX-ZPt9YQoj1v4PgACARBrG8TaMFaqwpBcYoxhZAEAAwIAA3gAAz0E" alt="8.3.14" /><figcaption>8.3.14</figcaption></figure><p></p><p>本题错选为 A。注意，即便是最好的情况，也就是 12345678，以 4 开始划分，那么第 1 轮比较 7 次（这仅是第 1 轮的），第 2 轮 123 比较 2 次，5678 比较 3 次；第 3 轮 78 比较 1 次，总计 7+2+3+1=13。</p><p>这里我思考成仅 1 轮。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQdqxWF4ehqi6rXYuCk4JAZrhSvZ9wACAhBrG8TaMFbIMMX_Di6-2QEAAwIAA3gAAz0E" alt="8.3.18" /><figcaption>8.3.18</figcaption></figure><p></p><p>本题错选为 B。快排的第二趟结果，意思是能不能找到 2 个轴。对于这类题一定要想到先找端点最值。对于 A，显然可以以 28 和 72 划分；对于 B，显然可以以 2 和 72 划分；对于 C，显然可以以 2 和 28 划分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQhqxWGh9Ln2PtqoPQ0_qjA6O84XvQACAxBrG8TaMFaevc1fSWiOAQEAAwIAA3gAAz0E" alt="8.3.20" /><figcaption>8.3.20</figcaption></figure><p></p><p>本题错选为 B，属于低级错误，低级到我都不想分析了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQlqxWIC6w0blmI-Mnl_255OLZ5zQgACBBBrG8TaMFbEazhgb5dffwEAAwIAA3gAAz0E" alt="8.4.13" /><figcaption>8.4.13</figcaption></figure><p></p><p>绘制树之后，22 换到最前面，先和 34，53 比较，22 和 53 换，然后再和 46 比较。总共 3 次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQpqxWIZX6-_YddjxlrQ-8pNmrzm7AACBRBrG8TaMFajmD_rkqM1ogEAAwIAA3gAAz0E" alt="8.5.16" /><figcaption>8.5.16</figcaption></figure><p></p><p>第 16 题错选为 D。我都不知道为啥我会选 D。插到最后一个比较两次啊。</p><p>第 17 题错选为 D。我也不知道为啥会选错。</p><p>总之上述三题属于同质错误，需要注意的是位于第一个要比较两次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQtqxWI0GYxSic_FtGgQ5iuVulaDlwACBhBrG8TaMFZ7GKKBwNH5EwEAAwIAA3gAAz0E" alt="8.5.8" /><figcaption>8.5.8</figcaption></figure><p></p><p>本题错选为 A，首先是分治过程，先切成 1，2，6，4，5，3，8，7。第一次比较是 1 和 2，6 和 4，5 和 3，8 和 7，共计 4 次比较，排序为 12，46，35，78；第二次比较是 1 和 4，2 和 4，3 和 7，5 和 7，所以总共 4 次比较，排序为 1246，3578；第三次比较是 1 和 3，2 和 3，4 和 3，4 和 5，6 和 5，6 和 7，这部分总计 6 次。所以总共为 4+4+6=14。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQxqxWJPt-aGMfBRVhU1P0tyzYkkxgACBxBrG8TaMFbQ0SvalTC63gEAAwIAA3gAAz0E" alt="8.5.11" /><figcaption>8.5.11</figcaption></figure><p></p><p>本题错选为 C。判断稳定性，简单选择排序不稳定，直接插入排序稳定。由题设可知，先按照低位的排（不要被结构体排序的思维影响了），然后再排高位，所以排除 AC。由于第一次排已经确定了低位的顺序，所以高位不能采用非稳定的排序。综上述选 D。</p><p>其实考虑 LSD，这道题意思是就是 k1k2，所以先排 k2 然后排 k1，由于简单选择排序不稳定，直接插入排序稳定，因为 k1 值不能改变 k2 的顺序，所以需要稳定。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQ1qxWMvVsR8iq18io4gnCgNv12kTQACCBBrG8TaMFbbgYB9sCr6lAEAAwIAA3gAAz0E" alt="8.6.7" /><figcaption>8.6.7</figcaption></figure><p></p><p>第 7 题错选为 A。对于直接插入排序，排序的趟数显然一直是 n-1，不要和其他排序（例如冒泡排序混淆了）</p><p>第 8 题错选为 D。显然可以排除快排和冒泡（冒泡默认优化）。</p><p>第 9 题错选为 D。冒泡排序即便已经 ok 了，但是还是得再扫一次去判断。</p><p>第 10 题错选为 B。这道题的意思不是说选项里面的 x 和 y 有相同的，而是问其本身是不是相同的。所以 A 显然。对于 B 的基数排序，不基于关键字比较，而是基于分配与收集</p><p>第 11 题错选为 A。堆不是查找的。</p><p>第 12 题错选为 C。对于 4，根节点的所有子树可以并行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQ5qxWNVoRc114DU03XN5vQRTzf_UAACCRBrG8TaMFYy2AKd0-ebSwEAAwIAA3gAAz0E" alt="8.6.17" /><figcaption>8.6.17</figcaption></figure><p></p><p>本体错选为 C。对于 1，2，3 都可以，而对于 4 和 5 利用了随机访问。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAQ9qxWN8E5-HdxTYkoyv3WXAm7u9SQACChBrG8TaMFa0QnGexi3Q0gEAAwIAA3gAAz0E" alt="8.6.19" /><figcaption>8.6.19</figcaption></figure><p></p><p>本题错选为 D。属于很低级的错误，其实也不想解释。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARBqxWOT1TeOXM3GPc2wqgIXYpBUYgACCxBrG8TaMFauCVqfnkeW9AEAAwIAA3gAAz0E" alt="8.7.4" /><figcaption>8.7.4</figcaption></figure><p></p><p>第 4 题错选为 C。首先计算初始归并段，由于能容纳 600 个记录，所以 375000/600=625，625 个归并段一直除以 5 就好了，得到 4 趟归并。</p><p>第 5 题错选为 B。显然 D 是错的（）我也不知道为什么要选其他选项。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARFqxWOzuO68siEWQlRT1vviDxu9NgACDBBrG8TaMFbDl3qISnfPggEAAwIAA3gAAz0E" alt="8.7.11" /><figcaption>8.7.11</figcaption></figure><p></p><p>本题错选为 A。最佳归并树是外部排序得第二步。应该是 B。</p></section></section>
<section><h2>计组王道选择题 2 刷<a href="#计组王道选择题-2-刷"><span>#</span></a></h2><section><h3>计组王道选择题 2 刷第 1 章<a href="#计组王道选择题-2-刷第-1-章"><span>#</span></a></h3><p>发生溢出和发生舍入是两个概念。</p><p>IEEE 表示法理解为科学计数法，10(24 个 0),精读其实不会发生丢失。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAeBqx7QCBBKwwZEIlmkC9wywkYlEdgAC3hJrGz_BQFbS20Cs750TsgEAAwIAA3gAAz0E" alt="1.2.1" /><figcaption>1.2.1</figcaption></figure><p></p><p>第 1 题错选为 A。运算器 + 控制器 + 存储器是 CPU，而不是完整的计算机系统；主机 + 外设只有硬件，没有软件；主机 + 应用没有外设。</p><p>第 2 题错选为 D。冯诺伊曼机也就是现代计算机的前身，根据汇编来看的话，事实上每一条指令都是数据（只是解释的方式不一样），所以采用的是数据流驱动。显然，前面是错误的解释。对于 A，现代的计算机是根据 PC 来进行的；对于 B，指的是多核 CPU；对于 C，指的是 CPU 内部控制器；对于 D，其打破了按照顺序驱动的方式，而是某条指令的数据需求好了就立刻开始运行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAeJqx7RBmX0iaHvV6Pvgyf7izrqzOQAC3xJrGz_BQFaof20k8Rzw7QEAAwIAA3gAAz0E" alt="1.2.5" /><figcaption>1.2.5</figcaption></figure><p></p><p>本题错选为 A。本题可以从系统结构那门课的角度去看，并且操作系统事实上可以由汇编/高级语言编写，显然，前面是错误的解释。事实上应该从谁为谁服务的角度去考虑。机器语言只认识二进制指令，OS 对硬件（也就是裸机）进行扩展，提供了系统调用，操作系统是最接近硬件的软件；有了 OS 提供的基础服务后，程序员可以直接用汇编语言来写程序，不仅可以直接用硬件的机器指令，还可以调用 OS 提供的系统调用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAeNqx7S-XWkPRKhnyBgSja1l4Xm8VAAC4RJrGz_BQFbfQvj_K6xiQQEAAwIAA3gAAz0E" alt="1.2.12" /><figcaption>1.2.12</figcaption></figure><p></p><p>本题错选为 D。梳理一下，这几个概念：链接指的是打包 exe；汇编指的是将汇编语言程序转换为机器级语言程序；编译指的是将高级语言转换为汇编或者机器级别语言；解释指的是将高级语言程序一条条翻译为机器级代码，不会生成代码文件。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAeRqx7Tn_hDZUPBMsoHscDR9wO2N-QAC4hJrGz_BQFaidsFNYLHRmAEAAwIAA3gAAz0E" alt="1.3.3" /><figcaption>1.3.3</figcaption></figure><p></p><p>本体错选为 B。平均 CPI 相等意味着每条指令的平均时钟周期数相等，功能完全相同意味着程序需要执行的指令数相同（存疑？），并且假设数量为 N。假设有两个主频，G1 和 G2，且 G1&gt;G2，则时钟周期分别为 1/G1，1/G2，执行时间分别为 N/G1&lt; N/G2，即 M1 中主频搞得计算机执行速度快。</p><p>事实上，功能完全相同并不意味着指令的数量相同，所以无法确定哪一台机器更快。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAeVqx7UCsgT5thcNghNJX-JOLv6ujgAC4xJrGz_BQFZFTkDvUl1yowEAAwIAA3gAAz0E" alt="1.3.7" /><figcaption>1.3.7</figcaption></figure><p></p><p>第 7 题错选为。辨析一下各个概念，CPI 指的是平均一条指令执行需要多少个时钟周期，IPC 指的是一个时钟周期内可以执行多少条指令，IPS 指的是每秒指令执行条数；MIPS 指的是每秒执行百万条指令条数；字长可以分为 64 字，32 字等。</p><p>第 8 题错选为 B/C。机器字长越大，意味着精读越高。对于 A，运算速度更和 CPU 主频之类的相关；对于 B，存取速度（并非效率）和硬件相关；对于 C，内存容量可以堆上去。</p></section><section><h3>计组王道选择题 2 刷第 2 章<a href="#计组王道选择题-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAeZqx7Wg_KjAtFhVVD4S_6pLg4faHgAC5hJrGz_BQFazZ61K0zv5oQEAAwIAA3gAAz0E" alt="2.1.9" /><figcaption>2.1.9</figcaption></figure><p></p><p>第 9 题错选为 A，属于低级错误。对于这种题尤其需要注意补码的范围，千万不要想当然。补码可以表示 -2^632^63-1，对于无符号数则是 02^64-1。</p><p>第 10 题错选为 C。本题需要注意，在没有 IEEE 的语境之下，移码的默认偏移量就是 2^(n-1)，而不是 IEEE 浮点数的标准。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAedqx7XVcI-Q68d3hXS2vb7-MjgqTwAC5xJrGz_BQFaikJMMJSsCHQEAAwIAA3gAAz0E" alt="2.1.13" /><figcaption>2.1.13</figcaption></figure><p></p><p>错选为 B。注意 0。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAepqx7aRKECATAPy950wVRLcybw_zAAC6RJrGz_BQFYYGz89MddfbwEAAwIAA3gAAz0E" alt="2.1.17" /><figcaption>2.1.17</figcaption></figure><p></p><p>错选为 C。属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAetqx7bF5zJfU38CX9h2kUBxI2-luwAC6hJrGz_BQFaBo37_v9d5KQEAAwIAA3gAAz0E" alt="2.1.25" /><figcaption>2.1.25</figcaption></figure><p></p><p>错选为 B。本题和后续的概念混淆，对于主存地址（显然没有负数），但是对于偏移寻址的偏移量而言，是有正负的概念之分的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAexqx7bsZTZt6YkguVQIwW7gKaejpQAC7BJrGz_BQFZf9aIUNRzvwAEAAwIAA3gAAz0E" alt="2.1.27" /><figcaption>2.1.27</figcaption></figure><p></p><p>本题错选为 A，属于低级错误，65536。unsigned short 首先先扩展为 unsigned int，也就是从 FFFA 扩展为 0000FFFA。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAe1qx7b_4nFueqjvcv30_LGgaEGIWAAC7RJrGz_BQFa41dxmlQrAsAEAAwIAA3gAAz0E" alt="2.1.34" /><figcaption>2.1.34</figcaption></figure><p></p><p>错选为 B。对于这类题总结一下，首先先基于原来的性质去扩展位数，也就是从 short 先扩展为 int，从 -32767，也就是 1-2^15，即 8000 0000 0000 0001，扩展为 FFFF FFFF FFFF FFFF 8000 0000 0000 0001，然后再根据 unsigned int 去解释，也就是 2^32-1-(2^15-1-2)=2^32-2^15+1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAe5qx7cZmuDLt0R0MH8YgZpGX2E07AAC7hJrGz_BQFbZkS3CKXk8mAEAAwIAA3gAAz0E" alt="2.2.4" /><figcaption>2.2.4</figcaption></figure><p></p><p>本题错选为 C，为低级错误。算数左移不会发生溢出=符号位不变，向左移动一位，只有 D 的第一位是保持不变的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAe9qx7cvnXZoOshrt8KpF55v7atzmQAC7xJrGz_BQFYSplHsmYq7-AEAAwIAA3gAAz0E" alt="2.2.9" /><figcaption>2.2.9</figcaption></figure><p></p><p>本题错选为 C。根本。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfFqx7eg1K7Qz-b-Y_UQtQX3QjcmtwAC8BJrGz_BQFax2nuCchZ0ogEAAwIAA3gAAz0E" alt="2.2.19" /><figcaption>2.2.19</figcaption></figure><p></p><p>本题错选为 B，逻辑混乱了，属于低级错误。[-y]补=10000010，[x]补+[-y]补=11110101+10000010=1 01110111，溢出，所以 OF 是 1。而由于是减法，所以补 1，所以这道题应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfJqx7f6rOlDIEBCQs3w2M-O943-RwAC9BJrGz_BQFYCv8IIDw_DfQEAAwIAA3gAAz0E" alt="2.2.31" /><figcaption>2.2.31</figcaption></figure><p></p><p>第 31 题错选为 B。按照朴素的想法，显然按照有符号数解释，FFFF FFFFH=-1，FFFF FFF0H=-16，相减后肯定不会溢出，所以 OF=0，而按照无符号数解释，FFFF FFFFH&gt;FFFF FFF0H 显然成立，够减，所以显然 CF=0。</p><p>对于这道题，理解错了 CF 的具体含义，CF 的计算方式是：A(加法为 0，减法为 1) 异或进位，朴素的可以理解为加法会不会溢出，减法够不够减，而不是判断有没有溢出。</p><p>第 32 题错选为 A。本题错误原因与 31 类似。显然按照有符号数去解释是不会发生溢出的，而按照无符号数去解释，是一个小的数去减一个很大的数，肯定不够减，所以 CF=1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfRqx7g4KLSMYrldnloQTCnj7OqKZgAC9hJrGz_BQFZLpqSaU1t6lgEAAwIAA3gAAz0E" alt="2.3.9" /><figcaption>2.3.9</figcaption></figure><p></p><p>本题错选为 C，忽略了非规格化小数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfVqx7hOwoDZYq5_I84KES26Z4WD_AAC9xJrGz_BQFaxSopylAaxVQEAAwIAA3gAAz0E" alt="2.3.23" /><figcaption>2.3.23</figcaption></figure><p></p><p>本题错选为 C。尤其需要注意“边界对齐”。观察这个 struct，char 占 1，unsigned(int) 占 4，char 占 1，所以每一个结构体都是 12，所以 phone 的起始地址是 +8，也就是 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfZqx7hhBoFXMm3OQAzfx6GO0JL4RQAC-BJrGz_BQFYc3-3Na_wuIAEAAwIAA3gAAz0E" alt="2.3.25" /><figcaption>2.3.25</figcaption></figure><p></p><p>第 25 题错选为 C。属于低级错误，先计算再解释（也就是和别人合并的时候才强制类型转换，而不是一开始就强制类型转换。</p><p>第 26 题错选为 B。先过。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfdqx7iHSynKFqS64wEY3qdogEKLmgAC-RJrGz_BQFaMreOzZ5zlOQEAAwIAA3gAAz0E" alt="2.3.30" /><figcaption>2.3.30</figcaption></figure><p></p><p>错选为 A。一样是边界对齐的问题。273=00 00 00 01 00 01 00 01，按照小端存储，第一个是 01，而对于 record.c，因为边界对齐，所以 short 必须得是偶数开头，所以得再 +1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfhqx7ie6TF-XhTsGnk4D2t4pIF4fQAC-hJrGz_BQFbgb0Ue64saFQEAAwIAA3gAAz0E" alt="2.3.37" /><figcaption>2.3.37</figcaption></figure><p></p><p>本题错选为 B。short 为 2，int 为 4，边界对齐，所以 x2 的首地址为 2020FE04H，由于采用的是小端法存储，所以机器数 00 先存，也就是 00，00，34，12，也就是 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAflqx7i5NHiCt65xEZEISOeHyCkbJQAC-xJrGz_BQFZ0h2RodezjQQEAAwIAA3gAAz0E" alt="2.3.42" /><figcaption>2.3.42</figcaption></figure><p></p><p>本题错选为 B。1000 0000 0010 0000 0000 0000 0000 0000，即符号位：1，阶码：0000 0000，尾数：0100…，所以本题为非规格化的小数，-2^126(0.01)，也就是移两位，所以也就是 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfpqx7joavsNSE97ekxhtX_ZjrssSQAC_BJrGz_BQFY33U83JjBsVwEAAwIAA3gAAz0E" alt="2.3.45" /><figcaption>2.3.45</figcaption></figure><p></p><p>本题错选为 A，一样也是边界对齐问题，struct 结构体：4+10(+2)+4，所以 0000A0B0+20=0000A0C4，由于采用的是小端法，所以 78，56，也就是 C5。</p></section><section><h3>计组王道选择题 2 刷第 3 章<a href="#计组王道选择题-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAftqx7kSaWdDq_I80iK0_aZto76l6gAC_RJrGz_BQFa08emSl8hxTwEAAwIAA20AAz0E" alt="3.1.2" /><figcaption>3.1.2</figcaption></figure><p></p><p>本题错选为 D。本题主要是辨析存储时间和存储周期的概念，存储时间仅包含具体的 IO，而存储周期需要包含 IO 的恢复。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAfxqx7koyEEv6D__Bj9okpgGP5rG2wAC_hJrGz_BQFYue5dkAo5hXQEAAwIAA20AAz0E" alt="3.2.13" /><figcaption>3.2.13</figcaption></figure><p></p><p>本题错选为 A。本题与 1 刷时错因类似，随机存储器指的是 RAM</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAf1qx7lELimCeMrZT7zitwptDD2_QwAC_xJrGz_BQFaM5HhCzlfFiwEAAwIAA3gAAz0E" alt="3.2.24" /><figcaption>3.2.24</figcaption></figure><p></p><p>本题错选为 A。读取 6 个连续地址的存储字，重复 80 次，也就是需要 120 个 4 时间单位，读取 8 个连续地址单元存放的存储字，重复 60 次，也就是需要 120 个 4 时间单位，这是错误的想法。</p><p>正确的想法应该是绘制时空图，存取 6 个连续地址的存储字，1 次需要 5 个时间单位，重复 80 次需要 400 个时间单位；读取 8 个连续地址单元的存放字，1 需要 5 个时间单位，重复 60 次需要 300 个时间单位，所以 400&lt;300&gt;=4&lt;3&gt;。</p><p>本题需要注意这道题不是流水线，而是 1 次操作后重复。</p><p>然而即便是采用流水线，本题稳定下来的时间 1 和 2 是一样的，所以只是看重复次数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAf5qx7lbkaLyGK0d8jVJ6Ulzqs6m0gADE2sbP8FAVqJEXHnb7DBEAQADAgADeAADPQQ" alt="3.2.26" /><figcaption>3.2.26</figcaption></figure><p></p><p>本题错选为 C。和 1 刷时错的地方类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAf9qx7l3438jqDnC_fzCxawQe-iXrQACARNrGz_BQFa3LxJ5YlVjqAEAAwIAA3gAAz0E" alt="3.3.6" /><figcaption>3.3.6</figcaption></figure><p></p><p>本题错选为 C。注意高位和低位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgABase5yfoc6vVbBOh_yZWrjBFSCFcAAgMTaxs_wUBWpaIbLQq8YSYBAAMCAAN4AAM9BA" alt="3.3.12" /><figcaption>3.3.12</figcaption></figure><p></p><p>本题错选为 C。主存空间大小为 64MB，也就意味着至少需要 2^26，由于采用的是 4M×8 位的，也就是需要 4 块芯片来组成 32MB。由于你不知道这块主存放在哪，有可能放在后续的位置，所以还是需要 64MB。</p><p>本题需要辨析主存地址空间大小和实际存储容量。主存地址空间是 CPU 主板硬件设计时允许的最大寻址范围，而实际主存容量是掏钱自己买的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgFqx7nrPgZK2dDTGaJO_aN8Hn-PVwACBBNrGz_BQFa1ssSDabBuwwEAAwIAA20AAz0E" alt="3.4.3" /><figcaption>3.4.3</figcaption></figure><p></p><p>本题错选为 B，本质是对 DMA 方式的不理解，磁盘采用的是 DMA 方式与主存交换数据，对于 D，显然错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgJqx7oJdI5cXa3fbKa26FBmZ7LJvgACBhNrGz_BQFYWiKw2Jiu50QEAAwIAA20AAz0E" alt="3.5.9" /><figcaption>3.5.9</figcaption></figure><p></p><p>本题错选为 A。对于 1，由于指令一般是顺序执行的，而数据只是数据，所以 1 正确；对于 2，“适当”，是正确的；对于 3，回写法是在修改的时候写 cache，而不是写主存，所以少于直写法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgNqx7ppkEPAmFHH_XzJOiRw0ue8dgACCRNrGz_BQFZ_F79FV1qQ8AEAAwIAA3gAAz0E" alt="3.5.20" /><figcaption>3.5.20</figcaption></figure><p></p><p>本题错选为 D。解题方法 1 刷复盘时写了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgRqx7qM4x0AAaGsqrO-7fcoI5nvefkAAgoTaxs_wUBWpJC1yF8mrcgBAAMCAAN4AAM9BA" alt="3.5.26" /><figcaption>3.5.26</figcaption></figure><p></p><p>本题错选为 B，具体原因 1 刷那里写了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgVqx7qxoMqLvDLQAAHNhWERD-saIiwAAgsTaxs_wUBWdSpGv_q8lOoBAAMCAAN4AAM9BA" alt="3.5.29" /><figcaption>3.5.29</figcaption></figure><p></p><p>第 29 题错选为 A。显然这道题是从 0 开始编址，129 号存储单元即 129/32=4，也就是存储在第 4 块主存块（按从 0 开始算）。采用 2 路组相联，所以需要 16/2=8，也就是 3 个 bit 存储 cache 行号。由于存储在 4 号主存块，所以 4%8=4，所以应该存放在第 4 组。</p><p>通过这道题辨析一下主存单元的概念，主存单元来源于计算机如何编址，按照字节编址，一个主存单元就是一个字，其他同理。</p><p>对于这类题，也可以直接展开为 16 进制取对应的位，也是一样的（其实等同于取模）</p><p>第 30 题棍母，先跳了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgZqx7riWHbXWImryznfQz__Nc1G8gACDBNrGz_BQFZ3pvJevHvSfwEAAwIAA3gAAz0E" alt="3.5.30 订" /><figcaption>3.5.30 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgdqx7r2rj3zDFZCXiZoYpgiJPRNQwACDRNrGz_BQFbDnikVghCMbgEAAwIAA3gAAz0E" alt="3.5.32" /><figcaption>3.5.32</figcaption></figure><p></p><p>本题错选为 D。由于采用直接映射，每块可以存储 16B/4B=4 个 int 数据，所以每访问 4 个数据就有 1 次 cache 缺失，而需要注意的是，本题每次访问两次 a[k]，总共方位 2000 次，也就是每访问 8 个数据 1 次 cache 缺失，所以最终答案是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAghqx7uicMf5A_dEKQGDWj9H3WPZHQACDhNrGz_BQFb0OKiTdqN_7QEAAwIAA3gAAz0E" alt="3.6.2" /><figcaption>3.6.2</figcaption></figure><p></p><p>错选为 C，与 1 刷时错误原因类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAglqx7wPZW1fi0tOrXToo6BmbJJP5QACERNrGz_BQFYjXGJPIjrd-AEAAwIAA3gAAz0E" alt="3.6.16" /><figcaption>3.6.16</figcaption></figure><p></p><p>本题错选为 C。本题错选为 C，显然 D 是错的。TLB 和 cache 都采用 SRAM，其中 TLB 也可以采用相联存储器 CAM。SRAM 是静态随机存储器。TLB 本质上是内存的一块区域。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgpqx7wo0rOmCOTErZDsqJxjnIAXmQACEhNrGz_BQFaQy8xrOU7UNQEAAwIAA3gAAz0E" alt="3.6.19" /><figcaption>3.6.19</figcaption></figure><p></p><p>本题错选为 C。TLB 的标记字段是虚拟地址。由于 TLB 页大小为 1 个页，所以需要 10bit 来存储块内地址，由于采用 4 路组相联，所以 32/4=8，需要 3bit 来存储 TLB 行号，所以 32-3-10=19。</p></section><section><h3>计组王道选择题 2 刷第 4 章<a href="#计组王道选择题-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgtqx7xYPX_rGLBKvr87_Ovq_MblfwACExNrGz_BQFYHGIUaFaRq3wEAAwIAA3gAAz0E" alt="4.2.3" /><figcaption>4.2.3</figcaption></figure><p></p><p>本题错选为 B，与 1 刷时错误原因类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAgxqx7xtiRFe10PW6DZf4zPLoyCkiwACFBNrGz_BQFbnFVU1NwcjrQEAAwIAA20AAz0E" alt="4.2.9" /><figcaption>4.2.9</figcaption></figure><p></p><p>本题错选为 C，与 1 刷时错误原因类似，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAg1qx7yHKSmA9-KopZCz_FUsPBS1MAACFRNrGz_BQFapiTySaZZYfgEAAwIAA3gAAz0E" alt="4.2.11" /><figcaption>4.2.11</figcaption></figure><p></p><p>本题错选为 A。R2 的值为 1234H，1234H 存放的数据为 56H，由于寄存器是 16 位，所以应该是移动 2B 到寄存器里，所以是将 1234H 和 1235H 的内容移动到 R1，由于采用小端法，所以在以人类的视角阅读时，和计算机是反过来的，所以低地址的在后面，高地址的在前面，也就是 7856H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAg5qx7ydXCGa0-4yPDfKZMaMaVdMOAACFhNrGz_BQFZLTEiAcZeMLwEAAwIAA3gAAz0E" alt="4.2.23" /><figcaption>4.2.23</figcaption></figure><p></p><p>本题错选为 B。机器字长为 16 位，采用相对寻址，2 字节组成，显然一条指令长度为 2B，所以每次 PC 值应该 +2，所以由于本来在 2000H，自动 +2，也就是 2002H，转移 06H，即 2008H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAg9qx7yy29PqJNDzNp9gL7IGsRtcKgACFxNrGz_BQFY8tHEWRvZwNwEAAwIAA3gAAz0E" alt="4.2.30" /><figcaption>4.2.30</figcaption></figure><p></p><p>第 30 题错选为。考虑 double 型数组占 64bit，即 8B。也就是说，2100H-2000H=100H 即 0001 0000 0000，100H&gt;&gt;3=20H=0010 0000H，即 32。本题没有搞清楚 16 进制和 2 进制的相关问题。</p><p>第 31 题错选为。显然，该地址为 F000 0000H+FFFF FF12H=EFFF FF12H，由于采用大端法，所以 12H 作为高位存储在 EFFF FF12H，而 00H 存放在 EFFF FF15H。</p><p>第 32 题错选为 C。48 条指令意味着意味着指令长度有 2^6，也就是需要用 6 位表达，寻址方式 4 种即 2 位表示，所以还剩下 16-2-6=8 位可以用来表示地址长度，由于直接寻址只有正数，主存地址不可能为负。</p></section><section><h3>计组王道选择题 2 刷第 5 章<a href="#计组王道选择题-2-刷第-5-章"><span>#</span></a></h3><hr /></section></section>
<section><h2>OS 王道选择题 2 刷<a href="#os-王道选择题-2-刷"><span>#</span></a></h2><section><h3>OS 王道选择题 2 刷第 1 章<a href="#os-王道选择题-2-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRlqz5Tp7gzcJl3dYHVVGUjEzuqRAAPFFGsbt-Z5VqC-PY1SQJ7vAQADAgADeAADPQQ" alt="1.2.13" /><figcaption>1.2.13</figcaption></figure><p></p><p>第 13 题答案为 BACD，错选为 BADC。为低级错误。IBM-PC 是微型计算机，实时操作系统即使做出相应。这里提一嘴，实时操作系统分为软实时和硬实时，软实时比如说车票系统，不需要太强的时效性，硬实时比如说金融场景。</p><p>第 14 题错选为 C，注意此处为并行，而非并发。与 1 刷第 16 题类似错误。并行意味着需要有多个处理器，因为并行意味着微观时间内也是同时</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRpqz5XnWiAPcb9ar0gB4Fg4fvpWJQACxxRrG7fmeVYkXlZJjartgAEAAwIAA3gAAz0E" alt="1.2.18" /><figcaption>1.2.18</figcaption></figure><p></p><p>第 18 题错选为 A。考虑这样一个场景，假设单道程序系统和多道程序系统同时处理若干个程序，某时该进程需要进行 I/O 操作，此时单道程序系统无法切换进程，只能让 CPU 等待该进程处理完 I/O 后再继续运行该进程，而多道程序系统可以趁着该进程处理 I/O 时，切换到其他需要 CPU 的进程。</p><p>和上述情况类似的，在同一时间内有两个进程，他们都需要进行 I/O 操作，单处理机先处理第 1 个进程，假设先 CPU 再 I/O，此时 I/O 设备闲置，而第二个先 I/O 再 CPU 的进程无法利用 I/O 设备。所以多道程序系统可以让 I/O 设备利用率高。
对于系统开销，由于单道相比于多道而言会有更多的闲置，所以单道开销低，多道开销高。</p><p>第 19 题错选为 D。错误原因猜测类似于 1 刷第 16 题，对多任务操作系统理解不够。多任务操作系统意味着该系统可以执行多个任务（需要和多道程序区分开来），假设多任务操作系统运行在单 CPU 的环境，意味着这些任务是并发执行的；如果运行在多 CPU 上，这些任务可以是并发的，也可以是并行的。正因为需要临界资源，所以需要互斥地访问，所以需要保护。
对于多 CPU 硬件，正如前面所说，多任务=并发，而非并行。</p><p>对于多道程序系统，考虑多核 CPU，多个程序也可以并行的运行在一个 CPU 上。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRtqz5aOXZomNWha70v1vAxZGhK3fgAC2hRrG7fmeVYTvZ_r9jRxAgEAAwIAA3gAAz0E" alt="1.3.9" /><figcaption>1.3.9</figcaption></figure><p></p><p>本题错选为 B。陷入指令是在用户态执行的，系统调用指令的执行是在内核态，调用在用户态。转移指令不需要在内核态执行，可以理解为 jumpto。中断屏蔽字指令由于需要修改中断屏蔽字，所以必须在内核态执行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRxqz5bnYknNVGARM7fqct2Grbw_dQAC3RRrG7fmeVbj4MJEexxYzgEAAwIAA3gAAz0E" alt="1.3.12" /><figcaption>1.3.12</figcaption></figure><p></p><p>第 12 题错选为 C。内中断又称异常，分为三类：故障、陷入、终止。访管指令就是 trap 指令，对于 1 可以理解为 RR 调度。
Trap 是内中断。</p><p>捋一遍 scanf 流程。Scanf 调用 trap 指令让内核态干预，内核态为系统调用的被调用过程，发现没有按键，把系统改为阻塞态。直到键盘有人输入了数据，触发硬件中断。</p><p>然后键盘中断服务程序，读入按键数据，把进程改为就绪态，等到下一轮上处理机后，scanf 才结束，继续跑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBR1qz5deB_qMK3rEbINroR2psldmQAAC4RRrG7fmeVbq7BMkLzXpjgEAAwIAA3gAAz0E" alt="1.3.12 解" /><figcaption>1.3.12 解</figcaption></figure><p></p><p>第 13 题错选为 A，为低级错误。库函数运行在用户态，系统调用运行在用户态，而系统调用的执行是在内核态。即使是 malloc 函数，操作的也是堆区，堆区是被分配给用户的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBR5qz5d-8rWFEPFHFSfsxsz5Ss_0KwAC4xRrG7fmeVZEuHDOyhrXogEAAwIAA3gAAz0E" alt="1.3.18" /><figcaption>1.3.18</figcaption></figure><p></p><p>错选为 D，为低级错误，显然为 PSW。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBR9qz5ev_lo9QsS0yctFi8LN7H8SFgAC5BRrG7fmeVZyg3m7wd5PXQEAAwIAA3gAAz0E" alt="1.3.25" /><figcaption>1.3.25</figcaption></figure><p></p><p>第 25 题错选为 A（划掉）C。</p><p>第 26 题错选为 D。</p><p>这两题 1 刷的时候都错了，再次选错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSBqz5fTlIE3SUp0h2Ocu7QbvC3_TgAC5RRrG7fmeVaUaDGAXRn_8gEAAwIAA3gAAz0E" alt="1.3.28" /><figcaption>1.3.28</figcaption></figure><p></p><p>本题错选为 D。设置断点可以理解为高级语言的打断点，也可以理解为汇编的打断点。I/O 指令需要在内核态执行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSFqz5ftbGT69y8BNvhQjbfiP4S9QwAC5hRrG7fmeVaK0SxYRoYJhQEAAwIAA3gAAz0E" alt="1.3.31" /><figcaption>1.3.31</figcaption></figure><p></p><p>本题错选为 D。修改 CPU 模式由硬件完成，可以理解为中断指令那部分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSJqz5gEnEVoqNB4c1yXmRueOuLcKwAC5xRrG7fmeVYRBSFWOMvZRwEAAwIAA3gAAz0E" alt="1.6.3" /><figcaption>1.6.3</figcaption></figure><p></p><p>本题错选为 C。内核中的某个功能块出错会导致依赖该功能的部分崩溃，从而导致连锁反应。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSNqz5gW_oYZm2EAAfSqraV26dHlkFIAAugUaxu35nlWRUjDZbhxyOsBAAMCAAN4AAM9BA" alt="1.6.5" /><figcaption>1.6.5</figcaption></figure><p></p><p>第 5 题错选为 C。功能分层设计是分层设计系统。</p><p>第 6 题错选为 A。详见 1 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSRqz5guAQZXrAafBMdowR9gluJoXAAC6RRrG7fmeVYOMxuN7uXKLgEAAwIAA3gAAz0E" alt="1.6.8" /><figcaption>1.6.8</figcaption></figure><p></p><p>本题错选为 D。微内核架构不会让系统更高效，因为做一件事就需要不停的变态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSVqz5hJmLRSYNHuo4iUmr2hFTd4aQAC6hRrG7fmeVaQnXwfI5PR1gEAAwIAA3gAAz0E" alt="1.6.12" /><figcaption>1.6.12</figcaption></figure><p></p><p>第 12 题错选为 D。典型的乱选。本题其实考察的是 BIOS 在哪，显然位于 ROM 中。</p><p>第 13 题错选为 A，与 1 刷相同的错误。引导程序的“程序”位于硬盘内。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSZqz5hhE3PLwYwJ9Z86iwsMQzKdSAAC6xRrG7fmeVYPYaevd9RK9QEAAwIAA3gAAz0E" alt="1.6.19" /><figcaption>1.6.19</figcaption></figure><p></p><p>本题错选为 A。没读完题目，显然被加载到内存中，也就是 RAM。</p></section><section><h3>OS 王道选择题 2 刷第 2 章<a href="#os-王道选择题-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSdqz5h3c_zMNwU_Mye5CWIBrDWYhgACRhBrG7fmgVbFcWCGnQFkFwEAAwIAA3gAAz0E" alt="2.1.10" /><figcaption>2.1.10</figcaption></figure><p></p><p>本题错选为 C，1 刷也错了，详见 1 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBShqz5iOz88boprfOWso3GlLzNM6rgACRxBrG7fmgVYqIgIhGI3htgEAAwIAA3gAAz0E" alt="2.1.22" /><figcaption>2.1.22</figcaption></figure><p></p><p>这题是没做完。本质是背书不够。分配的逻辑空间从低地址到高地址可以理解为：</p><p>代码本体 - 全局变量 - 堆区 - 共享区 - 栈区 - 局部变量 - 内核区</p><p>通过这个就可以很容易理解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSlqz5mtA5VXNt3fBFfhuadukPa5AANIEGsbt-aBVju3iEkEUagkAQADAgADeAADPQQ" alt="2.1.29" /><figcaption>2.1.29</figcaption></figure><p></p><p>本题错选为 D。管道可以理解为是两个进程间先建立管道，然后进行半双工通信，没有共享内存来的快。1 刷也错了，详见 1 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSpqz5u5HGl2s982k5wtJDmeoBHhsgACSxBrG7fmgVYVWEDXGTc7egEAAwIAA20AAz0E" alt="2.1.31" /><figcaption>2.1.31</figcaption></figure><p></p><p>错选为 B。用户可以对一部分信号自定义，对于 kill 之类的显然不可以。</p><p>一个进程可以给自己发送信号，例如 alarm，提醒自己过段时间要做什么。</p><p>操作系统的内核可以给进程发送信号，例如可以紧急制止某些进程继续做事。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBStqz5vgVQS6sak8_LVQWccVBB4yCQACTBBrG7fmgVanp8sqUt1oRgEAAwIAA3gAAz0E" alt="2.1.34" /><figcaption>2.1.34</figcaption></figure><p></p><p>错选为 B，1 刷也错了，详见 1 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBSxqz5vzMGlbqb5k4RLWPZHgJbzH0QACThBrG7fmgVbHRJ1yaN0h4AEAAwIAA3gAAz0E" alt="2.1.40" /><figcaption>2.1.40</figcaption></figure><p></p><p>错选为 C，为低级错误，把图画出来就 100% 不会错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBS1qz5wLI3iywUw4wNgu4BXaWekgwgACTxBrG7fmgVYtd-3YHZjfJgEAAwIAA3gAAz0E" alt="2.1.42" /><figcaption>2.1.42</figcaption></figure><p></p><p>错选为 A，本题的 C 可以用进程实体那部分去理解存储在哪。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBS5qz5wdvat3WbhUgffgdlgj8iernAACUBBrG7fmgVbrMomssRi-bwEAAwIAA3gAAz0E" alt="2.1.48" /><figcaption>2.1.48</figcaption></figure><p></p><p>错选为 A。本体为低级错误，可以理解为用户级线程的时间分配是在已经分配的这个时间片上切分，而内核的是真全局切。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBS9qz5wu4tGxC64XacdK4rBXud2OsQACURBrG7fmgVak18fsQcDDPgEAAwIAA3gAAz0E" alt="2.1.52" /><figcaption>2.1.52</figcaption></figure><p></p><p>错选为 B。本题为用户级线程切换，也就是相当于用户态到用户态的切换，不涉及到内核态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTBqz5xCC8KxVX84vo6CHGt0j8vK_AACUhBrG7fmgVbr4F72d7VjWQEAAwIAA3gAAz0E" alt="2.1.60" /><figcaption>2.1.60</figcaption></figure><p></p><p>本题错选为 D。对线程和进程的理解不够准确。1 刷也错了，详见 1 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTFqz52TAelvIvN8XT0ky-WPtWn5XAACYBBrG7fmgVa9MsmP6PH3RwEAAwIAA3gAAz0E" alt="2.1.62" /><figcaption>2.1.62</figcaption></figure><p></p><p>本题错选为 D。这里可以理解为读者写者问题，同一时间可以有多个读者进行操作。管道的大小为内存的 1 页。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTJqz520t-grEYf0UTVmv0ZoVPpewwACYRBrG7fmgVaF_hCy2gABXgUBAAMCAAN4AAM9BA" alt="2.1.65" /><figcaption>2.1.65</figcaption></figure><p></p><p>本题错选为 B。可能将进程唤醒，意味着从阻塞态到就绪态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTNqz53MPTS73j0W4_rW737t9wXZcQACYhBrG7fmgVbTlcSxlzXcKgEAAwIAA3gAAz0E" alt="2.1.73" /><figcaption>2.1.73</figcaption></figure><p></p><p>本题错选为 A，也是对线程和进程的区别不了解，具体见前面。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTRqz53iWGwPzQYAAbq_3prlAxjBXLwAAmMQaxu35oFWRsHtRSfwPgIBAAMCAAN4AAM9BA" alt="2.2.6" /><figcaption>2.2.6</figcaption></figure><p></p><p>错选为 A。1 刷时只知道这个 D 是对的，但是不知道 D 为什么是对的。临界区的定义是进入那段代码，而那段代码里假设 P 了一些东西，还没有真正执行，那么还会被调度，结果发现还在 P 状态中，所以重新返回队列？</p><p>上面的解释有问题，这还没进入临界区，重新来一下。</p><p>临界区：访问临界资源的代码。</p><p>所以 D 的意思是说，处于临界区的进程在访问临界资源的时候，无法被剥夺 CPI/无法被调用上 CPU 运行。所以，假设 A 进程正在使用打印机，操作系统因为其时间片到了，将其调度下处理机，此时临界资源仍然被 A 所占有，其他进程只要不访问临界资源就可以正常使用 CPU。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTVqz54KC17CKmkwD7clJjrX3qWKbQACZRBrG7fmgVaENWnGF1WQ4wEAAwIAA3gAAz0E" alt="2.2.13" /><figcaption>2.2.13</figcaption></figure><p></p><p>本题错选为 C。本题实质上考虑的是什么行为可以导致有进程从就绪态转换为运行态。对于 A，考虑 RR，一个进程的时间片用完了，那么可能会有其他进程换上去。对于 B，如果有进程出错，那么肯定也要退出运行态，从而有其他进程进入运行态。对于 C，含义是有一个进程从就绪态变为阻塞态，CPU 空余，所以会导致有新进程被调度上处理机；对于 D，即便是有新进程创建进入就绪态，并不会影响还在处理机上运行的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTZqz6DxzrfGzElHmxeQ3lUMWZR4dgACchBrG7fmgVYml5nXzIGS2AEAAwIAA3gAAz0E" alt="2.2.15" /><figcaption>2.2.15</figcaption></figure><p></p><p>错选为 C。低级错误，我自己都看不懂我的草稿在算什么（2/2+4/2+6/2+8/2）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTdqz6HigV5sLvf5U0WNsRRwrIcmxAACdBBrG7fmgVYT_j7UUO3eLAEAAwIAA3gAAz0E" alt="2.2.21" /><figcaption>2.2.21</figcaption></figure><p></p><p>错选为 A。本题记错高相应比计算公式，应该为：（等待时间 + 预计运行时间）/预计运行时间。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBThqz6H_F6CGgvt4mDqP7Hh6fjNFcAACdhBrG7fmgVYMrF5qDsMM2QEAAwIAA3gAAz0E" alt="2.2.23" /><figcaption>2.2.23</figcaption></figure><p></p><p>本题错选为 C。优先级算法有抢占式调度也有非抢占式调度的。优先级算法可以保证进程不会饥饿。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTlqz6IeGwZfSuJKLXGhb9YXfONB8wACdxBrG7fmgVZf_wV3Ey114wEAAwIAA3gAAz0E" alt="2.2.26" /><figcaption>2.2.26</figcaption></figure><p></p><p>本题 2 刷时没写（</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTpqz6JIZGJ2rXtB42IsHXihy8nAPwACeRBrG7fmgVYnUPnMiX6HBwEAAwIAA3gAAz0E" alt="2.2.38" /><figcaption>2.2.38</figcaption></figure><p></p><p>38 题错选为 D。考虑这样一种情况，进程从就绪态转换为运行态的时候，降低优先级为最低，假设该系统采用的是抢占式的优先级调度，那么该进程就会被换下来。对于 A，进程的时间片用完，假设仍然保持原来的优先级，可能会霸占处理机。对于 B，完成 I/O 操作意味着其可以被调度，所以并不合适；对于 C，饥饿。</p><p>39 题错选为 D。即便是非抢占式的短作业优先，也会导致饥饿现象。本题应该是出的不准确，但是最对的选项也只能能是 B 了，相对满足短作业优先，并且对于长时间未能得到处理机的长作业，会提升其优先级。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTtqz6KVf1EffbnPowTN6FDVfvyMLgACehBrG7fmgVar-MFxTa4H3gEAAwIAA3gAAz0E" alt="2.2.51" /><figcaption>2.2.51</figcaption></figure><p></p><p>51 题错选为 C。本题含义为：某行为结束后可能会引发就绪态到运行态的转变。对于 1，中断处理结束可以理解为 I/O 操作结束（例如 DMA 传输完了），此时 I/O 好了，从阻塞态变味了就绪态，自然可能会引发调度。对于 2，进程阻塞意味着有进程从运行成阻塞态，也就意味着 CPU 空出来了，可能可以有进程上处理机。对于 3，和 2 类似的道理，进程结束 CPU 空出来。对于 4，和 2、3 类似的道理，从运行态变为就绪态，导致 CPU 空出来。</p><p>52 题错选为 B。第一次调度也是调度。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBTxqz6Kqf0DQ17_u68Az7ot3KqjbbwACfBBrG7fmgVYDe7UHwDQuRAEAAwIAA3gAAz0E" alt="2.5.54" /><figcaption>2.5.54</figcaption></figure><p></p><p>本题错选为 B。一上系统就算是处于就绪队列（已经到达了，并且在等待处理机），而不是等其他人运行，自己第一次上处理机的时候才开始算。如果是自己第一次上处理机的时候才开始算的话，那么如果不是 RR 的所有周转时间都是运行时间。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBT1qz6LBd1o_dEyjahTbWAI4eixy6gACfRBrG7fmgVZl_W9hV4R5jAEAAwIAA3gAAz0E" alt="2.3.5" /><figcaption>2.3.5</figcaption></figure><p></p><p>本题错选为 B。2 刷也错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBT5qz6LS8E3b4Wd2VkgcQIfluv14WQACfhBrG7fmgVZ-a2JmD4NMWwEAAwIAA20AAz0E" alt="2.3.10" /><figcaption>2.3.10</figcaption></figure><p></p><p>本题错选为 D。因为进程是异步的（不同进程运行的时序是不固定的），有些进程有先后关系，所以选 C。进程有结构性的含义例如是这一块被分给用户作为堆区等，显然和题目无关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBT9qz6LjdIrcZk7bdgnP11nPP9e4nAACgBBrG7fmgVbxfsI0gm7f1gEAAwIAA3gAAz0E" alt="2.3.15" /><figcaption>2.3.15</figcaption></figure><p></p><p>错选为 D。程序是放在外存的静态代码和数据，概念比较泛。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUBqz6L9MaLnh6XFYdSPNCzf9bOFgQACgRBrG7fmgVZ3yHScsLCURQEAAwIAA3gAAz0E" alt="2.3.18" /><figcaption>2.3.18</figcaption></figure><p></p><p>错选为 B。一样的错误原因。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUFqz6MORf3tSp-MG9XGeTn0m-xqBwACghBrG7fmgVaj0UuzhyUkOAEAAwIAA3gAAz0E" alt="2.3.20" /><figcaption>2.3.20</figcaption></figure><p></p><p>错选为 C。ABC 均为一个进程私有的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUJqz6MhHJtHF6QQUIvvG_AU0gVbfgAChBBrG7fmgVbSBYpbzRWXpQEAAwIAA3gAAz0E" alt="2.3.26" /><figcaption>2.3.26</figcaption></figure><p></p><p>26 题错选为 A。导致唤醒一个进程意味着等待队列里有人，也就意味着原本的 mutex 值至少为 -1，所以 +1 也就是 D。</p><p>27 题错选为 A，一样的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUNqz6M-tu4Z-0xBSk2o6oO83yw_bAAChRBrG7fmgVY3ARUq40Ni2AEAAwIAA3gAAz0E" alt="2.3.29" /><figcaption>2.3.29</figcaption></figure><p></p><p>29 题错选为 D。管程中的 signal 和 V 不一样，管程中的 signal 假设执行的时候恰巧没有人在里面，那么这次是浪费的。换句话说，管程是没有记忆的，V 是有记忆的。</p><p>管程不像“进程”那样是个活生生跑来跑去的东西，它其实是编程语言里的一个“静态代码块”。管程就像是这栋楼在建房子的时候，就用钢筋水泥砌好的一间“VIP 包厢”（语法范围）。它是静静待在那里的建筑物，等待着进程走进去使用（调用）它。</p><p>30 题错选为 C，和 1 刷时类似的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBURqz6NaRJXvgdIBRZ_zYvx4VDAONgAChxBrG7fmgVaLZ3yVHu4_xgEAAwIAA3gAAz0E" alt="2.3.34" /><figcaption>2.3.34</figcaption></figure><p></p><p>错选为 C。没读完选项，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUVqz6NzILS5ojDtOv441nVM3CqAsgACiBBrG7fmgVZ2h1ui88n6IAEAAwIAA3gAAz0E" alt="2.3.39" /><figcaption>2.3.39</figcaption></figure><p></p><p>错选为 A，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUZqz6OX4UhB8f-Mz2uVKVrVYE7ioQACixBrG7fmgVZBdQjE0Yb1OwEAAwIAA3gAAz0E" alt="2.3.41" /><figcaption>2.3.41</figcaption></figure><p></p><p>41 题错选为 C，属于低级错误，这题结合 PV 操作大题其实就可以理解地七七八八了。</p><p>42 题和 1 刷时一样的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUdqz6Ov6ySlR0PFQ1dwpJccpNVpIwACjBBrG7fmgVZjbPjY8cT3jwEAAwIAA3gAAz0E" alt="2.3.48" /><figcaption>2.3.48</figcaption></figure><p></p><p>错选为 C。本题的代码其实是皮特松算法，违背让权等待（也就是忙等待），但是满足其他三个：空闲让进，忙则等待，有限等待。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUhqz6PKaTc485C99U83NJLoksZe2gACjhBrG7fmgVbN_VXc_PgKSwEAAwIAA3gAAz0E" alt="2.4.2" /><figcaption>2.4.2</figcaption></figure><p></p><p>错选为 B。结合 PV 操作的大题来理解，同时检测两只筷子是否可用适配于一次性拿去所有自己需要的资源，这么做可以增加并发程度，并且也不会导致饥饿问题。对于 D，破坏的也是循环等待条件，互斥条件指的是你访问这个东西是互斥的，不可能改变互斥条件。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUlqz6PhAAFo2hwvYF3Nzs9jP70bWREAAo8Qaxu35oFW72w48dgkjdMBAAMCAAN4AAM9BA" alt="2.4.4" /><figcaption>2.4.4</figcaption></figure><p></p><p>错选为 A。如上一题所述，互斥条件基本不可能被破坏，一次性分配可以避免进程申请一些之后再申请资源，所以是破坏占有并请求（一样可以结合 PV 操作去理解）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUpqz6P0zcR0vLTktZqDjwM1KwiYlAACkBBrG7fmgVZmtj0dSB66IAEAAwIAA3gAAz0E" alt="2.4.6" /><figcaption>2.4.6</figcaption></figure><p></p><p>错选为 C。为低级错误，死锁避免指的是银行家算法那一套，是为了防止系统进入不安全状态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUtqz6QF6SKAahKBw9CBa33JZ1uOTgACkRBrG7fmgVYmMPqm1NbdeAEAAwIAA3gAAz0E" alt="2.4.12" /><figcaption>2.4.12</figcaption></figure><p></p><p>错选为 B，为低级错误，没读完题目。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBUxqz6QZyGAjXQ8iCSx3gMBgwmGezQACkhBrG7fmgVaiEt8BDvvrWwEAAwIAA3gAAz0E" alt="2.4.23" /><figcaption>2.4.23</figcaption></figure><p></p><p>第 23 题错选为 A。和 1 刷一样的错误。</p><p>第 24 题错选为 B。这题脑子抽了，考虑到了有 3 钟可能的情况，但是还是选了 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBU1qz6QsqwqNonB1XG8bUv1eSfcsHAACkxBrG7fmgVZqtPJl_YYaAAEBAAMCAAN4AAM9BA" alt="2.4.25" /><figcaption>2.4.25</figcaption></figure><p></p><p>第 25 题错选为 B。使用完资源自己释放，显然是不剥夺，请求和释放条件指的是占用并请求，这两个需要想清楚。</p><p>第 26 题错选为 B。和 1 刷一样的错误。</p><p>第 27 题错选为 A。属于低级错误死锁定理是为了检测死锁的，也就是定期检测死锁然后破坏。</p><p>第 28 题错选为 A。通过特值法计算或者可以通过直接使用这个来计算。每个进程最多申请 k 个资源，所以可以保证不死锁的最小申请数是：n×(k-1)+1，也就是 m≥n×(k-1)+1=nk-n+1，所以 nk≤n+m-1，也就是 nk&lt;n+m。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBU5qz6RFWTt-WGq0bY9D9C2e_5BEqgAClBBrG7fmgVb5WcwPndbjGQEAAwIAA3gAAz0E" alt="2.4.31" /><figcaption>2.4.31</figcaption></figure><p></p><p>本题错选为 B，低级错误，没看完题目。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBU9qz6RX0wyjKF5kMgbNI_K8H5v6twAClhBrG7fmgVYsFB9h5a0-JwEAAwIAA3gAAz0E" alt="2.4.35" /><figcaption>2.4.35</figcaption></figure><p></p><p>错选为 C，为低级错误。本题都不需要你去计算 NEED，它直接给了，所以直接看：021 可以满足 P1，拿回来也就是 221，221 可以满足 P4，拿回来也就是 222，222 无法满足 P2/P3，所以不存在安全序列。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBVBqz6RrSNc3FWtvu7zFl5h80nPd0wACmRBrG7fmgVY8YKz7tTl-bgEAAwIAA3gAAz0E" alt="2.4.39" /><figcaption>2.4.39</figcaption></figure><p></p><p>第 39 题错选为 D。死锁避免也就是银行家算法，死锁检测也就是分配图。死锁避免只会限制用户申请的个数，而不会限制这个用户的申请顺序（也就是会影响用户申请顺序，而不会影响用户本身申请的顺序）</p><p>第 40 题错选为 B。本题采用资源分配图来做，可以得出本题是哲学家问题的变种，很容易可以得出答案。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBVFqz6SHCMnUByhYG73gshNHUqq1uAACmhBrG7fmgVY8JfS1t-eN1QEAAwIAA3gAAz0E" alt="2.4.42" /><figcaption>2.4.42</figcaption></figure><p></p><p>本题错选为 D。1 显然正确，2 显然正确，3 不能判断系统此时是否处于死锁状态，它只能判断系统会不会进入不安全的状态，也就是知道可能会发成死锁。3 这件事是死锁定理干的。</p></section><section><h3>OS 王道选择题 2 刷第 3 章<a href="#os-王道选择题-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB4xq0yHomZlbRvVJA5TXmob2gSdVlgACOBlrG-BrmFYRg3ykE8TqPwEAAwIAA3gAAz0E" alt="3.1.4" /><figcaption>3.1.4</figcaption></figure><p></p><p>本题错选为 A。单一连续分配指的是最古老的分配方式，是单一作业模式，没有动态分配，属于静态分配方式。</p><p>此外需要注意，固定分区分配也需要地址变换方式，因为不变换的话逻辑地址没法转成物理地址然后放到正确的地方里。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB41q0yKg9KzpAnsz4vnmEnHzwuk65AACORlrG-BrmFan9mzUa-4TcwEAAwIAA3gAAz0E" alt="3.1.10" /><figcaption>3.1.10</figcaption></figure><p></p><p>第 10 题错选为 D。重定位寄存器是寄存器，而寄存器很贵，整个 cpu 只有一个重定位寄存器；对于 D，程序的装入有三种方式，绝对装入，可重定位装入以及动态装入；对于绝对装入，是只能变不了位置的，对于可重定位装入，是分配连续的一整块空间，一次性转换为物理地址后然后装入，对于动态装入，进程执行的时候等待指令需要被执行的时候才被转换地址。</p><p>第 11 题错选为 A。显然为 123，没有可重定位装入程序，那么就不知道怎么变，没有重定位寄存器，就不知道变多少（基于什么变），如果没有 3，那就变不了。而对于 4，目标程序采用的是逻辑地址，和重定位无关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB45q0yLeHoljgCQ_Aqv-8Y1wx8zHxAACOhlrG-BrmFaeJ7av3GdpugEAAwIAA20AAz0E" alt="3.1.14" /><figcaption>3.1.14</figcaption></figure><p></p><p>本题错选为 B。具体分析见第 10 题，重定位寄存器是寄存器，很贵的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB49q0yLyDQi750fWhSLNEiJkBT5dMQACOxlrG-BrmFYeOpLCcftDNgEAAwIAA3gAAz0E" alt="3.1.16" /><figcaption>3.1.16</figcaption></figure><p></p><p>错选为 A。2^12=4096≠4098。4097/4KB=1，页号 1 对应 1，1×4096+1=4097。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5Bq0yMYS5wqUj1nINVM8xOfQTJyYQACPBlrG-BrmFY_QFK0XULJaQEAAwIAA3gAAz0E" alt="3.1.21" /><figcaption>3.1.21</figcaption></figure><p></p><p>错选为 C。最佳适应算法是要最小的地址块在前，所以应该是长度递增的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5Fq0yXiGG0NN7Wv5DbXcWs4oMOa4gACQBlrG-BrmFaAJneEUHc9UAEAAwIAA3gAAz0E" alt="3.1.26" /><figcaption>3.1.26</figcaption></figure><p></p><p>错选为 C。对于 A，段表是本质是逻辑上需要有关系，也就是共享的时候需要共享有意义的数据；对于 B 是页表做的事情，对于 C 和 D，每个进程都有自己独立的逻辑地址空间，而对于共享的数据而言，进程内部给他分配的段号可能是不一样的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5Jq0yX5f0NphLJaDFgCOnbCqFbo5gACQRlrG-BrmFY4RkNNueQFqQEAAwIAA3gAAz0E" alt="3.1.28" /><figcaption>3.1.28</figcaption></figure><p></p><p>错选为 D。分页是从操作系统角度出发，操作系统已经给你分配好了这一页的大小，并且你也不知道操作系统给你的程序拆分成多少，塞进哪几个页里，所以对于分页，答案是不知道；对于分段，尽管是汇编级语言程序员可以操作的，但是分页的物理地址空间无法获取（是透明的）从而无法比较。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5Nq0yY9gpro4AfaHZlYNKfTOV6OaAACQhlrG-BrmFYAASqkcDGCYh0BAAMCAAN4AAM9BA" alt="3.1.31" /><figcaption>3.1.31</figcaption></figure><p></p><p>错选为 A。可以联想到页表查询机构，显然这是硬件自动完成的事情，取指令。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5Rq0yZRJYzw0lMhSlndHdxFo_VzggACQxlrG-BrmFZQcM3w_ppW4gEAAwIAA20AAz0E" alt="3.1.33" /><figcaption>3.1.33</figcaption></figure><p></p><p>错选为 B。程序的动态链接做的事情是把标准库之类的东西串起来，打包成 exe。如果使用的是分页存储管理，由于没有逻辑，所以必然是零散的。分段是按照逻辑划分的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5Vq0yZhsTR9VRIZ1CW1bbrmSgiU4QACRBlrG-BrmFZK5wLBQtqXzwEAAwIAA3gAAz0E" alt="3.1.40" /><figcaption>3.1.40</figcaption></figure><p></p><p>第 40 题错选为 D。由于段表是人工自行分配的，所以会有较多的外部碎片难以利用。</p><p>第 41 题错选为 C。可以理解为，无论电脑采用的是什么系统，都可以利用这块内存。对于 A，以块/段为单位的是磁盘和内存之间的交互方式，但是读数据的时候还是一块一块去读的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5Zq0yZ1bHjKIxEupeJh1ok4olbIygACRRlrG-BrmFZT2IAC-ZzZogEAAwIAA3gAAz0E" alt="3.1.48" /><figcaption>3.1.48</figcaption></figure><p></p><p>第 48 题错选为 C。每个进程都有自己的页表，并且页表需要驻留在内存中，否则这个程序就没法运行了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5dq0yaPUeSkFgtxwGa2B0Q4QcJFZgACRhlrG-BrmFYTyMB0R53ApgEAAwIAA3gAAz0E" alt="3.1.55" /><figcaption>3.1.55</figcaption></figure><p></p><p>第 55 题错选为 C。由题设可知，逻辑 2 号页对应主存 1 号页框，一个页框大小是 1MB/256=4096B，所以应该是 D。</p><p>第 56 题错选为 D。经典选项，应该选 B。选 D 是因为把 D 想成段表了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5hq0yahRbqobHB1tPeNdK1sDvqKswACRxlrG-BrmFZ3YVb7ZPL9BAEAAwIAA3gAAz0E" alt="3.1.62" /><figcaption>3.1.62</figcaption></figure><p></p><p>第 62 题错选为 A。页大小位 2048B，所以一个页可以装 1024/2=512 个页表项。由于逻辑地址空间大小是 2^16 页，所以需要 2^16 页/512=2=128 个页。</p><p>第 63 题错选为 D。属于低级错误，没细看题目。读完题目可以发现这道题要的是逻辑地址，所以逻辑地址形成的时间是链接。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5lq0ya79v1KO5TIOlQ6_n7src2t3QACSRlrG-BrmFaxoXVpaFQgMQEAAwIAA3gAAz0E" alt="3.1.66" /><figcaption>3.1.66</figcaption></figure><p></p><p>本题错选为 A。进行最佳适应算法的时候需要重排！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5pq0ybVQ6lODhwLAAEfU7I_ofqS9T0AAkoZaxvga5hWkDXFWzLl_64BAAMCAAN4AAM9BA" alt="3.1.70" /><figcaption>3.1.70</figcaption></figure><p></p><p>本题错选为 A。本题应该结合大题强化去理解，很显然本题应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5tq0ydJeh0a8hitc8oeSdmxys8roAACTBlrG-BrmFZdS6nvLbpUMwEAAwIAA20AAz0E" alt="3.2.10" /><figcaption>3.2.10</figcaption></figure><p></p><p>本题错选为 B。可见上一节的运行时动态链接，运行时才进行链接。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB5xq0ydlq5e2BbxhhxMSkQABtJzEnksAAk0Zaxvga5hWHOMDivkHag8BAAMCAAN4AAM9BA" alt="3.2.13" /><figcaption>3.2.13</figcaption></figure><p></p><p>本题不会做。事实上这道题也可以从大题的角度出发去理解，一个页框 128 个字，由于进程的代码段占有一个页，所以总共现在只有 3 个页。又因为一个整数占一个字，所以一个页框可以塞 128 个字，当第一次访问 <code>x[0][0]</code> 的时候，一次性调入 128 个字，也就是一次性塞 2 行到一个页框里。而由于是按列访问，所以读 <code>x[1][0]</code> 的时候不会缺页，而读下一个数的时候又缺页了。所以每 2 个数缺一次页，所以 64×64/2=2048。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB51q0yeYTMJxLnpkUnIZGJo6u2h_RAACTxlrG-BrmFYOITx0B8xxogEAAwIAA3gAAz0E" alt="3.2.16" /><figcaption>3.2.16</figcaption></figure><p></p><p>本题错选为 D。n 个不同的页号，那么意味着至少要缺页 n 次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB55q0yevYEncXVJ-p_Yc1U3TNLFwRgACUBlrG-BrmFaCQnOPUPAAAdoBAAMCAAN4AAM9BA" alt="3.2.23" /><figcaption>3.2.23</figcaption></figure><p></p><p>错选为 A。棍母题目，过。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB59q0yfFQTmbjOrVq5UVepbDJt3PsQACURlrG-BrmFZE9d_yihBgnwEAAwIAA20AAz0E" alt="3.2.27" /><figcaption>3.2.27</figcaption></figure><p></p><p>错选为 C。应该是 B。其他三个都是分段的优点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6Bq0yfmWkkkV6RkkvNO6RwPdGmSWgACUhlrG-BrmFZ5bKDqMzr8zAEAAwIAA20AAz0E" alt="3.2.35" /><figcaption>3.2.35</figcaption></figure><p></p><p>没做出来。虚拟存储技术意味着离散和多次，所以要“请求”开头的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6Fq0yf-3Lq48fplx-qlzODVuAlAcwACUxlrG-BrmFb9EUu_MiHWNAEAAwIAA3gAAz0E" alt="3.2.39" /><figcaption>3.2.39</figcaption></figure><p></p><p>第 39 题错选为 A。对于 1 和 2，FIFO 有可能出现增加页面还降低命中率。对于 3 和 4，显然工作集页面时在主存的，而虚拟存储器是存放它们的逻辑位的。且虚拟存储器对应的实际物理位置在磁盘。</p><p>第 40 题错选为 B。考虑这样一个情况，一个内存大小是 16g 的电脑，同时起了 100 个任务。由于内存太小了，所以任务所需的资源一直在交换空间换出换进，反而正在 CPU 跑的东西不多。因此只要增大内存就可以解决这个问题。安装更快的硬盘只能让交换速度变快，不能根本性解决一直交换的问题。</p><p>第 41 题错选为 C。和 40 题类似的错误，显然这是内存不够，因此减少多道程序的度数和增大内存可以解决这个问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6Jq0ygaMxqNGNv7-k8SsU9UqvG2dAACVBlrG-BrmFZZOLDkJX5kgwEAAwIAA3gAAz0E" alt="3.2.46" /><figcaption>3.2.46</figcaption></figure><p></p><p>第 46 题错选为 D。考虑这样的情况，用户进程访问缺页，假设页表满了，此时需要置换页，把对应的页调入内存中，然后给它分配内存，然后重新回到这个程序的初始地址开始运行。由于上一轮触发了缺页异常，那肯定不是越界异常，因此不可能发成越界。</p><p>第 47 题错选为 B。增大块表容量可以减少缺页异常的次数，所以可以增加虚实地址转换。页表常驻内存才可以快速访问，增大交换区只是增大交换页大小的容量，例如写脏位的容量，不会加快地址转换。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6Nq0yg9KvCZSjXWF9i8-a6R2gGB3gACVRlrG-BrmFZhA_yhzLdTlQEAAwIAA3gAAz0E" alt="3.2.55" /><figcaption>3.2.55</figcaption></figure><p></p><p>错选为 B。首先注意到存在位是页框号 60H 和 80H 的存储起始地址（物理地址），由于 60H 物理地址访问位和修改为为 10，所以先被换出。由于系统采用的是固定页框，所以虚拟地址 02A01H 会被塞到页框号为 60H 的部分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6Rq0yhUUcf2g5JuK1DIYcdaGVeHXQACVhlrG-BrmFakY8sAAXpHlqoBAAMCAAN4AAM9BA" alt="3.2.59" /><figcaption>3.2.59</figcaption></figure><p></p><p>第 59 题错了。</p><p>第 60 题错选为 A。页框指的是页的物理地址，也就是假设一个页的大小为 m，那么总共会有 M/m（M 为物理内存大小）个页框号。显然和 A，B 无关。而题设问的是对于一个进程而言需要的页框数，排除 C。可以得到 D。
对于 D 选项本身，假设指令系统采用间接寻址，那么就可以获得一个很大的地址空间访问到其他页，假设只采用变址寻址，那么也就只需要访问自己这几块地方就好了。</p><p>第 61 题错选为 D。内存映射文件的机制可以概括为将磁盘上的文件映射到物理内存，再将这一块物理内存分配给不同进程的逻辑共享内存区域 (这里反了，应该是操作系统将不同进程的逻辑共享内存区域映射到内存)。在此之后，只需要操作自己这块逻辑共享内存区域即可，对于底层是透明的。</p><p>综合而言，1，3 是正确的，而 2 反了，4 则是过程的一部分，不够全面。</p></section><section><h3>OS 王道选择题 2 刷第 4 章<a href="#os-王道选择题-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6Vq0yjRHOSauCdaFSmwBZgiyFaTrQACWRlrG-BrmFYaIp7YpEd8qgEAAwIAA3gAAz0E" alt="4.2.3" /><figcaption>4.2.3</figcaption></figure><p></p><p>错选为 A。</p><p>捋一遍 FAT 文件系统的查表过程。假设有一个文件目录为/A/D，B/M，C，A 为目录项，B 为目录项，M 为目录项，D 和 C 都是文件。</p><p>现在我想要去读 C，那么首先，假设内存里什么都没有，那么我先要从磁盘的固定块（这一步不需要查表，因为是固定块）读取/目录下的文件第 1 次读入，可以得到 A 的 FCB，然后根据 A 的起始块号可以读到目录项 A 的具体信息第 2 次读入，可以知道 A 里面有两个 FCB，一个是目录项 B，一个是文件 D。则查 B 的起始块号可以得到目录项 B 的具体信息第 3 次读入。可以得到 B 下面有 M 和 C。而因为是要读 C，所以根据 C 的起始块号将 C 所对应的磁盘块读入内存第 4 至 k 次读入（前面的如果也有多个块也得多次读，相应 + 即可）。不过默认情况下目录项算一个就可以了。</p><p>捋完之后再来看选项。FAT 文件目录存储在操作系统的固定位置，由操作系统负责访问，它自然不需要记录自己的位置。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6Zq0yj1mp4cPVt1E4_MnI9O__FZgAACWhlrG-BrmFbwnGx35LhAVwEAAwIAA3gAAz0E" alt="4.2.5" /><figcaption>4.2.5</figcaption></figure><p></p><p>错选为 C。对于 A，目录项分解正式 FAT 到 UFS 的转变；对于 B，文件系统高速缓存，例如 open 文件后系统存在一个 open 表。如果其他软件也需要打开这个文件，就不需要重复 open 了；对于 C，读文件需要从磁盘调块进内存；对于 D，异步 I/O 是进程调度那块的东西，可以让 CPU 利用率提升。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6dq0ykIVkwdLSvySaECL0-J53OwwQACWxlrG-BrmFb-gis58dxQGAEAAwIAA3gAAz0E" alt="4.2.10" /><figcaption>4.2.10</figcaption></figure><p></p><p>错选为 A。本题考查 UFS 系统。盘块大小为 1KB 意味着 1 个盘块可以存 1KB/16B=64 个目录项，也就是说存 3200 个目录项需要 3200/64=50 个磁盘块。为了找到这个目录项，需要平均花 50/2=25 次磁盘才能找到该文件的目录项，因为采用的是单级索引分配，所以需要再花 1 次找到具体的文件。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6hq0ykayio6-g_DorDVqQXG0bfE0wACXBlrG-BrmFZeXuI54Ca9SgEAAwIAA3gAAz0E" alt="4.2.19" /><figcaption>4.2.19</figcaption></figure><p></p><p>错选为 A。属于低级错误。这里一般指的应该是外部碎片，顺序存放会导致产生大量小块无法利用的块。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6lq0ykruAzaOSBIapa43VDwloUcQQACXRlrG-BrmFZzvvbTZLhIHQEAAwIAA3gAAz0E" alt="4.2.21" /><figcaption>4.2.21</figcaption></figure><p></p><p>错选为 A。索引表，翻译一下就是 inode（索引节点）指向的表，存放文件的具体信息，这个信息是存放在磁盘的特定块的。对于 fat 系统而言，fat 系统是为全局创建一张 fat 表，本题其实考察的是 ufs 系统。对于 A，打开文件表是调用 open 后在内存记录的一张表，一旦所有文件都关了，那么这个记录就没了。而且存放的是一条记录，不是专门创建一张表。位图和空闲盘块链表是用来管理空闲块的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6pq0ylDCJe_xTzPzi_8xj86TYAwKgACXhlrG-BrmFaAZUvCRRi1wQEAAwIAA3gAAz0E" alt="4.2.24" /><figcaption>4.2.24</figcaption></figure><p></p><p>第 24 题错选为 B。这道题的意思是说在最后一个块增加，而不是在中间增加。一个个个分析，对于 A，显然连续分配可以直接访问具体块，所以次数为 1。但是，如果存储空间不够了（因为要连续），此时需要把原来的给扬了，然后再次重新写入。也就是读 500 次，写 501 次；对于 B，隐式链接分配会记录 start 指针和 end 指针，所以只要在 end 指针处操作即可；对于 C 和 D，可以很方便的修改指针进行访问。</p><p>第 25 题错选为 C。512B 可以推算出每一块可以存放 5 个逻辑记录，所以 22/5+1=5，可以得出访问到该磁盘的次数，读入后需要写回，写回是一次记录，所以是 5+1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6tq0ylqq7V9dREtAAFPG_phr5QoaEoAAl8Zaxvga5hWaGshCT1JfmcBAAMCAAN4AAM9BA" alt="4.2.28" /><figcaption>4.2.28</figcaption></figure><p></p><p>错选为 A。系统支持的最大文件长度为 512MB，磁盘块大小为 4KB，一个簇包含两个磁盘块。FAT 表按照题目要求只存放簇号。由于操作系统按照簇为大小进行盘块分配，一个簇大小为 8KB。由于 FAT 表是本质是静态链表，一开始就分配了，长度大小是一个最大的文件长度（这句话不准确，应该是系统支持的最大文件长度=整个磁盘的最大可寻址容量），所以 512MB/4KB=2^17 个磁盘块，也就是 2^16 个簇/记录。记录这么多簇需要 16b，也就是 2B 的空间，所以 2^16×2B=2^17B，也就是 128KB。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB6xq0ynP0qcbMyS3fZdm66EgoZa1oQACZhlrG-BrmFZtz9xWMHtP-AEAAwIAA3gAAz0E" alt="4.2.32" /><figcaption>4.2.32</figcaption></figure><p></p><p>这三题都没做，一题题来看。</p><p>第 32 题。采用的是类 ufs 系统，磁盘地址是 32 位，意味着寻址范围是 2^32。由于 inode 需要存储地址信息，因此可以推测 inode 的地址数据部分是 32b=4B，所以 4KB/4B=1024，也就意味着一个磁盘块最多有 1024 个地址记录。所以 10+1024。</p><p>第 33 题。采用的是类 ufs 系统。磁盘块大小是 1KB，盘块号占 4B，所以一个磁盘块最多可以有 1KB/4B=256 条记录。由于采用 2 级索引分配，所以一个文件最多可以包含 256×256 个磁盘块，一个磁盘块是 1KB，所以 256×256×1KB=64MB。</p><p>第 34 题。采用的是类 ufs 系统。和上一题类似，一个磁盘块大小是 1024B，盘块号占 4B，所以一个磁盘块最多可以有 1024B/4B=256 条记录，由于是三级索引分配，所以 256×256×256×1KB=16GB。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB61q0ynpaJOANqWqt5A1oZ5Bz1KSpQACZxlrG-BrmFaC4Mh-KaTYUQEAAwIAA20AAz0E" alt="4.2.37" /><figcaption>4.2.37</figcaption></figure><p></p><p>错选为 C。文件打开的操作做的事情是找到文件的目录项然后将之复制到打开文件表。而将指定文件复制到内存指定区域是 read 做的事情。没打开那么如何在内存里找。C 选项不全。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB65q0yoFBemRmchzLnxw6yP1QM-XvAACaBlrG-BrmFbZkFU8cgNfmAEAAwIAA3gAAz0E" alt="4.2.39" /><figcaption>4.2.39</figcaption></figure><p></p><p>错选为 A。本体应该选 B，这道题可以理解为 close 文件和 write 文件是两码事，和上一题 open 与 read 也是两码事一样。Close 文件之后操作系统可以自己慢慢再写。对于超级块，超级快的信息是比较宏观的信息，例如总共有多少个数据块，有多少个 inode，有多少个空闲块，第一个 inode 从几号盘块算起等信息。而对于关闭文件，只会影响自己的 FCB，所以不需要修改超级块信息，即便是导致块变少了也不会去写回磁盘。只有一些操作：卸载操作系统，弹出 U 盘等信息才会写回磁盘。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB69q0yoXYZ8MsKF1-5ZGurG1OfsyBgACaRlrG-BrmFYH_UIpfoxelQEAAwIAA3gAAz0E" alt="4.2.41" /><figcaption>4.2.41</figcaption></figure><p></p><p>本题错选为 C。对于 1，考虑这样一个场景，从固态硬盘复制数据到磁盘；对于 2，用户优先级是进程调度需要考虑的事情，对于文件的访问，由用户访问权限和文件属性组成（例如只读）；对于 3，显然错误；对于 4，存取控制矩阵方法是用来保护密码的，对于系统故障等应该采用 RAID 磁阵列矩阵。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7Bq0yomZVSTxU6Ohphjo0lOj54mxwACahlrG-BrmFZQLP9mnIFa8gEAAwIAA3gAAz0E" alt="4.2.43" /><figcaption>4.2.43</figcaption></figure><p></p><p>错选为 B。F1 的硬链接 F2 建立出去，那么 F1 的引用计数是 2，F2 的也是 2，建立 F1 的符号连接，可以得到 F1 的引用计数是 2，F2 的是 2，F3 的是 1，删除 F2，那么 F1-1，F2 直接消失，F3 不变，所以就是 1。</p><p>考虑这样一种情况，假设引用计数情况的时候（该本身就是软链），硬链出去 1 个，那么这个软链也需要 +1。</p><p>需要注意的是，这个不是单独算的，而是连接到一个专门的东西上共同+-，如果是软链出去了才是单独算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7Fq0ypHmeKQVU1AtMM6Un2sCGbb5AACbRlrG-BrmFa_b0Yz3cB_ggEAAwIAA3gAAz0E" alt="4.2.47" /><figcaption>4.2.47</figcaption></figure><p></p><p>第 47 题错选为 B。</p><p>第 48 题错选为 C。进入系统时需要进行注册，此时还没有进入系统，所以应该是系统级。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7Jq0ypg7rCb-oZHvY9CjHNbHpjZFAACbhlrG-BrmFa9nyheAAHaQdQBAAMCAAN4AAM9BA" alt="4.2.53" /><figcaption>4.2.53</figcaption></figure><p></p><p>错选为 D，属于低级错误。256B/4B=64，可知一块磁盘块可以存 64 个项，所以 4+2×64+64×64。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7Nq0yp1w8xaZaCtu9LjUlc7aCDovQACcBlrG-BrmFbL5ApXEWUa2gEAAwIAA3gAAz0E" alt="4.2.56" /><figcaption>4.2.56</figcaption></figure><p></p><p>错选为 C。对于 A，索引结点总数也就是 inode 的总数，每 1 个 inode 都对应着一个文件，所以其和单文件无关；对于 B，简介索引级数越高，那么可以索引的范围就越大；对于 C，地址项个数意味着对于一个文件，需要有多少个地址信息才可以找得到，地址项越多，磁盘块也就越多；对于 D，文件块越大，意味着可以存储更多的信息。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7Rq0yqL5nVOMKlU5dO388iUOEZ8IQACcRlrG-BrmFZljYjGpj1vfAEAAwIAA3gAAz0E" alt="4.2.59" /><figcaption>4.2.59</figcaption></figure><p></p><p>错选为内 C。由题设可知，某文件索引节点已经在内存，所以读这个结点不需要花次数。10+1024+1024×1024，然这是经典的错误标准的零分。因为磁盘块大小占 1KB，所以一个磁盘块最多有 1KB/4B=256 块，也就是 10+256+256×256。对于 1234，显然是 1 级索引，所以先根据 inode 找到 1 级索引信息，再将之读入内存，花费 2 次。显然这是经典的错误标准的零分，因为题目给的是文件偏移量。所以 1234/1024=1，所以在第 2 个磁盘（其实是 1234/256=4，也就是 5），所以已经找到索引信息，读入 1 次即可；对于 307400/256=1200，所以是 1201，显然是 2 级索引，所以现根据 inode 找到 1 级索引信息，然后再找到 2 级索引信息，最后再将这个 2 级索引信息读入内存，花费 3 次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7Vq0yqlUNDTTcW-IV2WTHnAHFBPGwACchlrG-BrmFYAASAp_2Y1xrsBAAMCAAN4AAM9BA" alt="4.2.63" /><figcaption>4.2.63</figcaption></figure><p></p><p>不知道选什么。由于每个目录项长度是 64 字节，4 字节存放索引号，所以 4B=32bit，也就是最多表示 2^32 个文件数。由于 60 字节存放文件名，一个 ASCLL 码是 1B 存储，应该是 26^60。显然，前者先耗尽。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7Zq0yq27bMp7H9hWgG30mL8Il6iAgACcxlrG-BrmFZfeT2KphVHvgEAAwIAA3gAAz0E" alt="4.2.64" /><figcaption>4.2.64</figcaption></figure><p></p><p>错选为 D。对于 A，显然不是，考虑这样一个场景，同时用 edge 和 wps 打开 pdf 文件，也可以考虑读者写者问题；对于 B，在系统打开文件表中，仅有 1 个；对于 C，各进程内部关于 F 的打开表项肯定不一样；对于 D，假设采用的是硬链接，则一个进程 close，F-1，如果为 0 的时候才删除在系统打开文件表的表项。</p><p>辨析一下系统打开表和各进程打开表。系统打开表永远只有一个关于 F 的表项，只写位置，大小和引用次数；而对于各进程打开表，模式（只读，可写）、当前页，指向系统表第 x 行可以完全不一样。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7dq0yrLgPd0B8SgBFNjwOCWp5PYtAACdBlrG-BrmFbwQFiyTDw0oAEAAwIAA3gAAz0E" alt="4.2.69" /><figcaption>4.2.69</figcaption></figure><p></p><p>第 69 题（其实是对的）。对于 A，目录指的是一个比较泛的概念，可以理解为目录项，目录项指的是具体信息，指的是某一个文件的具体信息；对于 B，系统的打开文件表可以记录此时系统的全局文件的使用状况；对于 C，FAT 本身是一个静态的链表，其本身是预分配的，所以可以看得出来还剩多少外存；对于 D，FCB 指的是具体的文件含有的信息。</p><p>第 70 题错选为 D。用户在目录中新建文件 F，根据选项可以知道本题采用的是 UFS 系统。首先需要分配并且初始化 F 的索引节点，也就是找一个空闲的 inode 号，然后初始化（对应 A），接下来在父目录 C 中增加一条目录项，也就是在 C 的数据区末尾新增一条目录项，这条目录项只有两个内容，也就是文件名 F 和 F 对应的 inode 号（对应 B 和 D）。而对于 C 是 FAT 系统做的事情。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7hq0yrjsZ16Q9aSBIKoVPiVtuZxVwACdRlrG-BrmFbTjy-cQKeUHgEAAwIAA3gAAz0E" alt="4.3.4" /><figcaption>4.3.4</figcaption></figure><p></p><p>第 4 题错选为 A。UNIX 采用 UFS 系统，超级块位于最开始的部分，而文件的索引结构是放在索引节点里的，目录项对于 UFS 而言是具体的文件信息。</p><p>第 5 题错选为 B。为低级错误。B 是文件管理，C 是存储空间管理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7lq0ysMVrRl1CKI5KmzO6mH3LJpFQACdhlrG-BrmFYHaQwskVyCGwEAAwIAA3gAAz0E" alt="4.3.8" /><figcaption>4.3.8</figcaption></figure><p></p><p>第 8 题错选为 D。什么是空闲盘块号栈，也就是需要额外的信息去记录空闲块。对于 A，显然需要，通常采用首次适应算法和最佳适应算法，可以和内存分配的那部分联系起来。</p><p>第 9 题错选为 C。背书。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7pq0yse3MHfCuGVkZcJmww0dzqmYwACdxlrG-BrmFaZtsCqI1IcjQEAAwIAA3gAAz0E" alt="4.3.12" /><figcaption>4.3.12</figcaption></figure><p></p><p>错选为 C。背书。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7tq0ysuZx7zUnZ5kJ5EHaXVENqKcAACeBlrG-BrmFZ2kAo9fsftfQEAAwIAA3gAAz0E" alt="4.3.14" /><figcaption>4.3.14</figcaption></figure><p></p><p>错选为 D。本题为低级错误，事实上，这道题需要注意盘块和块内都是 0 来计算。</p></section><section><h3>OS 王道选择题 2 刷第 5 章<a href="#os-王道选择题-2-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB7xq0ytav5FhhKxyoWPdpkNwsnTREAACeRlrG-BrmFYegN2d6KxGcAEAAwIAA3gAAz0E" alt="5.1.1" /><figcaption>5.1.1</figcaption></figure><p></p><p>第 1 题错选为 C。对于 A，可寻址到字节，指定读/写操作的字节地址的应该是 DMA 方式，DMA 控制器与 CPU 协商好内存地址后，DMA 搬运。前面的解释有误区，事实上，这是块设备和字符设备的区别，也就是说，块设备需要一个自一个字地按照设备按照顺序流过来，不可能跟字符设备说读取第 50 个字节地数据；对于 B，共享设备必须是可寻址和随机访问的设备，这句话是正确。考虑这样一种情况，所有人都在使用一个硬盘，A 进程可以访问 m 地址，B 进程可以访问 n 地址，二者不冲突，但是对于磁带而言，A 进程访问了 m 地址，而 B 进程却只能继续顺序访问，无法共享；对于 C，共享设备指的是同一个时间范围内允许多个进程同时访问的设备，这里需要注意的是一个时间范围，而不是同一个时刻；在分配共享设备的时候不会引发死锁，因为其他设备也可以访问。</p><p>第 2 题错选为 A。对于 A，即使是设备虚拟化，但是本质上的设备也只有一个。例如多个进程想使用打印机，而打印机只有一个，所以采用 SPOOLing 技术将打印机逻辑抽象出来，可以被多个进程先分配（这里是分配），所以这里的意思是线性等待，使用比物理设备更多的设备指的是你可以在同一个时刻对于 1 个物理打印机使用 2 个逻辑打印机，显然这是错误的；对于 B，这是设备独立性需要做的事情，也就是无论采用什么品牌的打印机，在写代码的时候都是只用同一个标准化方式；对于 C，即假脱机技术；对于 D，这是虚拟内存。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB71q0yt1f5wGYIy_V3TLw24B8C-vGgACehlrG-BrmFbw_Ye36YHPdwEAAwIAA3gAAz0E" alt="5.1.4" /><figcaption>5.1.4</figcaption></figure><p></p><p>第 4 题错选为 C。设备控制器=I/O 接口，I/O 有 I/O 端口，I/O 端口本质就是寄存器，其有状态寄存器（也就是标志寄存器），数据寄存器，控制寄存器。对于中断是 CPU 要实现的功能，所以不需要。</p><p>第 5 题错选为 D。设备控制功能=I/O 接口功能，所以实现 I/O 接口功能的是由 I/O 逻辑去实现的。接口只是将两个东西给连接起来的协议。</p><p>第 6 题错选为 C。属于低级错误，DMA 方式是直接把设备的数据放入主存，由此可以半段出答案。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB75q0ywFIHrWOBQ2yYCxTZbLCDyvQQACexlrG-BrmFZAA_pfF7kMzgEAAwIAA3gAAz0E" alt="5.1.8" /><figcaption>5.1.8</figcaption></figure><p></p><p>第 8 题错选为 D。直接存取方式是存储设备找数据块的方式之一，常用于磁盘，其他两种分别是顺序存取和随机存取。</p><p>第 9 题错选为 A。处理机这个概念指的是可以独立执行复杂程序的东西，而 DMA 只会搬运，通道才是；对于 C，胡言乱语；对于 D，见第 11 题梳理 DMA 的过程。</p><p>第 10 题错选为 B。DMA 控制器首先是 IO 设备，所以至少需要有状态寄存器，控制寄存器和数据寄存器，因此 AC 可以排除；由于 DMA 需要将数据搬入内存里，因此需要内存寄存器来知道现在运行到哪块内存了。对于 D，DMA 不需要运行函数。</p><p>第 11 题错选为 C。本题对 DMA 方式理解不清晰。对于 A，预处理是和 CPU 协商内存，所以需要跑在内核态；对于 B，预处理是 CPU 通知，后处理是通知 CPU；对于 C，预处理和后处理都需要 CPU 参与；对于 D，预处理请求 I/O 的进程是 I/O 与 CPU 协商，所以是运行态，后处理是 CPU 中断然后取数据，所以是需要阻塞态。
这里梳理一下 DMA 运行的逻辑，首先是预处理阶段，CPU 首先先发通知，让 DMA 确认工作方式，例如源地址（硬盘），目的地址（内存），搬多少以及怎么搬（从硬盘读到内存），然后在数据传输阶段，是按照一个字一个字搬运的，并且不影响 CPU 干活，在后处理阶段，向 CPU 发送中断信号，CPU 中断并且拿到数据。</p><p>第 12 题错选为 A。“及时”是调度需要考虑的事情，而不是设备分配。对于设备的固有属性，可以理解为独占设备，虚拟设备，共享设备之类的，这就显然需要了。</p><p>第 13 题错选为 B。相对号的意思是进程自己的，例如进程想申请 2 台打印机，就会标号 1，2，而操作系统会映射到真实的物理号上；类型号是用来区分设备类型的，例如 01 代表打印机，02 代表显示器等；符号是人类起的名字，例如 C 盘。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB79q0ywrRlSha7b2GMemimwAAeyMiswAAnwZaxvga5hWlRs9xFvdJ0wBAAMCAAN4AAM9BA" alt="5.1.16" /><figcaption>5.1.16</figcaption></figure><p></p><p>第 16 题错选为 D。首先梳理一下 IO 设备的五层架构：用户 IO-设备独立性软件 - 设备驱动 - 中断 - 硬件。设备操作命令是什么，也就是用户向设备发送 IO，然后应该是由设备独立性软件找到正确的设备，然后翻译为设备操作命令，而设备操作命令是由设备驱动程序翻译为硬件看得懂的指令。</p><p>第 17 题错选为 D，分析见第 16 题。</p><p>第 18 题没做。50×80=4000 个字符。假设运行 1min，也就是总共打印 6×4000=24000 个字符，需要 24000×50μs=24000×50×0.000001s=120×0.01=1.2s，也就是 1.2/60=0.2/10=0.02=2%。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8Bq0yxI0iTr9gMRHjfKMNnJ6kKtHwACfRlrG-BrmFZNDio2JrXodwEAAwIAA3gAAz0E" alt="5.1.23" /><figcaption>5.1.23</figcaption></figure><p></p><p>第 23 题错选为 D。分析信息的流动，考虑程序中断方式来获取键盘信息。程序执行到 scanf 指令，此时进程调用 trap 指令，由操作系统将进程从运行态变为阻塞态，等待键盘输入信息。用户输入字符后，启动中断处理程序，将键盘控制器读入到系统缓冲区，然后将进程插入到就绪队列，最后等待处理机调度上 CPU 后，scanf 才算结束。</p><p>根据本题的经验可知，对于每一道真题，需要捋清楚背后的逻辑，这题在 2023 年的大题考察。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8Fq0yxe5Y44JSC_s2QbRx_xOyhhGQACfhlrG-BrmFYK9Z_HHvCNlgEAAwIAA3gAAz0E" alt="5.1.26" /><figcaption>5.1.26</figcaption></figure><p></p><p>错选为 C。分析信息的流动 CPU 向 DMA 控制器发送需求，初始化 DMA 并且启动磁盘，DMA 控制器按照一个字一个字传输一块数据到内存缓冲器（这个过程是 DMA 请求），接着 DMA 控制器发送中断请求，CPU 后处理执行 DMA 结束。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8Jq0yx3Qpdd0ssGjneL72WCyI5YIgACfxlrG-BrmFa57BgMK-_JzQEAAwIAA3gAAz0E" alt="5.2.5" /><figcaption>5.2.5</figcaption></figure><p></p><p>错选为 D。这道题其实出的不算严谨？很多时候 CD 是不必要的，所以是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8Nq0yzRhGtKG7U8qtGpDlEyF9msQgACgRlrG-BrmFbm9PhbAZ-93AEAAwIAA3gAAz0E" alt="5.2.7" /><figcaption>5.2.7</figcaption></figure><p></p><p>错选为 D。理解错误，绘制图片，本题的意思不是说两个设备同时向这个缓冲区写数据，而是针对一个缓冲区，A 设备可以向里写数据的通过是，B 设备可以从这里面拿数据。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8Rq0yzp3o-aLVIBk8y7IToetVY4FAACghlrG-BrmFZyrVf52qe4-AEAAwIAA3gAAz0E" alt="5.2.15" /><figcaption>5.2.15</figcaption></figure><p></p><p>第 15 题不知道选什么。分区分配是内存分配的概念。</p><p>第 16 题错选为 B。本题考查设备的分配，实际上应该是先从系统设备表等级，然后从下往上。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8Vq0y0BKwvCHEIr0Ts7I-QgZSUTawACgxlrG-BrmFYyLayfxhe9EgEAAwIAA20AAz0E" alt="5.2.26" /><figcaption>5.2.26</figcaption></figure><p></p><p>本题错选为 B。事实上，至少需要 1 台设备，不然再怎么逻辑化没有设备怎么分配？对于 B，SPOOLing 技术使作业不需要去等待，可以执行其他任务。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8Zq0y02_4b0ifJ6t8KEyu1LhIPdtQAChBlrG-BrmFbWHZWi7tGKIQEAAwIAA3gAAz0E" alt="5.2.30" /><figcaption>5.2.30</figcaption></figure><p></p><p>错选为 B。低级错误，没看完题目。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8dq0y1KYE5gx9KXN6DBnFMtiyMsyAAChRlrG-BrmFbYqIfW0dazNwEAAwIAA3gAAz0E" alt="5.2.34" /><figcaption>5.2.34</figcaption></figure><p></p><p>错选为 A。注意这道题是驱动程序，驱动程序的任务是将对该设备的命令翻译为底层硬件调用，所以首先是要转换；而校验的意思是不是对这个请求校验，而是对操作对象进行校验，例如对想要向磁盘的第 4 道第 1 盘第 3 扇区写入数据，得去校验这个数据是否超了（可以理解为页表）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8hq0y1g_g_MBWaIN1X0PEOw5yLo1wAChhlrG-BrmFaeypEj141YOgEAAwIAA3gAAz0E" alt="5.2.46" /><figcaption>5.2.46</figcaption></figure><p></p><p>错选为 A。将上一节复制粘贴过来：分析信息的流动，考虑程序中断方式来获取键盘信息。程序执行到 scanf 指令，此时进程调用 trap 指令，由操作系统将进程从运行态变为阻塞态，等待键盘输入信息。用户输入字符后，启动中断处理程序，将键盘控制器读入到系统缓冲区，终端结束，然后将进程插入到就绪队列，最后等待处理机调度上 CPU 后，系统调用从内核拷贝数据，scanf 拿到数据，然后 scanf 才算结束。</p><p>这题给的启示还是要研究真题并且将背后的过程捋清楚。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8lq0y17BWxVGirPzROjUtTFrGxDEAAChxlrG-BrmFa3GOqpfJTgewEAAwIAA3gAAz0E" alt="5.3.3" /><figcaption>5.3.3</figcaption></figure><p></p><p>错选为 C。光盘可以任意读，例如找第 x 集。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8pq0y2iH8tzVJf8iUPZ11k96djj9QACiBlrG-BrmFZj-3VsWI5c5gEAAwIAA3gAAz0E" alt="5.3.8" /><figcaption>5.3.8</figcaption></figure><p></p><p>错选为 B。本题时背书，梳理一下硬盘的格式化：</p><p>第一步是硬盘的低级格式化，也就是物理格式化，此时划分扇区和磁道，下一步是分区，也就是对每个分区记录起始位置大小（记录在主引导记录 MDR 和分区表）中，然后对分区进行逻辑格式化，初始化根目录，建立操作系统引导扇区，建立文件系统</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8tq0y3M_3GR8ppuf45gv6w7f1s6JQACiRlrG-BrmFb3nWFG6toZ1gEAAwIAA20AAz0E" alt="5.3.10" /><figcaption>5.3.10</figcaption></figure><p></p><p>本题错选为 B。对于 A，肯定是无关的，无论采用哪种调度算法，调度算法都不会影响到旋转，只会影响到寻道；对于 BC，如果采用的是连续分配，那么延迟会很小，那么如果采用的是隐式链接分配，那么影响就非常大了；对于 D，扇区的处理时间并不会影响旋转延迟，旋转本身只和硬件相关。事实上，如果和扇区的处理时间相关，那么就不会采用错开的方式去放逻辑数据了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB8xq0y3kE5RrkWw2Dp6rTWkViYGm6QACihlrG-BrmFayMFLNUVnhBgEAAwIAA3gAAz0E" alt="5.3.16" /><figcaption>5.3.16</figcaption></figure><p></p><p>对于第 17 题。首先注意才去随机寻道的方式，总共需要访问 b/N 个磁道。而由于所有的扇区组成一个簇，所以需要完整的转完一整圈才能度完这个数据。综上所述，对于 1 道，寻道需要 T，访问需要 r，总共是 b/N，所以选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB81q0y398Oc2B3WLCT7M9vuctC2scgACixlrG-BrmFZ7mxiskYuI4AEAAwIAA3gAAz0E" alt="5.3.25" /><figcaption>5.3.25</figcaption></figure><p></p><p>错选为 D。属于低级错误，静态更优的原因是静态会在背后把几乎不写的数据调道那些擦除多的块，对于 D 是动态做的事情。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB85q0y4weCDa9FxV-J8xu_iNVdlwkAACjBlrG-BrmFbiICSmpXB8XgEAAwIAA3gAAz0E" alt="5.3.30" /><figcaption>5.3.30</figcaption></figure><p></p><p>看书作对的。对于 1，分区是分区做的事情，对于 3，CRC 校验是低级格式化做的事情。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB89q0y5EqR4bkO-myzv9B3gU7fc2nwACjRlrG-BrmFZAJoQIHuGVrgEAAwIAA3gAAz0E" alt="5.3.32" /><figcaption>5.3.32</figcaption></figure><p></p><p>第 32 题错选为 D。属于低级错误。</p><p>第 33 题错选为 A。属于低级错误，184 和 182 的大小比较。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9Bq0y6aRfm7wZrsVVlzjSz42qeogAACjhlrG-BrmFYOmvmM32I-aQEAAwIAA3gAAz0E" alt="5.3.35" /><figcaption>5.3.35</figcaption></figure><p></p><p>错选为 D。属于低级错误，事实上，即便不知道温彻斯特硬盘就是磁盘，也应该想到这道题说的是文件系统，而均衡磨损是 SSD 自己本身实现的东西。</p></section></section>
<section><h2>计网王道选择题 2 刷<a href="#计网王道选择题-2-刷"><span>#</span></a></h2><section><h3>计网王道选择题 2 刷第 1 章<a href="#计网王道选择题-2-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAwxqyLiRx6CYeYGIGLkUW7b99eO4BgACqBJrG6T-SFaMCohDlYcyPwEAAwIAA3gAAz0E" alt="1.1.6" /><figcaption>1.1.6</figcaption></figure><p></p><p>本题第 2 空错选为 B。数据无差错的传送，不应选择的方式是电路交换。这里辨析一下电路交换的特点，其是连接一条物理线路，没有差错校验，直接发，毕竟是纯硬件。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAw1qyLiprP6gdW06QvXKCcktfJOD_wACqxJrG6T-SFYJM2_vkbrtGwEAAwIAA3gAAz0E" alt="1.1.17" /><figcaption>1.1.17</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAw5qyLi24xbUc1-7QH00Gegqe6zl6QACrBJrG6T-SFbuLHXJxfms9wEAAwIAA3gAAz0E" alt="1.2.12" /><figcaption>1.2.12</figcaption></figure><p></p><p>本题错选为 A。与 1 刷时候一样的傻逼错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAw9qyLjzE9qi3tkr7cbmpWTTpC2x8QACrhJrG6T-SFbsOx2BwZAasgEAAwIAA3gAAz0E" alt="1.2.16" /><figcaption>1.2.16</figcaption></figure><p></p><p>本题错选为 D。显然物理层向上运输的时候不会参与数据封装，对于表示层，表示层的作用是数据格式转换与压缩，会话层的作用是打断点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxBqyLkG-JZhJHtJUeNuBUv2WEhbGwACtxJrG6T-SFbvhZuBtVhCWAEAAwIAA3gAAz0E" alt="1.2.28" /><figcaption>1.2.28</figcaption></figure><p></p><p>本题第 3 空错选为 C。打断点是会话层的功能。</p></section><section><h3>计网王道选择题 2 刷第 2 章<a href="#计网王道选择题-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxJqyLk0aekJRt3OIat2ErQaCKWbnQACuBJrG6T-SFadfEIn_RMHzAEAAwIAA3gAAz0E" alt="2.1.6" /><figcaption>2.1.6</figcaption></figure><p></p><p>本题错选为 C。不包含，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxNqyLlF2Np_T1lxlMN81Eo27-hGKAACuRJrG6T-SFaDC2jRMR_YFQEAAwIAA3gAAz0E" alt="2.1.13" /><figcaption>2.1.13</figcaption></figure><p></p><p>第 13 题错选为 B。信道带宽为 3000Hz，信噪比为 30dB，考虑无噪声的信道，也就是 2×3000×log2V，本题没给 V，忽略；考虑有噪声的信道，Wlog2(1+1000)=3000×10=30kb/s。</p><p>第 14 题没做出来，还是要理解频的概念，是个范围。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxRqyLlXiivjsv1hi9RZ8I4aj6lUOAACuhJrG6T-SFbrV9UYA1PgRwEAAwIAA3gAAz0E" alt="2.1.16" /><figcaption>2.1.16</figcaption></figure><p></p><p>本题错选为 D。每 1/8s 采样一次，固定上限是 8Hz，所以 Wlog2V=32。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxVqyLlqqKtU9FLKo3g8aHzNbiBK5wACuxJrG6T-SFZ5eYr-axtRRQEAAwIAA3gAAz0E" alt="2.1.21" /><figcaption>2.1.21</figcaption></figure><p></p><p>本体错选为 C。信号传播速度指的是 RTT 相关，也就是光信号/电信号本身的传播速度，数据传输速率指的是发送时延，也就是 bps。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxZqyLmMB24QuT6xrjR8MV_L84RBcgACvBJrG6T-SFbD5RYkBs7EsgEAAwIAA3gAAz0E" alt="2.1.23" /><figcaption>2.1.23</figcaption></figure><p></p><p>本题错选为 C。考虑有噪声的信道，即 Wlog2(1+1000)=8000×10=80kb/s，除以 2 即 C。考虑无噪声的信道，即 2Wlog2V，此处没有提供 V，所以不需要考虑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxdqyLmil5yklN1DvLfi2_6rX4Cy1QACvRJrG6T-SFZ5rWvh0nQ39gEAAwIAA3gAAz0E" alt="2.2.10" /><figcaption>2.2.10</figcaption></figure><p></p><p>电器特性指的是多少伏之类的，逻辑 0 和逻辑 1 对应的电压区间是什么；</p><p>功能特性：引脚的语义。</p><p>重点在于含义</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxhqyNXlsTEIAqd_n2cID-nTGt5j8QAC1RJrG6T-SFbyWS2HN2WHKwEAAwIAA3gAAz0E" alt="2.3.8" /><figcaption>2.3.8</figcaption></figure><p></p><p>本题错选为 A，没看完选项。</p></section><section><h3>计网王道选择题 2 刷第 3 章<a href="#计网王道选择题-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxlqyNZXRPI2HEFtf5jUiWbXYsZ-twAC1xJrG6T-SFYqX2FD8il1pwEAAwIAA3gAAz0E" alt="3.1.3" /><figcaption>3.1.3</figcaption></figure><p></p><p>第 3 题错选为 C。D 是网络层的作用，对于 C，可理解为 MAC 子层，MAC 需要对特定的物理链路进行控制。</p><p>第 4 题错选为 B。循环冗余校验是校验手段，而不是能保证帧重传。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxpqyNZtv09cvMk6bsCL2BXlBzesqwAC2BJrG6T-SFa8SOWkg8Lm6AEAAwIAA3gAAz0E" alt="3.1.6" /><figcaption>3.1.6</figcaption></figure><p></p><p>本体错选为 C。流量控制是对发送方的数据流量控制，拥塞控制是对接收方的数据流量控制。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxtqyNZ9_CPwErnW7w0sqZl6ww7RWgAC2RJrG6T-SFa-WAjMOl5SagEAAwIAA3gAAz0E" alt="3.4.2" /><figcaption>3.4.2</figcaption></figure><p></p><p>本题错选为 D，属于低级错误，和一刷时类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAxxqyNa34hADyYybaQh5qQwtQUWRKwAC3xJrG6T-SFYbGSGlr-g7GQEAAwIAA3gAAz0E" alt="3.4.9" /><figcaption>3.4.9</figcaption></figure><p></p><p>本题错选为 B，和一刷时一样的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAx1qyNfDycwagF05QyMyj6vx1xduAgAC4RJrG6T-SFYlJp52tIRNngEAAwIAA3gAAz0E" alt="3.4.14" /><figcaption>3.4.14</figcaption></figure><p></p><p>本体错选为 C。发送窗口最大为 n-1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAx5qyNfZfCsKWmOwrl8uOzyshhmo8wAC4hJrG6T-SFaUSNFXV8wCYQEAAwIAA3gAAz0E" alt="3.4.27" /><figcaption>3.4.27</figcaption></figure><p></p><p>本题错选为 B。假设数据帧长度为 x，即 (x/3000)/(x/3000+RTT)=0.4，即 x=800bit。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAx9qyNf1UUhfvHk1hXslJ3lbw5oYgQAC4xJrG6T-SFYksGAtP2tvxQEAAwIAA3gAAz0E" alt="3.4.28" /><figcaption>3.4.28</figcaption></figure><p></p><p>第 28 题错选为 A。和 1 刷一样的错误。</p><p>第 29 题错选为 A。1000×8/10000=800ms，800/(800+800+400)=0.4。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAyBqyNgVor7PoMpAPwQsWn5Zz5aaNwAC5hJrG6T-SFbhlnZhFbzvGQEAAwIAA3gAAz0E" alt="3.5.2" /><figcaption>3.5.2</figcaption></figure><p></p><p>本题错选为 C。对于 C 是物理层的作用，MAC 层不提供可靠的数据传输，MAC 子层上面还有一个小的层？那个层才是对上层协议提供服务。上半层是 LLC 子层，也就是逻辑链路。不同的 MAC 层上面必须得有一个一样的 LLC。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAyFqyNg3VyLtglTqiTZjImSOL5LqqgAC5xJrG6T-SFa2NCgiLnTp0gEAAwIAA3gAAz0E" alt="3.5.4" /><figcaption>3.5.4</figcaption></figure><p></p><p>这两题和 1 刷一样。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAyJqyNhJMv-5VgflM15sQ2elomx6GwAC6BJrG6T-SFbgLMwChzuj5gEAAwIAA3gAAz0E" alt="3.5.11" /><figcaption>3.5.11</figcaption></figure><p></p><p>本体错选为 A，脑子抽了选了 A。</p><p>本质是理解问题，CSMA 的 1-坚持是空闲立刻发，不空闲死守；非坚持协议是空闲立刻发，不空闲立刻放弃；p-坚持是空闲以 p 的概率发送，不空闲死守。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAyNqyNkZdbkeK8CSfGNLAxRvkuZrRwAC6RJrG6T-SFY2lwABYBSF178BAAMCAAN4AAM9BA" alt="3.5.14" /><figcaption>3.5.14</figcaption></figure><p></p><p>本体错选为 D，和 1 刷的时候一样的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAyVqyNnvGAnwVWSgw_u-eA617n6tJQAC6hJrG6T-SFbsrVbpayTsXAEAAwIAA3gAAz0E" alt="3.5.18" /><figcaption>3.5.18</figcaption></figure><p></p><p>本体错选为 D。这道题只算了 D 的分别和 a，而没有算他们之间相互也得正交。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAyZqyNoAATWZSSLfAZqfmQ8K1NEupEcAAuwSaxuk_khWI0I4_yE62HEBAAMCAAN4AAM9BA" alt="3.6.17" /><figcaption>3.6.17</figcaption></figure><p></p><p>本题错选为 A。第 2 次重传，是 0 至 <span><span>22−12^2-1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>，所以最大是 3，也就是 <span><span>3×3 \times</span><span><span><span></span><span>3</span><span>×</span></span></span></span> 争用期。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAydqyNoUi2UGVA_59LWEsET15g0Q9wAC7RJrG6T-SFaJZPvXelL8bQEAAwIAA3gAAz0E" alt="3.6.21" /><figcaption>3.6.21</figcaption></figure><p></p><p>本题错选为 B，默认为粗同轴电缆，细同轴电缆也只是 180m。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAyhqyNq3hV7bv5bC6pNee_-Eq_srsQAC7xJrG6T-SFalkYv48Se6KQEAAwIAA3gAAz0E" alt="3.6.23" /><figcaption>3.6.23</figcaption></figure><p></p><p>本题和 1 刷一致的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAylqyNrS_NH2uZmfm5pYGAmEZpS9IwAC8RJrG6T-SFZ1uAABRA8H-1sBAAMCAAN4AAM9BA" alt="3.7.1" /><figcaption>3.7.1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAypqyNrliC-F4TnVPW4hWooP6EcrjwAC8hJrG6T-SFbF6D1rFrmQUAEAAwIAA3gAAz0E" alt="3.7.7" /><figcaption>3.7.7</figcaption></figure><p></p><p>第 7 题错选为 C。第 8 题错选为 A，均和 1 刷一样的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAytqyNr7sqAjZmtpyyJwW8b2HhTNPwAC9BJrG6T-SFZpU5HB5GvtYgEAAwIAA3gAAz0E" alt="3.8.7" /><figcaption>3.8.7</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAyxqyNsO_otz9yeAaccgavukN5SwfQAC9hJrG6T-SFbhTF8HG5fxTAEAAwIAA3gAAz0E" alt="3.8.10" /><figcaption>3.8.10</figcaption></figure><p></p><p>第 10 题错选为 D。与 1 刷一致的错误。</p><p>第 11 题错选为 A，与 1 刷一直的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAy1qyNsoJm3CJETtiUQ6L58C5ixE0wAC9xJrG6T-SFYlLAJOkzB9oQEAAwIAA3gAAz0E" alt="3.8.17" /><figcaption>3.8.17</figcaption></figure><p></p><p>本题错选为 A。这里是交换机，需要注意。ARP 协议是主机干的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAy5qyNtUvxAUIqnpE1C4xhOM0Z4rHgAC-BJrG6T-SFb6__OKrCdquAEAAwIAA3gAAz0E" alt="3.8.20" /><figcaption>3.8.20</figcaption></figure><p></p><p>本题错选为 C，与 1 刷一致错误。</p></section><section><h3>计网王道选择题 2 刷第 4 章<a href="#计网王道选择题-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAy9qyNuFWh4bQ1Hvojmm5kCFRKx2FAAC-RJrG6T-SFZQbZOCctsH0AEAAwIAA20AAz0E" alt="4.1.1" /><figcaption>4.1.1</figcaption></figure><p></p><p>本体错选为 A。细想之下属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzBqyNubSGHNv3zP9o0Y6g-VbT6hyAAC-hJrG6T-SFb7xu0OKcvbhwEAAwIAA3gAAz0E" alt="4.1.11" /><figcaption>4.1.11</figcaption></figure><p></p><p>本题错选为 A，与 1 刷一致错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzFqyNv4PrmehH26ce8UVg6uj9ialgAC_BJrG6T-SFZBe9zopPc0vgEAAwIAA3gAAz0E" alt="4.1.14" /><figcaption>4.1.14</figcaption></figure><p></p><p>本题错选为 A，与 1 刷一样的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzJqyNwwJ8kYypA1qIoPoqKKHGxk2gAC_hJrG6T-SFYQZQdfcrrqMwEAAwIAA3gAAz0E" alt="4.1.18" /><figcaption>4.1.18</figcaption></figure><p></p><p>本题错选为 C。2，4 显然正确，对于 1，并非物理，对于 3，并且位于交换机中。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzNqyNxSVN_ywOlDwB0bD_Sgp_CzTAAC_xJrG6T-SFacXfK9UuTOyAEAAwIAA3gAAz0E" alt="4.2.10" /><figcaption>4.2.10</figcaption></figure><p></p><p>错选为 D。对于 B，需要汇报终点不可达。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzRqyNyr5sqOpeejviJlyn26coCWbwADE2sbpP5IVg8zYO1DFov8AQADAgADeAADPQQ" alt="4.2.12" /><figcaption>4.2.12</figcaption></figure><p></p><p>本题错选为 C。属于低级错误。比对子网掩码即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzVqyNzAa_d8byJDoOng--_uogUYTQACARNrG6T-SFZfvi5M3VJVGwEAAwIAA3gAAz0E" alt="4.2.15" /><figcaption>4.2.15</figcaption></figure><p></p><p>本题错选为 C。和 1 刷一致的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzZqyN5yq9dpxkPdAxPQRs716oulkQACAxNrG6T-SFbXpRhbIZEHHQEAAwIAA3gAAz0E" alt="4.2.21" /><figcaption>4.2.21</figcaption></figure><p></p><p>本题错选为 D。划分为子网反而还减少了网络数量。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzdqyN6CQw3is-JyjN5IZ_STjIahYwACBBNrG6T-SFYRkVN73WvxKAEAAwIAA3gAAz0E" alt="4.2.23" /><figcaption>4.2.23</figcaption></figure><p></p><p>本题错选为 D。为什么一个主机的两个网卡的 IP 地址必须属于不同的网络？IP 地址是被网卡所拥有的，但是接受和发送是属于电脑的。所以进行 ARP 的时候，如果处于同一个网络，那么就都会回，发送也是一样的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzhqyN6pDtnKZdLqP0XtGdXojMm60AACBRNrG6T-SFbBmV0fTYyrZAEAAwIAA3gAAz0E" alt="4.2.26" /><figcaption>4.2.26</figcaption></figure><p></p><p>本题错选为 A。如果配了不属于这个子网的，确实会炸，但是不是这道题的原因。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzlqyN7AHrtfcnT6NsGVTuuYZd0NTAACBhNrG6T-SFaqGCgvpmcRswEAAwIAA3gAAz0E" alt="4.2.40" /><figcaption>4.2.40</figcaption></figure><p></p><p>第 40 题错选为 A。和 1 刷时错误一样。</p><p>第 41 题错选为 B。属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzpqyN7f1_c3gQxzGi-gs9MVviZ5aAACBxNrG6T-SFYEnYXcYUkGUQEAAwIAA3gAAz0E" alt="4.2.54" /><figcaption>4.2.54</figcaption></figure><p></p><p>本体错选为 B。发送广播分组，意味着子网掩码非 1 的部分全为 1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAztqyN8AAZciAxcq14wRQi908I8w7igAAggTaxuk_khWXlH1TuyylwEBAAMCAAN4AAM9BA" alt="4.2.58" /><figcaption>4.2.58</figcaption></figure><p></p><p>本题错选为 B。假设初始什么都有没有。对于 A，H1 要向 H2 发送报文。首先检测到 H1 和 H2 在同一个子网，所以不需要交给默认路由，查询 ARP 表，发现没有 ARP 缓存，于是向子网内广播，收到 H2 的 MAC 地址后直接传输即可，对于 H2 向 H1 发送同理。对于 B，H2 要访问互联网，假设 H2 需要发信息包到 8.8.8.8，检测到非本网络，于是发送到默认路由，因为没有 ARP 缓存，所以发送 ARP 请求。结果因为 R2 过滤了 ARP，所以无论如何也拿不到 R3 的 MAC 地址，至此结束，不能访问因特网，H4 要访问互联网，检测到非本网络，于是发给默认路由，因为没有 ARP 缓存，所以发送 ARP 请求，得到 R2 的 MAC 地址后，由 R2 转发到互联网。对于 C，H1 想和 H3 通信，检测到非本地网络，所以向默认路由发送 ARP 请求，得不到 MAC 地址，所以不能。对于 D，显然可以。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAzxqyN8eZV7g5qC5wD1C3T5eyl_9-wACCRNrG6T-SFbjynlutSo2QgEAAwIAA3gAAz0E" alt="4.2.63" /><figcaption>4.2.63</figcaption></figure><p></p><p>本体错选为 B。注意本题非 CSMA/CA 协议的以太网帧，但事实类似的。对于 IP 地址，过路由器不会换 IP 地址，但是会换 MAC 地址。本题只需要会读题，就能做对。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAz1qyN9mor0AAR2GJKIfGfb34HqDdioAAgoTaxuk_khW2Mr3NMnwncABAAMCAAN4AAM9BA" alt="4.4.6" /><figcaption>4.4.6</figcaption></figure><p></p><p>本题错选为 D，与 1 刷类似的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAz5qyN-DFSqokF8QoI8o6vutzgHqJgACCxNrG6T-SFYHP1q-r5GhVAEAAwIAA20AAz0E" alt="4.7.2" /><figcaption>4.7.2</figcaption></figure><p></p><p>本题错选为 D。和 1 刷时候错误类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAz9qyN-f8p6N_ENbnHQmZdy0P24xnQACDBNrG6T-SFbfud0m0GTcmgEAAwIAA3gAAz0E" alt="4.7.20" /><figcaption>4.7.20</figcaption></figure><p></p><p>本题错选为 D，与 1 刷时错误类似。</p></section><section><h3>计网王道选择题 2 刷第 5 章<a href="#计网王道选择题-2-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0BqyN_LJulkoSRr1w0hE3VtQtORhAACDRNrG6T-SFZX5FKAnaZ3VAEAAwIAA3gAAz0E" alt="5.2.12" /><figcaption>5.2.12</figcaption></figure><p></p><p>本题错选为 D。200B，UDP8B，IP60B，以太网 662N4。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0JqyN_xaKpP8hhzajETSBlZ2NeRSQACDhNrG6T-SFbE2YekqvbH4gEAAwIAA3gAAz0E" alt="5.2.16" /><figcaption>5.2.16</figcaption></figure><p></p><p>第 15 题错选为 A。复用指的是根据源端口号去找其他的，分用是到达目的端口号。</p><p>第 16 题错选为 B。注意回卷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0NqyOAIXVCjuzc7Z3nA25pCY-azPAACDxNrG6T-SFayKaghslz4_QEAAwIAA20AAz0E" alt="5.3.7" /><figcaption>5.3.7</figcaption></figure><p></p><p>本题错选为 C。TCP 的 IP 分组协议号为 6，UDP 的 IP 分组协议号为 17。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0RqyOAgPlxWOPn5FmTpRDZGi6DcNAACEBNrG6T-SFZ0abhwmUn5BwEAAwIAA3gAAz0E" alt="5.3.10" /><figcaption>5.3.10</figcaption></figure><p></p><p>第 10 题错选为 A。首先注意量纲，齐次，我可不可以发和我应不应该发是两码事，这里题目并没有说是不是连续收到了三个 ack，没有其他条件，所以就直接 B 就好了。</p><p>第 11 题错选为。A 收到 ack=100 的确认报文段，意味着 B 希望 A 发起始为 100 的数据，所以末序号为 99 的报文段都已经收到。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0VqyOA1keKhc8n7CArr2551ZvUaWQACERNrG6T-SFZnvSUJIhNguAEAAwIAA3gAAz0E" alt="5.3.13" /><figcaption>5.3.13</figcaption></figure><p></p><p>第 13 题错选为 B。接受方允许的窗口=接收窗口，发送方允许的窗口=最大可以发送的窗口，发送方窗口大小=min。</p><p>第 14 题错选为 B。背书。对于 A，为超时，对于 B，是长时间没有数据交互，对于 C，是四次挥手主动关闭的最后等待 2MSL 时间。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0ZqyOBUKZdI6nymAAGsyEWZdeAf5cEAAhITaxuk_khW1Dv0mMZ97rMBAAMCAAN4AAM9BA" alt="5.3.29" /><figcaption>5.3.29</figcaption></figure><p></p><p>本题错选为 A。发送方窗口由 2000 变成 3000，意味着可以发 3000B 的数据，这里没有提到 MSS。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0dqyOCIdahXuZuOMd0h-DJfWKETrQACExNrG6T-SFbWPL2_0RMkNAEAAwIAA3gAAz0E" alt="5.3.31" /><figcaption>5.3.31</figcaption></figure><p></p><p>本题错选为 A。拥塞窗口为 34KB，发生超时，则拥塞窗口减为 17KB，接下来的 RTT 里，第一个 RTT 结束是 2KB，第 2 个 RTT 结束为 4KB，然后是 8KB，16KB。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0hqyOCYX2pTT_nWp_R3AuHd7DOOWwACFBNrG6T-SFaFbUtzs0qzvAEAAwIAA3gAAz0E" alt="5.3.35" /><figcaption>5.3.35</figcaption></figure><p></p><p>第 35 题错选为 C。发送 k 个数据段，下一个阶段就发送 2k 个段。</p><p>第 36 题错选为 A。显然为 C。新门限值是当前的一半。</p><p>第 37 题错选为 C。收到了 3 个冗余 ACK，则变成 17KB。1RTT 结束后为 18KB，2-19，3-20，4-21。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0lqyOCtV4Nkiq-5nyJQ2u0UhQmPkgACFRNrG6T-SFbY5KikAwJt8AEAAwIAA3gAAz0E" alt="5.3.56" /><figcaption>5.3.56</figcaption></figure><p></p><p>本题错选为 A。需要注意，这里没有说收到 3 个 ACK，所以不需要重传。注意窗口被划分为两块，已发送未收到确认和未发送的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0pqyODM6z0y_QVbdBDrlNkkkHScsgACFhNrG6T-SFb-f7nIvdcrvAEAAwIAA3gAAz0E" alt="5.3.60" /><figcaption>5.3.60</figcaption></figure><p></p><p>本题错选为 C。这里需要辨析一个概念，也就是每收到一个 ack 窗口 +1MSS，从宏观上来看，确实是翻倍，但是从围观上来看是一个 ack+1MSS。</p><p>所以对于这道题，我收到了一个 ack=3001，所以 +1MSS，此时发送窗口是 3，而 3001-4000 的数据还在没被确认，不需要再发，也没有到达三次 ACK，所以只能发 4001-6000，所以段数也就是 2。</p></section><section><h3>计网王道选择题 2 刷第 6 章<a href="#计网王道选择题-2-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0tqyODtBN6_if1sQ7ZQngZ-TsEs_gACFxNrG6T-SFbVXvaHqorBUgEAAwIAA3gAAz0E" alt="6.2.8" /><figcaption>6.2.8</figcaption></figure><p></p><p>本题错选为 B。首先先找本地域名服务器，然后再委托本地域名服务器进行查询。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA0xqyOFBuSLB2wl1fWuTou48TAABTaEAAhgTaxuk_khWKHiRAAFPxDRdAQADAgADeAADPQQ" alt="6.2.10" /><figcaption>6.2.10</figcaption></figure><p></p><p>第 10 题错选为 A，第 11 题错选为 B。</p><p>这两题放在一起讲，都属于低级错误。本地域名服务器采用迭代查询，则本地域名服务器需要发送多条请求；而本地域名服务器采用递归查询，那么只需要查询一条。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA01qyOFSicjBg-DuocNOh1d16m0qRwACGRNrG6T-SFYBlt58njkAAXoBAAMCAAN4AAM9BA" alt="6.2.14" /><figcaption>6.2.14</figcaption></figure><p></p><p>本体错选为 B。本题错误原因和 1 类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA05qyOFrOxyDH2U7LUkvZpTNm3-ZhgACGhNrG6T-SFZyj2KR2aY0jAEAAwIAA3gAAz0E" alt="6.5.1" /><figcaption>6.5.1</figcaption></figure><p></p><p>错选为 D，属于脑子抽了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA09qyOF53lTfRgMMeTFVJcCySIW1pAACGxNrG6T-SFZ6fU-7lQXQ9gEAAwIAA3gAAz0E" alt="6.5.3" /><figcaption>6.5.3</figcaption></figure><p></p><p>错选为 C，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1BqyOGJeGsR4HlTmMzhBH01_kL-2wACHBNrG6T-SFYgYm23-0QHoAEAAwIAA3gAAz0E" alt="6.5.7" /><figcaption>6.5.7</figcaption></figure><p></p><p>不知道选什么，错误原因见 1 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1FqyOLGEZ_Gwp3tnKhudZ3WJMK_-gACIBNrG6T-SFbhBdngP521nAEAAwIAA3gAAz0E" alt="6.5.7" /><figcaption>6.5.7</figcaption></figure><p></p><p>不知道选什么，错误原因见 1 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1FqyOLGEZ_Gwp3tnKhudZ3WJMK_-gACIBNrG6T-SFbhBdngP521nAEAAwIAA3gAAz0E" alt="6.5.11" /><figcaption>6.5.11</figcaption></figure><p></p><p>错选为 A。首先使用 2 个 RTT 时间获取到 WEB 页，然后用 2 个 RTT 获取到资源。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1NqyOMF-Qr9fp7t1Q3sejNsu1_sdQACIhNrG6T-SFaSglhzMe8PUwEAAwIAA3gAAz0E" alt="6.5.13" /><figcaption>6.5.13</figcaption></figure><p></p><p>本题错选为 D。委托本地域名服务器进行递归查询，本地域名服务器进行迭代查询，总共查询 3 次，也就是 3RTT 的时间获取到链接，随后使用 1.5RTT 的时间建立连接，在最后 0.5RTT 内不进行捎带返回 index。1RTT 时间获取到具体 index，然后再使用 1RTT 的时间并行请求 3+2+1+1=7。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1RqyOMYlzePoNdKdcQvyU94bB9SWQACIxNrG6T-SFbGl43XZg8xsQEAAwIAA3gAAz0E" alt="6.5.18" /><figcaption>6.5.18</figcaption></figure><p></p><p>本题错选为 A。建立请求开始花费 1.5RTT，0.5RTT 用于捎带传输 index。1RTT 的时间获取 2MSS 的内容，再 1RTT 的时间获取最后 1RTT 的内容，总计 4RTT。</p></section></section>
<section><h2>408 早年真题 1 刷（09-22）<a href="#408-早年真题-1-刷09-22"><span>#</span></a></h2><ul>
<li>完成时间：20260824-20261003</li>
<li>平均分：</li>
<li>平均作答时间：</li>
</ul><section><h3>408 真题 2009<a href="#408-真题-2009"><span>#</span></a></h3><ul>
<li>完成时间：20260827</li>
<li>分数：147
<ul>
<li>计网：-3</li>
</ul>
</li>
<li>时间：135</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAd1qx3K_-wABGUe1v-ElbZ3cCnwUNQQAAocQaxs_wThWNn0zLs4YUFUBAAMCAAN4AAM9BA" alt="47 1" /><figcaption>47 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAd5qx3LUsOyvPuwIVOpUqBZ3CwlymAACiBBrGz_BOFZrfvan7j3GCQEAAwIAA3gAAz0E" alt="47 2" /><figcaption>47 2</figcaption></figure><p></p><p>路由与路由聚合</p><p>对于本网络，收到了丢弃即可，但是接口仍然要写上（-2）且对于第 3 问，只写了路由聚合，但是没有写具体的完整路由（-1）</p></section><section><h3>408 真题 2010<a href="#408-真题-2010"><span>#</span></a></h3><ul>
<li>完成时间：20260828</li>
<li>分数：135
<ul>
<li>选择题：-4</li>
<li>操作系统：-4-2</li>
<li>计网：-5</li>
</ul>
</li>
<li>时间：150</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA19qyOvKVsnZ2lvJdb_jcixgxh3dQAACOhNrG6T-SFYg7Mz5fomlpQEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>排序算法（快排）</p><p>快排是看初始的序列，初始序列接近有序，那么会有问题，也就是说先划分后递归，所以递归并不是性能平静</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2RqyO3IDblSadfxSd8cmOekYJEGoAACehNrG6T-SFZkKZmxQ6OzaQEAAwIAA3kAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>数据类型转换</p><p>int-&gt;float-&gt;double 相关的问题，以及阶码溢出问题。需要注意的是，float 转 int 并不是直接改解释，而是需要进行实质性转换的</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5BqyejV58wmvCWSj8ZZzGHxSzYebQACsBFrG6T-UFZUyd-IXyf5ZQEAAwIAA3gAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>操作系统 1 磁盘以及磁盘相关的计算</p><p>磁盘的时延为：队伍处理 + 寻道 + 寻盘片。对于这道题，可能是略不严谨，这道题真正应该表述为 C-LOOK，不过也能做。我这道题忽略了两个地方，第一是没看题，请求队列那里需要时延（-1），第二是低级错误，0.5/100 然后单位竟然写成了 500ms（-1）。对于第二问，我写了优先级，答案是先来先服务，我的想法是除非一次性来非常多，不然基本都是先来先服务，这个不是很能理解，可能是低优先级饥饿，而且读取时间其实很短，即便优先级更紧急，也不会影响到太多的时间，而且优先级还更麻烦（-2）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5Fqyejqot5jRqPRL335QaLO7OXV5wACsRFrG6T-UFaRqF_HHJHadAEAAwIAA3kAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>操作系统 2 页表的低级错误</p><p>没有转换成二进制，而是直接 7 写进去了（-2）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5Jqyej-eycddQdOAzED_JCCVbKPLAACshFrG6T-UFaAkCUTVxJgRQEAAwIAA3gAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>数据传输率/信道利用率</p><p>数据传输率和信道利用率是两码事，这道题计算成了信道利用率，而不是数据传输率。（-5）</p></section><section><h3>408 真题 2011<a href="#408-真题-2011"><span>#</span></a></h3><ul>
<li>完成时间：20260830</li>
<li>分数：139
<ul>
<li>选择题：-6</li>
<li>算法：-1</li>
<li>操作系统 PV：-3</li>
<li>计网：-5</li>
</ul>
</li>
<li>时间：/</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5VqygM_NWC0xHXM_R1DTZUe0n4XwwACtRFrG364UVZK5WJoS8FuYAEAAwIAA3kAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>关于队列 f 和 r 的推到</p><p>记反了，应该是 f 和 r 指向已经插入了第一个元素，然后 r 回退，而不是 f 回退</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5dqygT0fcBW1mThPoIMON-25XBUpAACvBFrG364UVaas4JYRKgKQQEAAwIAA3kAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>低级错误</p><p>涂卡图错了，C 涂成 D</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5tqygYHtcKWOY7frf-UZ9eXB0uklQACwRFrG364UVagSdGQGc6GiwEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>简单路径的概念</p><p>简单路径指的是不包含重复自己的路径</p><p>算法，非最优解问题不大，-1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Bqyi4kpHcYlq-alrbRVGgpvLsmJwAC2RJrG364UVbEmEJ2Al8-jQEAAwIAA3kAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>题意理解错误</p><p>这道题的最后一问意思是问怎么判断，数字电路那块，而不是直接说利用 OF（-1）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Nqyi9u9iFh6s6Dq9rtJS_sWefwWQAC3xJrG364UVZDG8subEEaYQEAAwIAA3kAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>PV 操作</p><p>seat 释放错误（-1），也好像对 service 值理解错误（-2）</p></section><section><h3>408 真题 2012<a href="#408-真题-2012"><span>#</span></a></h3><ul>
<li>完成时间：20260830</li>
<li>分数：136
<ul>
<li>选择题：-6</li>
<li>操作系统：-7</li>
<li>计网：-1</li>
</ul>
</li>
<li>时间：150</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9xqy113N8DT-Oe3VxnOzS9a-FdhEAACKxVrG364YVaIAAGJAbnbZGwBAAMCAAN4AAM9BA" alt="21" /><figcaption>21</figcaption></figure><p></p><p>地址总线，数据总线与控制总线</p><p>凡是“寄存器里的内容”、“按字节/字编码的信息”，统统是数据，必须走数据总线，凡是“单根专用引脚电平”、“离散的时序/握手触发脉冲”，才走控制总线</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_hqy2xj3TjkRtVANTKz_5yn1eAHGQACrhVrG364YVY6jE36daR5XAEAAwIAA3kAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>open 与 read 的具体流程</p><p>open 的参数是 pathname，打开方式（只读/只写，追加）以及权限掩码；read 的参数是 open 返回的文件描述符，buf 用户空间指针以及 count 期望读取的字节数。并且 open 和 read 都要变成内核态才能操作（其实想一下，read 本质也是搬文件）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBANqy3CdLoFff_uhsvn010RVRKh2JQACvRVrG364YVaUHBmNcU9LfgEAAwIAA3kAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>网络地址/子网掩码</p><p>这道题属于低级错误，广播地址应该是全 1，而不是突然一下 0 然后后面 255</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAZqy3F-eEgvEO5VDftVkX8_1ZLdVAACwBVrG364YVYB-1VLlLWHRwEAAwIAA3kAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>cache 数据率，K 在不同体系下的含义，为什么 DMA 优先</p><p>总次数乘上交换的块的大小就是数据率，不需要考虑 4B（-2）。K 在本题含义是 1024，而不是 1000（-1）。DMA 优先级更高的原因是会导致 IO 数据丢失（-1）</p><p>这道题二刷依旧云里雾里，需要三刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDtqzPw8L_L0Pc-zkmfbjLdBYGOdDQAC4RJrG8y1YVZCks5whA2g-gEAAwIAA3kAAz0E" alt="44 1" /><figcaption>44 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDxqzPxWZ-1qz1A6WLmk6QH1oYH9cAAC4hJrG8y1YVbEh6-ge9TmzgEAAwIAA3kAAz0E" alt="44 2" /><figcaption>44 2</figcaption></figure><p></p><p>低级错误</p><p>这道题其实想到了空哪，然后忘记放上去了（-3）一定要回来检查 + 想清楚谁是谁，谁在谁的后面等</p><p><a href="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBApqy3HTO_bGLwoK0HUYuAoAAd_2db8AAscVaxt-uGFWaEDXb9PhXzIBAAMCAAN5AAM9BA" target="_blank">47</a></p><p>（注意，题目的报文 3 的第二行，50f0,4380H 扫描错误，应该是 5010,4380H）</p><p>ttl 与路由器跳数，以及 16 进制</p><p>首先需要说明的是 16 进制问题，16 进制减法和 10 进制减法并不一样（借位得到的东西应该是 16，而不是 10。然后是 ttl 与跳数相关的问题，假设一开始是 10，到我手上是 5，那么经过了 10-5，为什么？是因为到我手上的时候，跳数并不会 -1。所以如果一开始是 10，那么发送方是 10，路由器 1 即将发送的时候是 9，路由器 2 即将发送的时候是 8，以此类推，路由器 5 即将发送的时候是 5，所以到手上的时候，我不需要转发，所以就是 5（-1）</p></section><section><h3>408 真题 2013<a href="#408-真题-2013"><span>#</span></a></h3><ul>
<li>完成时间：20260903</li>
<li>分数：144
<ul>
<li>计组：-6</li>
</ul>
</li>
<li>时间：/</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDJqzMoiaOGZSiWTN8X1NCgZ2IMdfQACbhJrG8y1YVb6RCZwjakFEwEAAwIAA3kAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>IO 相关</p><p>漏了存储周期，启动一次总线，也就是送首地址 5ns，准备数据 40ns，发数据 8×5ns；</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDNqzM87yCNB4etJ2otmkU7hMvryIQAChRJrG8y1YVZbhXp_miFE6QEAAwIAA3kAAz0E" alt="44 1" /><figcaption>44 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDRqzM9USyt4r-ecZRGXGl9_HonRugAChhJrG8y1YVaqCd4UB6zvdAEAAwIAA3gAAz0E" alt="44 2" /><figcaption>44 2</figcaption></figure><p></p><p>指令相关，低级错误</p><p>200CH+FFC8H，而不是+C8H，这个需要尤其注意（-2），另外，注意指令寄存器（被多路选择器误导了（-1）</p></section><section><h3>408 真题 2014<a href="#408-真题-2014"><span>#</span></a></h3><ul>
<li>完成时间：20260905</li>
<li>分数：126
<ul>
<li>选择题：-14</li>
<li>数据结构：-1</li>
<li>计组：-6</li>
<li>操作系统：-3</li>
</ul>
</li>
<li>时间：/</li>
</ul><p>不对，感觉很不对，今天的数学卷子也做得不好。这份卷子选择题错太多了，而且都是比较低级的错误。感觉是最近状态有点不好？不，是没有集中注意力的原因。这份卷子我在做的时候甚至觉得很简单，那么为什么会导致这样呢？我认为是过度轻视以及没有检查。一定要检查，包括今天数学也是，没有检查。但是更本质的问题是没有紧张起来当真正的模拟。</p><p>还可以注意一下解题问题，这份卷子解题顺序十分随意，而且有没有认真思考每一个选项过去。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBENqzbuf7F2kR9PmGIIaORAt4bpRYgAC3RBrG8y1aVb6cakE8pl4cAEAAwIAA3kAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>语文阅读理解</p><p>阅读理解出了问题，这道题的意思是说，DRAM 的引脚总数，而不是说是整个地址的总数</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEVqzb_Qt3WWkcTxmP7hqnPzaMPlxAAC3xBrG8y1aVbv033cvIbGeAEAAwIAA3kAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>关于 offset 的理解</p><p>offset 存的时候只存本身，没有存 + “1”或者编码</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEtqzcRck5pcK3-Y9OrLuLtaIJXW6QAC7RBrG8y1aVavaX7hCapq1QEAAwIAA3kAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>语文阅读理解</p><p>阅读理解出了问题，响应和中断加起来共 100ns，而不是分别 100ns</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFBqzc57Beq0HYfBDpsy7pxZAoyKgAACAhFrG8y1aVbiPw6tFYKG9gEAAwIAA3kAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>语文阅读理解</p><p>并且这道题还没算完</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFZqzdP24PMAAccYiR8NdmWzCwPthQMAAhsRaxvMtWlWrUN-dmVd5jQBAAMCAAN4AAM9BA" alt="33" /><figcaption>33</figcaption></figure><p></p><p>语文阅读理解</p><p>为会话层提供服务，而不是会话层为谁提供服务</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFhqzdUjiEwI7H4K0TUBfhL9_oaBvQACHhFrG8y1aVZWlmJCFVhPsgEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>属于低级错误</p><p>被“背诵”的答案影响了</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBF1qzdmpnTNzbnxXWn1H5V3s_psxHQACLRFrG8y1aVar7Rxz6_isNAEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>想当然</p><p>题目没读完</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBF9qzdxY0FAYN8NIXAzdvb6vWqh4ggACMxFrG8y1aVagSf4LIiDfRgEAAwIAA3kAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>低级错误</p><p>多 + 了一个 1（-1）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGFqzdyJjH7dJzHo7O3oguX1vSR45wACNRFrG8y1aVZaXV8Pu59g_wEAAwIAA3kAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>对于指令的分析不准确，回滚回去没分析出来（-1）。</p><p>这个具体可以看二刷的时候，分析的比较明白。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGJqzdyjU1KaJ-FAdOK_Ze4-I7I42QACNhFrG8y1aVbJ9-DwdOVcSAEAAwIAA3kAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>cache 想当然以及对指令的理解</p><p>对于 cache，没有考虑指令 cache；对于指令部分，则是忽略了题干中所说的，指令已经在内存了，所以不会缺页。此外，这里的寄存器 5 位指的是寄存器编号有 5 位，而不是数据本身（-5）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGNqzdy1xitqurSeBvDd4IszLPvCrwACNxFrG8y1aVbq_wceCXBTnAEAAwIAA3kAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>文件相关以及题目没写完</p><p>对这块的分析还是不对（链式分配答案对了但是分析是错的）对于直接插入，先读写移动 29 次，最后插入自己。对于链式，先读 29 次，插入自己后修改第 29 的指针，所以是 29+1+1。（-1）对于最后一问，没搞懂怎么看。其实很简单啊，由于总共是 4B，所以有 32 位，最多是 2^32 个，然后再乘上大小就好了（-2）</p></section><section><h3>408 真题 2015<a href="#408-真题-2015"><span>#</span></a></h3><ul>
<li>完成时间：20260905</li>
<li>分数：147
<ul>
<li>选择题：-2</li>
<li>计组：-1</li>
</ul>
</li>
<li>时间：150</li>
</ul><p>果然还是定时 + 集中注意力好用</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJlqzy5Xx-r5lBy6CQchzvTNDpiZEwACFhNrG7fmeVY7BlNlkbq-QgEAAwIAA3kAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>kmp 算法</p><p>遗忘以及轻视</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWxq2IrGPGUxgz7tGzl7WpBjmiESygAC9RNrG89ByVZkp7GfOjOjDwEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>背答案</p><p>没有实质性分析（-1），写快了</p></section><section><h3>408 真题 2016<a href="#408-真题-2016"><span>#</span></a></h3><ul>
<li>完成时间：20260906</li>
<li>分数：122
<ul>
<li>选择题：-14</li>
<li>DS：-2</li>
<li>计组：-4</li>
<li>OS：-3</li>
<li>计组：-5</li>
</ul>
</li>
<li>时间：150</li>
</ul><p>今天卷子也不对啊，为什么呢。感觉对于一些模型还是不够熟悉，理解还是不够深刻</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdNq3GW1MwdEXoqATxHNNaol4Kl7gAAClhBrG2MQ4Fbky8F0sJ6ujAEAAwIAA3cAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>拓扑排序</p><p>考研范围内的拓扑排序，如果对于邻接表的话，是先遍历一次（花费 e 的时间）然后开一个辅助数组存储</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0dq0ekMVIwn5TweD8qq_d8eJ7NEhQACrxBrG6jnkFYeR-ggmXeKPAEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>PC 与指令的关系</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Nq0ffvuKkpYgr0Rf3Pxoj_q0zW1wACPBtrG-BrkFY0rRwWdOPt7wEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>对线程与进程的理解</p><p>不同进程之间是单独的，但是同一个进程的线程是需要需要互斥访问的</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Rq0fh82X5peOV37CoC0ygWeNVjlwACPhtrG-BrkFZZVu7OG9oNugEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>spooling 技术相关的背书</p><p>思考极端情况对于内存的影响</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Vq0fjI153pzhYtiN5Lmh9FtMSZzwACPxtrG-BrkFZjdGyOCduh3AEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>管程相关的背书</p><p>其实也有和读者写者问题的理解</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdpq3IwgVd0PwNCl_AXLiBMwh5-akQAC6hFrG2MQ4FZ9E1lpAuA_qwEAAwIAA3cAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>第 36 题</p><p>一来一回</p><p>第 40 题</p><p>dns 解析</p><p>迭代查询本地域名服务器需要如何解析，<a href="http://www.abc.def.com%EF%BC%8C%E9%A6%96%E5%85%88%E8%AE%BF%E9%97%AE%E3%80%82%E5%BE%97%E5%88%B0%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D%E6%9C%8D%E5%8A%A1%E5%99%A8.com%EF%BC%8C%E7%84%B6%E5%90%8E%E8%AE%BF%E9%97%AE.com" target="_blank">www.abc.def.com，首先访问。得到顶级域名服务器.com，然后访问.com</a> 得到 def.com，然后访问 def.com 得到 abc.def.com，然后访问 abc.def.com 得到 ip 地址</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdtq3Iw_G27aNbjxd-wYovOM3I0K-gAC6xFrG2MQ4FZfDf0ey4EXvgEAAwIAA3cAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>（-5，问题很大）</p><p>首先是辨析，这道题是基于 tcp 连接之后的，我认为有点歧义，不过暂且就这么做，这三分算是语文理解问题。第 8 个确认段到了之后，应该接收窗口是 12，拥塞窗口变为 9，窗口是 9（-3）而对于第 3 题就不应该了，辨析 mss 和具体序号（-1）。最后过一遍第 4 问（-1），第四问是记错了，服务端一定是要等到接收到 ack 之后才关</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdhq3HFAGxllTAnn6wHr4Zw4k91qPQACqRFrG2MQ4FaxjFHHSexJLAEAAwIAA3cAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>不会最优解</p><p>（-2），问题不大</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdxq3JMGoQ8lSkj8fOXC0OtUObPCWAACBxJrG2MQ4Faoc4NlJUVUxQEAAwIAA3cAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>中断和设备相关</p><p>最后 20 个时钟周期不需要+，因为那个是用来发送的（-1），CPU 在中断做了什么，背书不会（-2）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCd5q3JmYugELorx6bLbr_2y0UQjeRQACdBBrG2MQ6FbopkgDafg2-AEAAwIAA3cAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>辨析块号与真实的号</p><p>（-2），属于细节性问题</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCd9q3JuJXTst5ykQfvsP8kKoU836IAACdRBrG2MQ6FYGrhHZ6GBi1wEAAwIAA3cAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>最大的文件以及访问簇</p><p>最大文件想错，访问的簇由于是链接存储，所以可以随机访问，所以不需要访问 100</p></section><section><h3>408 真题 2017<a href="#408-真题-2017"><span>#</span></a></h3><ul>
<li>完成时间：20260907</li>
<li>分数：143
<ul>
<li>选择题：-4</li>
<li>计组：-1</li>
<li>计网：-2</li>
</ul>
</li>
<li>时间：120</li>
</ul><p>之前的卷子我认为其实并没有完全按照时间来，是随便挑的时间。加油。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAhq02Gg6cuG16SeWVk1CxCnwbGojAACJRprG-BrmFZJeHMciwP4RwEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>边界对齐</p><p>完全没有找到分析思路，没有从边界对齐去思考</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCZq1HtdDlYwu1a3HIC0_8PrW7oZmwACJxJrG1-fqVZ208Q9zbhH_AEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>子网相关</p><p>想到了，但是选的 512。这里有俩字，可分配，所以应该 -2。如果问的是 IP 地址总数，地址空间大小，那么不需要 -2</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCxq1IFArpySZ_5CzY2TRWC8PmhwGwACOBJrG1-fqVbGdN07QXzIkQEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>低级错误</p><p>正数的 float 第一位是 0，而不是 1（-1）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCC1q1IOkwY-vZ3cKPeSKg7nLawNArgACPBJrG1-fqVbu9KTUIbwepAEAAwIAA3kAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>没有捋清楚块内地址是多少位以及 LRU 意味着什么</p><p>本题 LRU 是 1 位，而不是 3 位，搞清楚 LRU 意味着什么</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDBq1Ii-GPik2qdVq31a-n4VsrhDuAACRhJrG1-fqVZoBXpqlI6r5wEAAwIAA3gAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>回退 n 帧协议</p><p>回退 n 帧协议，我发给你 R1,1 和 R1,3，那么我会把 R1,3 丢了（-2）</p></section><section><h3>408 真题 2018<a href="#408-真题-2018"><span>#</span></a></h3><ul>
<li>完成时间：20260917</li>
<li>分数：142
<ul>
<li>选择题：-6</li>
<li>计组：-2</li>
</ul>
</li>
<li>时间：120</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCE9q1QU5slC8mrv3m3L3OVQRaOCF1AACshNrG1-fqVanXKCnnk4wjAEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>操作系统多任务</p><p>并发够用了，但是更深入也可以并行</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGBq1RCk3gaVt0CwQshNYOMdnTQ7uwACxRNrG1-fqVbVcDRUxcfRWwEAAwIAA3gAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>管程</p><p>对于 A 这个表述，实际上是入口锁。对于 C，条件变量没有值这个概念</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFVq1QrOm6TtidJrN5RBKNtcA1abJAACuBNrG1-fqVZmvksiM3obIgEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>路由聚合低级错误</p><p>想当然直接选了，没有再看到底要缩多少位</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGVq1RKgufKUelaFNbIemCFvf2JTHgACyhNrG1-fqVbMR-LjngX3FwEAAwIAA3gAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGZq1RKyQNj42lwwVjs3Epk_eUtikwACyxNrG1-fqVZPMD1bJc8MVAEAAwIAA3gAAz0E" alt="44 图" /><figcaption>44 图</figcaption></figure><p></p><p>没有捋清楚块内地址是多少位以及 LRU 意味着什么</p><p>本题 LRU 是 1 位，而不是 3 位，搞清楚 LRU 意味着什么</p></section><section><h3>408 真题 2019<a href="#408-真题-2019"><span>#</span></a></h3><ul>
<li>完成时间：20260917</li>
<li>分数：144
<ul>
<li>选择题：-2</li>
<li>计组：-3</li>
<li>计网：-1</li>
</ul>
</li>
<li>时间：150</li>
</ul><p>这份卷子证明了检查还是很有用的。选择题检查出来了 4 个错的。但是我有点怀疑我能不能在考场上写完卷子，毕竟现在都是写做过的题，很神秘啊</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYpq2ejw0vSyMrJvD6O3xUpVRZy9vAACgxJrG89B0Vaw3EE0MjwFRgEAAwIAA3kAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>对“唤醒”理解有误</p><p>唤醒的意思是阻塞到就绪态</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeBq3ZfKiSt7jNxNs8tNufWLw7467AACnxJrG2MQ8FZg2FqSd4z8VwEAAwIAA3cAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>IO 相关</p><p>磁盘第 x 号，是从 0 开始计算的（默认）（-2）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeNq3Z4qwAX6tp9lDIKBseP5ihvduwACphJrG2MQ8FZxpBGemm6iqwEAAwIAA3cAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>条件转移</p><p>注意条件这两个字（-1）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeJq3ZzgRuedsb3UvTj-vdm6xjMtFQACoxJrG2MQ8FZJZ4NCwOjC1wEAAwIAA3cAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>低级错误</p><p>分析正确，然后 H3 发送，写的 H3 收（-1）</p></section><section><h3>408 真题 2020<a href="#408-真题-2020"><span>#</span></a></h3><ul>
<li>完成时间：20261001</li>
<li>分数：136
<ul>
<li>选择题：-8</li>
<li>DS：-3</li>
<li>计组：-2</li>
<li>OS：-1</li>
</ul>
</li>
<li>时间：120</li>
</ul><p>感觉有点不好，这份卷子选择题错了 4 个，而且我记得我这几天刷选择题的时候，有相当多的选择题掉进了 20 年的坑里。而且，这张卷子我还检查出了其他 4 道选择题，所以难以想象我当时直接做的时候会错多少个。总的来讲，一方面是确实十来天没写卷子了，另一方面是确实依旧有点分心。</p><p>可能还有一点，就是这两天晚上都在看小说，所以头有点痛。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQABatcMz6OjjhKb_kKjOT_Xuhu6sR0AAjETaxvGKrlWStcZ9jMzhUsBAAMCAAN4AAM9BA" alt="3" /><figcaption>3</figcaption></figure><p></p><p>二叉树的顺序存储</p><p>必须得把那一行结点都存了，即便是后面没有数据</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQRq1w4CTZvySTVlxb05xfGLeahqxQACNhNrG8YquVYCHGAN5iP3yQEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>拓扑排序</p><p>其实单纯是懒得分析导致的错误，没得说</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQhq1w_XGIuaWMoxBXjImzr5cu4ggAACPRNrG8YquVZ84o8tKkcHTAEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>B 树的插入</p><p>属于低级错误，忘记 B 树可以有多个分叉了</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRRq1xoE8k2LDUOV2ryZfNSS7l8dcAACdRNrG8YquVY0QSdbybaouAEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>中断相关</p><p>属于低级错误，辨析相应优先级和处理优先级，响应优先级是硬件决定的，处理优先级是中断屏蔽字决定的</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCStq1yQxexh9wbigqc8laafS4bKL2AACsBNrG8YquVbTjHbaJ7VEnwEAAwIAA3gAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>算法不会最优解</p><p>问题不大（-3）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCS5q1zANXtg8js7epUZbZdA8Vg6YtwACBBRrG8YquVZeUkXdzO5NpgEAAwIAA3gAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>低级错误</p><p>题目要求是分析地址 2，分析的地址 1</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTBq1zBNFGf979IWmDY21rwqkRXAIAACCRRrG8YquVbW_K9UU-r8IgEAAwIAA3gAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>忽略页号</p></section><section><h3>408 真题 2021<a href="#408-真题-2021"><span>#</span></a></h3><ul>
<li>完成时间：20261002</li>
<li>分数：142
<ul>
<li>选择题：-2</li>
<li>计组：-2</li>
<li>OS：-3</li>
<li>计网：-1</li>
</ul>
</li>
<li>时间：150</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVxq2HEGKAy8Yfij08tLhjYuUebGugACqxNrG89ByVazf4yderBTewEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>差分曼彻斯特编码</p><p>低级错误，直接想成曼彻斯特编码</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWVq2HZiz4PDV9ijo_j0FzAKSq_asgACwRNrG89ByVb_ESg_vqDRCQEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>主存空间大小与计算错误</p><p>可寻址的主存空间大小，意思是整个空间大小，理解错了。另一个则是减法计算错误（-1-1）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWZq2HZzdVk1U2cuXuCCJTwhRAlg_wACwhNrG89ByVajrsH4q9P_3QEAAwIAA3gAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>页表项位数</p><p>想多了（-1）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWdq2HaEOIiAaAdehwqm7tJbrktaYgACwxNrG89ByVYBXaR2kUz9GwEAAwIAA3gAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>信号量互斥访问的原因</p><p>其实就是因为多个进程（-2）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWlq2Ham023k0m6Gaawv5mhW0HKA6AACxRNrG89ByVYlf2rJCvcO2gEAAwIAA3gAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>链路不完整</p><p>从 DNS 到 UDP 到 IP 到 CSMA/CD，最后一个没说。（-1）</p></section><section><h3>408 真题 2022<a href="#408-真题-2022"><span>#</span></a></h3><ul>
<li>完成时间：20261003</li>
<li>分数：132
<ul>
<li>选择题：-8</li>
<li>计组：-9</li>
<li>计网：-1</li>
</ul>
</li>
<li>时间：120</li>
</ul><p>检查还检查出来 2 选择题。总的来讲不应该，这张卷子暴露了我很多对模型的理解不充分，以及记忆的问题。所以复盘早年的卷子应该跟上了，这张卷子的第 43 题其实就跟 2009 年的卷子是差不多的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZ1q2xz0i2MqTXZdVp0XZ3sNYX1qRQAClBFrG8ST2VafEyg8ZPvwygEAAwIAA3kAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>语文阅读理解</p><p>以及最后没有耐心了，这道题是不难的。这道题题面是判断定长和哈夫曼译码集的</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCb5q219RbMcS2x5GZyuLkvrG1keW0QACGRJrG8ST4VbqgkqNEgbdJwEAAwIAA3cAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>哈希表的影响方式</p><p>装填因子也影响，装填因子越大越容易</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaFq2yFFcyg_zrFXsA4T9CGAzIeokAACoBFrG8ST2VZ-k7-9_-3gjQEAAwIAA3kAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>低级错误，低级到我都不想写在这里。没看完选项直接想当然选的</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbRq21SSsRJ5yPvCIXKBxpllRvy8OAAC_xFrG8ST4VYaNCdV1Ogn3AEAAwIAA3cAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>默认网关</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWVq2HZiz4PDV9ijo_j0FzAKSq_asgACwRNrG89ByVb_ESg_vqDRCQEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>默认网关不是给 nat 路由器，而是给最近的路由器</p><p>整道题目没理解什么意思</p><p>1，第二问没回答到点子上，单总线是为什么要使用暂存器的原因。2，理解错指令解析的全流程，指令通过 IR 解析给其他所有部件。3，多路选择器和地址译码器功能混淆，前者是总出 1，后者是 1 出多。4，理解错题目意思以及指令流动流程，整个流动流程应该是 PC 出来然后到 MAR，读，然后 MAR 到 IR，继而理解错后面多少个时钟周期的含义。5，没理解 CU 应该接谁，CU 解析的应该是标志，FR 不用多说，接 IR 的目的是为了看 jmp 等跳转。对于 MDR 等信号，CU 是发出者，通过总线发送即可，而 CU 需要接收 FR 等的信息来判断</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfZq3xK80UVQXQwKBPpiyDG3uSJIwAACUxhrG3KB-VaO7uI9f84BGgEAAwIAA3cAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>磁盘相关</p><p>没算扇区旋转时延，DMA 控制器对总线优先的原因没有解释清楚，应该从数据丢失的角度解释</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfRq3w8EzctYaDErh0OMGcApDoN1mQACTxhrG3KB-VaOlsBeQO6KbgEAAwIAA3cAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>CMCD/CA 协议</p><p>当前谁收，当前谁发，最开始来源于（或者最终要给谁）</p></section></section>
<section><h2>DS 王道选择题 3 刷（选做）<a href="#ds-王道选择题-3-刷选做"><span>#</span></a></h2></section>
<section><h2>计组王道选择题 3 刷<a href="#计组王道选择题-3-刷"><span>#</span></a></h2><section><h3>计组王道选择题 3 刷第 1 章<a href="#计组王道选择题-3-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADgmrEj6UhTW95zR3R1a_vfhAvfm0YAAIvE2sbxNooVn1uUe-rUhgxAQADAgADeAADPQQ" alt="1.2.1" /><figcaption>1.2.1</figcaption></figure><p></p><p>本题错选为 B。完整的计算机系统=计算机硬件 + 计算机软件，计算机硬件=主机 + 外设，主机=CPU=运算器 + 控制器 + 存储器等</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADg2rEj_iIDC-ahyBX49RZMmv5vApCAAIwE2sbxNooVsLIQI7irEOfAQADAgADeAADPQQ" alt="1.3.18" /><figcaption>1.3.18</figcaption></figure><p></p><p>本题错选为 B，属于低级错误。P=10^15，仔细算，其实 B 和 C 是一个意思。</p></section><section><h3>计组王道选择题 3 刷第 2 章<a href="#计组王道选择题-3-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADhGrEkEDbJuu885Oq_wYBz19F_LFtAAIxE2sbxNooVr3LLZet4gABiQEAAwIAA3gAAz0E" alt="2.2.32" /><figcaption>2.2.32</figcaption></figure><p></p><p>本题错选为 A。错误原因在于没有注意到这是 int 型变量，所以就随便想了一个值去做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADhWrEkIJ9dXcnsvzLQGzn1lNGSiO9AAIzE2sbxNooVtrOucDNje-wAQADAgADeAADPQQ" alt="2.3.13" /><figcaption>2.3.13</figcaption></figure><p></p><p>本题错选为 B。属于低级错误。这道题的意思是说对阶后的结果，也就是算 y 具体的 2 进制是多少。而我却以为是问 y 的前 8 位是多少，恰好 y 对出来是 2^6，所以就直接选了 A。</p><p>这道题应该是 6+127=133=128+5。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADhmrEkbjw1Le1UWu4NKEc3Vn58hP3AAI0E2sbxNooVshi4aOGoZTRAQADAgADeAADPQQ" alt="2.3.33" /><figcaption>2.3.33</figcaption></figure><p></p><p>这道题做的是对的，选 D，需要注意，左归和右归的意思是保持小数点不动而动数字。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADh2rEkejzb_BgCEFCjSuJDus_QgyJAAI1E2sbxNooVk48i8AEwoa0AQADAgADeAADPQQ" alt="2.3.38" /><figcaption>2.3.38</figcaption></figure><p></p><p>错选为 D。本题错误原因在于没注意是 int，将之当成无符号数去算了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADiGrEkiQCacBENq0N5OiM8kh7L9OjAAI3E2sbxNooViK-SycUA0KpAQADAgADeAADPQQ" alt="2.3.42" /><figcaption>2.3.42</figcaption></figure><p></p><p>这道题是背题惹的祸。注意非规格化浮点数的表示，非规格化浮点数是 0.f×2^-126，注意不是 -127。</p></section><section><h3>计组王道选择题 3 刷第 3 章<a href="#计组王道选择题-3-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADiWrEkpiURky1sTvTiUs__vmQJkeZAAI4E2sbxNooVriAEaX_HNSDAQADAgADeAADPQQ" alt="3.2.16" /><figcaption>3.2.16</figcaption></figure><p></p><p>本题错选为 D。Flash 可以在一些嵌入式当交换内存。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADimrEkuQKUrsxp559Du6__qGwWEW7AAI5E2sbxNooVqaIeGz_UczIAQADAgADeAADPQQ" alt="3.3.6" /><figcaption>3.3.6</figcaption></figure><p></p><p>本题错选为 C。属于背答案背错了。没再次分析导致的，这道题高位是 A0，低位是 A15，注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADi2rEkytI29i6P83BfOswIDgZeBR1AAI6E2sbxNooVn9lHvABT2nQAQADAgADeAADPQQ" alt="3.6.5" /><figcaption>3.6.5</figcaption></figure><p></p><p>本题错选为 C。地址映射应该是操作系统干的，而装入程序干的事把东西装进内存。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADjGrEk1qhXNBgkn0kOh09jCvzhgj0AAI8E2sbxNooVhHj8V1cb8qiAQADAgADeAADPQQ" alt="3.6.11" /><figcaption>3.6.11</figcaption></figure><p></p><p>本题错选为 A。属于低级错误，快表即 TLB 应该在 CPU 里，我也不知道为啥我会把 D 叉了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADjWrEk51CgiQlqatNdapARJYWvd07AAI_E2sbxNooVgVuoR8eA4pKAQADAgADeAADPQQ" alt="3.6.17" /><figcaption>3.6.17</figcaption></figure><p></p><p>本题错选为 D。主要是很阴，这道题的虚页号没有 H，注意。</p></section><section><h3>计组王道选择题 3 刷第 4 章<a href="#计组王道选择题-3-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADjmrEk8iZuZc1rsn9ApffGRsNcZbmAAJAE2sbxNooVoLGosGxiRFdAQADAgADeAADPQQ" alt="4.1.2" /><figcaption>4.1.2</figcaption></figure><p></p><p>本题错选为 D，属于背书问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADj2rElAM1dV9qWsAtNbO4bBnRRrQLAAJBE2sbxNooVsUGWdLJBy2AAQADAgADeAADPQQ" alt="4.2.7" /><figcaption>4.2.7</figcaption></figure><p></p><p>本题错选为 D，属于低级错误。对记号的理解脑子抽了。</p><p>变址寻址的寄存器编号 X，取出其数是 (X)，然后加上地址码之后是操作数地址的地址，所以再加一个括号。</p><p>如果是变址寻址本身的地址，就不需要加最外面的括号了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADkGrElRYgvf9sxF9BwUME9Q6jnN8KAAJDE2sbxNooVm31VGVLHHAxAQADAgADeAADPQQ" alt="4.2.12" /><figcaption>4.2.12</figcaption></figure><p></p><p>本题错选为 D。其实这道题也很阴，是按字编址，而不是按字节编址，所以这道题就是 +1，而不是 +2，所以也就是到 4000H+1H+6H=4007H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADkWrElWTId1IlUQjoCgb6IbrEz_12AAJFE2sbxNooVhpKLahXbakkAQADAgADeAADPQQ" alt="4.2.28" /><figcaption>4.2.28</figcaption></figure><p></p><p>本题错选为 B，和第 7 题一样的脑抽问题，不多说了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADkmrElZ0VjfC6idK4jpwCZ4JTfTePAAJGE2sbxNooVoc_D9wlkUWPAQADAgADeAADPQQ" alt="4.3.5" /><figcaption>4.3.5</figcaption></figure><p></p><p>本题错选为 D，属于低级错误。最后应该存到 eax 里。</p></section><section><h3>计组王道选择题 3 刷第 5 章<a href="#计组王道选择题-3-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADk2rEleFXQInagrPTyu29gZhc40dWAAJIE2sbxNooVqi0hPaq3r58AQADAgADeAADPQQ" alt="5.1.6" /><figcaption>5.1.6</figcaption></figure><p></p><p>本题错选为 A。本题理解错题目意思，想成不透明了，看到 A 就直接选了 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADlGrEmfL9eO3NL1LGDtM5KF_B-v6MAAJfE2sbxNooVkFd55svB4l5AQADAgADeAADPQQ" alt="5.1.9" /><figcaption>5.1.9</figcaption></figure><p></p><p>本题错选为 D。对于 C，需要考虑条件转移，条件转移不一定改为目标地址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADlWrEmoVU53oF1a55Vz5cB7p_78_xAAJhE2sbxNooVj4vAymhW4PdAQADAgADeAADPQQ" alt="5.1.14" /><figcaption>5.1.14</figcaption></figure><p></p><p>本题错选为 D。属于低级错误，通用寄存器是可以有很多功能，但是肯定是不可以代替 IR 的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADlmrEm68BxMmRqAEK_TyyyV6eK2pnAAJlE2sbxNooVsocdR3UDjG3AQADAgADeAADPQQ" alt="5.1.24" /><figcaption>5.1.24</figcaption></figure><p></p><p>本题错选为 C。可以考虑超长指令字的情况。</p><p>辨析一下位数与各种码之间的关系：</p><ul>
<li>与机器字长相同：ALU，通用寄存器</li>
<li>PC=总容量/IR=MAR</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADl2rEm9-9hzv9h9kwhHGumZmALt6kAAJmE2sbxNooViNd1rjARAAB6QEAAwIAA3gAAz0E" alt="5.3.12" /><figcaption>5.3.12</figcaption></figure><p></p><p>第 12 题错选为 D。注意这里是单总线结构，想成单周期了。由于只有单个总线，所以显然数据冲突会很严重，但是逻辑控制并不复杂。</p><p>对于单周期的数据结构，控制逻辑就很复杂了。</p><p>第 13 题错选为 B。背书题，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADmGrEnFkIfrLP1IBfyZkwEIoxMGN4AAJnE2sbxNooVnF6ML3Uq33FAQADAgADeAADPQQ" alt="5.4.3" /><figcaption>5.4.3</figcaption></figure><p></p><p>本题错选为 B。注意题目描述，形成微程序<strong>入口</strong>地址的是什么。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADmWrEnKflM2O7Cs0Ua6svjAnv8Hv_AAJrE2sbxNooVmKyoMk-uF2XAQADAgADeAADPQQ" alt="5.4.19" /><figcaption>5.4.19</figcaption></figure><p></p><p>本题错选为 D。注意指令和微指令的区别。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADmmrEnPNdyMCzgbTzNCXaeehCJsuNAAJsE2sbxNooVnmYaGi_fzzaAQADAgADeAADPQQ" alt="5.5.3" /><figcaption>5.5.3</figcaption></figure><p></p><p>本题错选为 A，属于背书题。访问主存的校验错误是终止，因为访问主存都错了，那后续就不可能继续运行下去了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADm2rEnTeeNb-VLVQ_gMGiNQThh2s-AAJtE2sbxNooVqL_m4xOwkIvAQADAgADeAADPQQ" alt="5.5.8" /><figcaption>5.5.8</figcaption></figure><p></p><p>本题错选为 A，属于低级错误。显然在中断响应的时候应该通过硬件实现。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADnGrEnYc1cd-dNVS3AQVp5JvtF8nLAAJyE2sbxNooVrhQJoD17q2BAQADAgADeAADPQQ" alt="5.5.10" /><figcaption>5.5.10</figcaption></figure><p></p><p>本题错选为 B，属于低级错误。显然对于 D 而言，故障是返回到当前指令，陷阱是到下一条指令，终止是不回到原来的指令。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADnWrEnczAFp-ZPxqGjEvsSbMCvn4aAAJ2E2sbxNooVvqAxUguV1aEAQADAgADeAADPQQ" alt="5.6.13" /><figcaption>5.6.13</figcaption></figure><p></p><p>第 13 题错选为 A。因为没看见采用转发技术。</p><p>第 14 题错选为 B。即使是无条件转移指令，处理机也是笨笨的先执行原本的东西，其实就是流水线自动的 +1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADnmrEnrM_Y3_2GYOEo0XrM5zIDFi9AAJ6E2sbxNooVlTVLsWpWbCQAQADAgADeAADPQQ" alt="5.6.25" /><figcaption>5.6.25</figcaption></figure><p></p><p>本题错选为 D。流水功能段的意思是那一段，那一段并不会被缩短，超标量的方式是多个流水功能段时间并行上执行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADn2rEnxamDiVsq-jBdqg7OCcVhHZUAAJ7E2sbxNooVkAAAWtFhZIRdgEAAwIAA3gAAz0E" alt="5.6.30" /><figcaption>5.6.30</figcaption></figure><p></p><p>本题错选为 A。因为 I2 访问 R2，所以 I3 要被阻塞。是要谁被阻塞，而不是看谁导致谁阻塞。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADoGrEn3tk_ebhazCcSRd5KoWFB3V0AAJ-E2sbxNooVrjLG5byT03FAQADAgADeAADPQQ" alt="5.6.32" /><figcaption>5.6.32</figcaption></figure><p></p><p>本题错选为 C。单周期 CPU 指的是单指令执行 CPU，所以要求所有指令的执行时间都小于等于那个时间执行最长的指令（因为每个时间段的长度得保持一致。</p><p>而对于 B，不只是要从前面考虑后面，也要从<strong>后面考虑前面</strong>。显然 cache 缺失率越大，导致 CPI 越大。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADoWrEoIVxHqkNxx3ilFoFTCtE4fC_AAKBE2sbxNooVt7HAAHBKLbvewEAAwIAA3gAAz0E" alt="5.7.8" /><figcaption>5.7.8</figcaption></figure><p></p><p>本题错选为 D。双核 CPU 是空间并行的计算。</p><p>此外，执行核心=运算核心。</p><p>总结一下这一整章比较冷的只是：</p><ul>
<li>SIMD 的应用有向量处理机</li>
<li>MIMD 的应用有多计算机系统，多处理器系统</li>
<li>硬件多线程技术
<ul>
<li>细颗粒度：每个时钟周期换一个线程（非真并行，非真硬件技术）</li>
<li>粗颗粒度：高延迟的时候换一个线程（非真并行，非真硬件技术）</li>
<li>SMP 同时多线程：指令级/线程级并行</li>
</ul>
</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADomrEoWVtwNF2n2RL2rB1YU1INfKFAAKCE2sbxNooVuRZ0RtXR-DpAQADAgADeQADPQQ" alt="多核处理器草图" /><figcaption>多核处理器草图</figcaption></figure><p></p></section><section><h3>计组王道选择题 3 刷第 6 章<a href="#计组王道选择题-3-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADo2rEoZWgLKrQc5WZqJIVJmN-n3G3AAKEE2sbxNooVj5f7qHDEoKlAQADAgADeAADPQQ" alt="6.1.16" /><figcaption>6.1.16</figcaption></figure><p></p><p>本题错选为 C。这里的总线时钟频率就是时钟周期的倒数，所以由于一个总线周期传输 4B 的信息，一个总线周期占用 2 个时钟周期，所以一个时钟周期可以传输 2B 的信息，所以最后就是 2B×10M=20MB/s。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADpGrEof3QQMKonJ7Jwi2eR5twm2FhAAKGE2sbxNooVib6Oqg2fLLmAQADAgADeAADPQQ" alt="6.1.24" /><figcaption>6.1.24</figcaption></figure><p></p><p>本题错选为 A。这道题算的是理论最大的传输速率，不用考虑题目后续给的干扰条件。也就是说要跑满。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADpWrEoiy4f5FWYGn2mr-DoqKoAAG--AAChxNrG8TaKFb_2TGD8qBJ5wEAAwIAA3gAAz0E" alt="6.2.2" /><figcaption>6.2.2</figcaption></figure><p></p><p>本题错选为 B。可以采用同步方式，但是发挥不出来性能。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADpmrEok36cLkbeBBCYjJYPj8mxULHAAKIE2sbxNooVkd7htglUniBAQADAgADeAADPQQ" alt="6.2.6" /><figcaption>6.2.6</figcaption></figure><p></p><p>本题错选为 A。按需分配的意思是说通过握手信号争夺总线使用，而不应该从 CPU 角度考虑出发。对于 A，类似 DMA 操控。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADp2rEopcn2_eL9speUbK--qPQFDlEAAKJE2sbxNooVtL91uTEMdySAQADAgADeAADPQQ" alt="6.2.9" /><figcaption>6.2.9</figcaption></figure><p></p><p>本题错选为 C。显然和 CPI 总线之间交流也不需要预约什么的。而打印机很慢。</p></section><section><h3>计组王道选择题 3 刷第 7 章<a href="#计组王道选择题-3-刷第-7-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADqGrEot1TXQGZVEUQyX2BJ2zlUT-NAAKME2sbxNooVm9HeonfCkStAQADAgADeAADPQQ" alt="7.2.4" /><figcaption>7.2.4</figcaption></figure><p></p><p>本题错选为 A，属于低级错误。这道题属于背书题，IO 接口中的寄存器应该是控制寄存器，状态寄存器和数据缓冲寄存器（通用的）。对于地址寄存器是 DMA 独有的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADqWrEozekCXzhKD63aAmda_mtQ6S3AAKNE2sbxNooVn_-IEDxttceAQADAgADeAADPQQ" alt="7.2.6" /><figcaption>7.2.6</figcaption></figure><p></p><p>本题错选为 B。属于背书题，对于 B，IO 指令是机器指令的一类，例如 IN/OUT；而对于 D，得分为统一和独立编址讨论。</p><p>本题错选为 C，做这种题的时候需要画图，状态信息应该是 CPU -&gt; 打印控制接口 -&gt; 打印机，所以中断请求信号应该是 CPU 到打印控制接口的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADq2rEo8nCn2mwDaLZ1cOs2qmGOPWEAAKQE2sbxNooVh848LIr9oQaAQADAgADeAADPQQ" alt="7.3.15" /><figcaption>7.3.15</figcaption></figure><p></p><p>本题错选为 A。中断被分为中断响应周期和中断处理周期，对于前者是通过中断隐指令将允许中断触发器置零，对于后者才是通过关终端指令的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADrGrEpBHThEEHm1hIvV6-9TtqyiK8AAKRE2sbxNooVq8DwM8c3RIbAQADAgADeAADPQQ" alt="7.3.17" /><figcaption>7.3.17</figcaption></figure><p></p><p>本题错选为 B。这个属于重难点也是易错点：</p><p>对于 A，中断请求优先级由设备决定。</p><p>对于 B，CPU 对多个中断请求响应是由硬件决定的，也就是中断优先级。</p><p>对于 C，最开始执行的一定是根据中断优先级。</p><p>对于 D，考虑硬件 1&gt;2&gt;3，而中断屏蔽字为 2&gt;1&gt;3，三个同时来，先执行 1，1 在执行中断处理程序的时候会开中断，此时 2 可以打断 1…</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADrWrEpZth1OGpt2c79GRALRws7lscAAKUE2sbxNooVnV0ix8KwawtAQADAgADeAADPQQ" alt="7.3.22" /><figcaption>7.3.22</figcaption></figure><p></p><p>本题错选为 A。后处理的目的是通知 CPU 是否 OK，由操作系统决定是否传送下一块/改变进程状态/原来是否校验正确。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADrmrEpeCcObB4W1UhkDSFtBaiuvYOAAKVE2sbxNooVllGnsH1bZJvAQADAgADeAADPQQ" alt="7.3.24" /><figcaption>7.3.24</figcaption></figure><p></p><p>本题错选为 A，注意这里的表述是流水段。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADr2rEpgORiNcQtiQ2v64YQ1O24EMBAAKXE2sbxNooVkDgOe7Q0ZSRAQADAgADeAADPQQ" alt="7.3.47" /><figcaption>7.3.47</figcaption></figure><p></p><p>本题错选为 A。DMA 控制分成三种方式，停止 CPU 访问，周期挪用和交替访问。本题采用周期挪用的方式，所以 A 是对的，C 是错的，如果采用停止 CPU 访问的方式的话，那么 A 是错的，C 是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADsGrEplE7uOslj3RySs7BEzeNgZ1QAAKZE2sbxNooVlB-rlmFx9mKAQADAgADeAADPQQ" alt="7.3.50" /><figcaption>7.3.50</figcaption></figure><p></p><p>本题错选为 C。时序理解问题。对于中断而言，CPU 在一条指令结束的时候才去检测中断，然后检测到这个中断了当处于开中断的时候就去执行，而不是 CPU 在指令执行过程中就在那里检测终端。对于 D，CPU 发给终端控制器信号。</p></section><section><h3>计组王道选择题 3 刷 - 总结<a href="#计组王道选择题-3-刷---总结"><span>#</span></a></h3><p>总的来讲，细节问题还是很多，理解问题比操作系统那块要大不少。</p></section></section>
<section><h2>OS 王道选择题 3 刷<a href="#os-王道选择题-3-刷"><span>#</span></a></h2><section><h3>OS 王道选择题 3 刷第 1 章<a href="#os-王道选择题-3-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADMWrDa1vde90eW_N0IfEow2b25Uf7AAIpEmsbgF8gVv6TUDJ2B8ClAQADAgADeAADPQQ" alt="1.2.20" /><figcaption>1.2.20</figcaption></figure><p></p><p>本题错选为 B，应该从极端情况思考，显然进程数如果特别多的话，可能会引发死锁等问题，而对于 B 而言，在早期的多道程序处理系统有应用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADMmrDbU4f7on8BywXrdXsnz5RM-NrAAIsEmsbgF8gVvtRIdpCWcULAQADAgADeAADPQQ" alt="1.3.3" /><figcaption>1.3.3</figcaption></figure><p></p><p>错选为 A。4 是想多了，想成特殊情况例如原本进程出错需要操作系统持续接管。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADM2rDbfgxbCX0MAR7AlVOXQVFvOfoAAIxEmsbgF8gVqxyJWzcHXUxAQADAgADeAADPQQ" alt="1.3.12" /><figcaption>1.3.12</figcaption></figure><p></p><p>错选为 C，属于低级错误。trap 指令是异常的第二类，即自陷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADNGrDbk89K6QpWaG6LeJY1yqHTtHgAAIyEmsbgF8gVtq1iy7_6IWpAQADAgADeAADPQQ" alt="1.3.14" /><figcaption>1.3.14</figcaption></figure><p></p><p>本题错选为 C。这道题主要是围绕概念的理解。</p><p>发生系统调用 = 系统调用的调用过程，运行在用户态。</p><p>执行系统调用 = 系统调用的被调用过程，运行在内核态。</p><p>所以，B 等价于执行系统调用，C 等价于执行一般调用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADNWrDbs4hyh0Su9nYhe7QQ01UMnDhAAI0EmsbgF8gVtrgg44REwAB7QEAAwIAA3gAAz0E" alt="1.6.15" /><figcaption>1.6.15</figcaption></figure><p></p><p>本题错选为 B，这道题属于背书题，即下面这张图：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADNmrDbxbT-3T683LcbAlhPYP-hQwdAAI2EmsbgF8gVkqAxjheExxSAQADAgADeAADPQQ" alt="27 王道 p29" /><figcaption>27 王道 p29</figcaption></figure><p></p><p>这张图属于薄弱点，需要着重注意。</p></section><section><h3>OS 王道选择题 3 刷第 2 章<a href="#os-王道选择题-3-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADN2rDb2remTrpgHdbzXm0o-tIVyWFAAI4EmsbgF8gVs31eTCYoR8fAQADAgADeAADPQQ" alt="2.1.5" /><figcaption>2.1.5</figcaption></figure><p></p><p>本题错选为 A。生命周期连续的含义指的是执行态阶段，显然在非执行态阶段，其生命周期并不连续。对于 D，总的来讲不具备可再现性。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADOGrDb7rqu9s-Ht8XWu5tWwwjMiIVAAI5EmsbgF8gVrYweg68KZd3AQADAgADeAADPQQ" alt="2.1.14" /><figcaption>2.1.14</figcaption></figure><p></p><p>这道题需要着重理解，错选为 A。只有 CPU 才能改变运行状态。</p><p>举一个极端的例子，假设我某个程序不需要使用打印机，但是我故意写一个程序申请一台打印机（即使我全程都用不到），恰好我在申请的时候是有资源的，所以我不需要进入阻塞态，但是其他人一定要打印机的就不一定了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADOWrDcDQvBoOzks8juC3AVGCV-hqAAAI6EmsbgF8gVo1IHYxSh7z-AQADAgADeAADPQQ" alt="2.1.49" /><figcaption>2.1.49</figcaption></figure><p></p><p>辨析内核级线程以及用户级线程，对于用户级线程已经比较明晰了，但是对于内核级扔需要再在意。本题错选为 B，是把这道题看成了用户级线程。对于 A，由于是内核级线程，所以也是得内核切换，开销大；对于 B，在用户级线程的时候，被阻塞了那其他所有同一个进程内的线程都得被阻塞，但是内核级并非。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADOmrDcNsSp0HoSHHO8QABj-g5mU5HfAACPBJrG4BfIFYPvbCjb27-HgEAAwIAA3gAAz0E" alt="2.2.9" /><figcaption>2.2.9</figcaption></figure><p></p><p>本题错选为 A。知识迁移不够到位，对于 3 是内存管理的只是，对于 4 是文件系统的知识。很显然后两者都是按照进程划分的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADO2rDcTTeG9dud3m8yuvkHZYshvuFAAI9EmsbgF8gVuIoAZnz71SuAQADAgADeAADPQQ" alt="2.2.44" /><figcaption>2.2.44</figcaption></figure><p></p><p>想当然认为这道题的输入、输出设备共 1 台，错选为 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADPGrDcWnvUf2mq_r_S0okk8EWw6ZPAAI-EmsbgF8gVuJYNQHnxrQmAQADAgADeAADPQQ" alt="2.2.56" /><figcaption>2.2.56</figcaption></figure><p></p><p>本题错选为 B，属于低级错误。忽略了优先级从高到低这个条件，所以选错了。由于是从高到低，所以插入的时候是 O(n)，拿的时候是 O(1)。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADPWrDcbq5xrQgfLYzwN45b2uN6fgCAAI_EmsbgF8gVh1RlUwZ1D2IAQADAgADeAADPQQ" alt="2.3.8" /><figcaption>2.3.8</figcaption></figure><p></p><p>第 8 题错选为 C，第 9 题错选为 A。</p><p>这两题放一起讲，对于第 8 题，看错题目了，这道题是不属于临界资源，显然 B 不属于临界资源。</p><p>简单来说这道题看到临界资源和 C 就直接选了，而没有再考虑更多。</p><p>第 9 题没看 B 就直接选了 A，对于磁盘，是操作系统协调的，可以类比 SSD，SSD 肯定不是临界资源。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADPmrDcjQOo93fJ89ZkjQdsEjCksl2AAJBEmsbgF8gVvVsQuhqfPH7AQADAgADeAADPQQ" alt="2.3.11" /><figcaption>2.3.11</figcaption></figure><p></p><p>本题错选为 B。属于没读完题目直接选 B 的低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADP2rDcmWLuQ1x7Vb-9IomhVOQUDCqAAJCEmsbgF8gVmMMMri2nIIAAQEAAwIAA3gAAz0E" alt="2.4.3" /><figcaption>2.4.3</figcaption></figure><p></p><p>本题错选为 A。对于 C，想成破坏循环条件了。只是区分优先级并不是区分申请顺序。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADQGrDcs9BeGYfvp1c-dKP5Bn81nztAAJDEmsbgF8gVoPhlG7mBpOLAQADAgADeAADPQQ" alt="2.4.21" /><figcaption>2.4.21</figcaption></figure><p></p><p>本题错选为 A，单纯是因为想当然没有画图。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADQWrDc3xWTxECODo9_qPZYR6Lu-mLAAJEEmsbgF8gVmiuqY-jLkrVAQADAgADeAADPQQ" alt="2.4.28" /><figcaption>2.4.28</figcaption></figure><p></p><p>纯懒得算。n×(k-1)+1≤m，然后把 nk 解出来就好了。</p></section><section><h3>OS 王道选择题 3 刷第 3 章<a href="#os-王道选择题-3-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADQmrDdAQbHLUblPgc_eXnqK0h_-M9AAJFEmsbgF8gVvX6YMrUJeIZAQADAgADeAADPQQ" alt="3.1.11" /><figcaption>3.1.11</figcaption></figure><p></p><p>本题错选为 D。对于 D，应该从 2 方面理解：</p><p>但是假设目标程序总共要 0-300 号，把 0-100 号装入第一部分内存，把 200-300 装入第 2 部分内存，这不就需要了吗？</p><p>反驳这个从两方面入手，对于传统的动态重定位，也就是整个 CPU 只有一个动态重定位寄存器，比如得连续放；即便采用分页，分段，也是按照分页规定的大小分配，根本不需要知道目标程序是什么。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADQ2rDdQ3goaV1AsgRacdtHgEVxWgGAAJJEmsbgF8gVqD5PIAleB1lAQADAgADeAADPQQ" alt="3.1.23" /><figcaption>3.1.23</figcaption></figure><p></p><p>本题错选为 B。最佳使用算法是每次选择都要重新排序，根据顺序索引走的，而不是随机索引。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADRGrDdZrjKlXTNpvsH3R-qBLqPDxUAAJNEmsbgF8gVuriv8-zziOoAQADAgADeAADPQQ" alt="3.1.26" /><figcaption>3.1.26</figcaption></figure><p></p><p>本题错选为 B。对于 B 是共享页表干的，本题应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADRWrDdd0V8jNv3IwMKQ6ocE2uVmO-AAJOEmsbgF8gVkc0DWBG-EHbAQADAgADeAADPQQ" alt="3.1.38" /><figcaption>3.1.38</figcaption></figure><p></p><p>本题错选为 A，很经典的做对选错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADRmrDdgpN78pALc4YLsIg-o5_27fIAAJPEmsbgF8gVucSSG7Eh7SrAQADAgADeAADPQQ" alt="3.1.42" /><figcaption>3.1.42</figcaption></figure><p></p><p>本题错选为 B。单用户连续分配指的是只有 1 个用户，所以不适合多道程序设计。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADR2rDdp0M2GYnrLc5BO1SZOCmTuYnAAJQEmsbgF8gVnp1ec1T5TSOAQADAgADeAADPQQ" alt="3.1.46" /><figcaption>3.1.46</figcaption></figure><p></p><p>本题错选为 C，页内无需指定。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADSGrDdsb52EkhgLKwssTc5takrue9AAJREmsbgF8gVlzsyymfvscZAQADAgADeAADPQQ" alt="3.1.60" /><figcaption>3.1.60</figcaption></figure><p></p><p>本题错选为 D，这道题的意思是 1 段最长，而不是总共。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADSWrDeE2nYJ49_VqkFpG2wPh7pRaOAAJUEmsbgF8gVvkk_V_3tf9bAQADAgADeAADPQQ" alt="3.2.24" /><figcaption>3.2.24</figcaption></figure><p></p><p>页故障的意思等同于有效位为 0。本题错选为 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADSmrDePEa6v3Ei4e1RBIq6FR7Tx1rAAJWEmsbgF8gVshLJ2DVr8YEAQADAgADeAADPQQ" alt="3.2.27" /><figcaption>3.2.27</figcaption></figure><p></p><p>本题错选为 C。便于动态链接是段表的特点，请求分页间接扩充内存（因为可以切）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADS2rDeQkLt-xb-iR0NSEDunayrPA-AAJYEmsbgF8gVhDj5Zn6t3aXAQADAgADeAADPQQ" alt="3.2.31" /><figcaption>3.2.31</figcaption></figure><p></p><p>本题错选为 B。实际上将模型绘制出来，CPU 和内存的交换速度不会影响内存和磁盘的交换。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADTGrDeTiJFcFtcqS6uJyRZ3BJ15AbAAJZEmsbgF8gVhHIgbzMN49_AQADAgADeAADPQQ" alt="3.2.57" /><figcaption>3.2.57</figcaption></figure><p></p><p>错选为 C。把换出进程挂在页面缓冲的末尾，即便可以很快的恢复，但也是缺页。</p></section><section><h3>OS 王道选择题 3 刷第 4 章<a href="#os-王道选择题-3-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADTWrDeZUXautU6tzuWHWru-1UKrtGAAJaEmsbgF8gVqq42uuTOFJBAQADAgADeAADPQQ" alt="4.2.5" /><figcaption>4.2.5</figcaption></figure><p></p><p>错选为 C。异步 IO 解放的是 CPU 的生产力。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADTmrDemOJznrGRsYvf5e1mGmoA3JWAAJdEmsbgF8gVhD_klA1dZfzAQADAgADeAADPQQ" alt="4.2.37" /><figcaption>4.2.37</figcaption></figure><p></p><p>错选为 C。打开文件意思是 open，这道题的 C 只说了一半。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADT2rDes9zSJPUZ4HncWRoiGzTCFyOAAJeEmsbgF8gVpGwGciLPnHbAQADAgADeAADPQQ" alt="4.3.4" /><figcaption>4.3.4</figcaption></figure><p></p><p>错选为 A，本题属于背书题。超级块是用来描述文件系统的全局配置与控制信息。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADUGrDftv7By4JDp8gpQI-hLXu64x_AAJmEmsbgF8gVp2tHFmVzE89AQADAgADeAADPQQ" alt="4.3.15" /><figcaption>4.3.15</figcaption></figure><p></p><p>错选为 C，属于低级错误，不解释了。</p></section><section><h3>OS 王道选择题 3 刷第 5 章<a href="#os-王道选择题-3-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADUWrDf7eKqT0o_7vpOgZQpPFGjL63AAJpEmsbgF8gVk4hCGxbE09cAQADAgADeAADPQQ" alt="5.1.2" /><figcaption>5.1.2</figcaption></figure><p></p><p>本题错选为 A。A 肯定是错的，物理设备是多少就是多少个，对于 C，用户感觉在使用多个逻辑设备。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADUmrDgAnVmfc4Yra1V38TM9eZ9fIcAAJtEmsbgF8gVs6HXl_eMgMmAQADAgADeAADPQQ" alt="5.1.13" /><figcaption>5.1.13</figcaption></figure><p></p><p>第 13 题错选为 B。操作系统决定的，所以应该是绝对号。</p><p>第 14 题错选为 A。想当然错了其实，这道题是背书题。选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADU2rDg6sr6N6bWaALBkBt4nLkFILPAAJzEmsbgF8gVhh720Y9qhV8AQADAgADeAADPQQ" alt="5.2.3" /><figcaption>5.2.3</figcaption></figure><p></p><p>第 3 题错选为 D。背答案导致的错误，其实没什么好说的。</p><p>第 4 题错选为 B。缓冲技术的缓冲池是在内存，而缓冲井是在外存。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADVGrDhAsB2S6V1v_6y5rh2wP5B3uSAAJ1EmsbgF8gVlr6Q6grjTlhAQADAgADeAADPQQ" alt="5.2.23" /><figcaption>5.2.23</figcaption></figure><p></p><p>本题错选为 B，这道题是背书题，SPOOLing 技术应该是输入/输出井，输入/输出缓冲区，输入/输出进程。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADVWrDhGW7md_fUmrvWhhocZ5uvQ8-AAJ3EmsbgF8gVg0baLDhV9VOAQADAgADeAADPQQ" alt="5.2.30" /><figcaption>5.2.30</figcaption></figure><p></p><p>本题错选为 D。对于打印机启动程序，它是初始化打印机的。显然这道题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADVmrDhKm96DmkZmyZmgh-ROjjFBscAAJ4EmsbgF8gVpgxyP__2ugUAQADAgADeAADPQQ" alt="5.3.8" /><figcaption>5.3.8</figcaption></figure><p></p><p>错选为 A。注意这里是引导，而不是分区。</p></section><section><h3>OS 王道选择题 3 刷 - 总结<a href="#os-王道选择题-3-刷---总结"><span>#</span></a></h3><p>回顾了一下，其实感觉低级错误还是偏多，真的自己理解上的问题并不是很多。</p></section></section>
<section><h2>计网王道选择题 3 刷（选做）<a href="#计网王道选择题-3-刷选做"><span>#</span></a></h2><section><h3>计网王道选择题 3 刷第 1 章<a href="#计网王道选择题-3-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADEmrDVPPctcysIX-4qFgz4gyx6MQ6AALiEWsbgF8gVuLPae4swWo4AQADAgADeAADPQQ" alt="1.1.6" /><figcaption>1.1.6</figcaption></figure><p></p><p>本题第 1 空错选为 C，最快的应该是电路交换，尽管电路交换需要时间建立连接，但是其独占了物理链路，所以时延最小。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADE2rDVw5KryW_u4DuCPSkQg-RlvMXAALlEWsbgF8gViDR_lhwNv0sAQADAgADeAADPQQ" alt="1.2.10" /><figcaption>1.2.10</figcaption></figure><p></p><p>本题错选为 B。语义的意思是说每一个位置代表着什么，例如 ACK 含义是应答等。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADFGrDV0iohVpOCnXGSvkTb0EEocw_AALmEWsbgF8gVglQ5fxi3J_zAQADAgADeAADPQQ" alt="1.2.18" /><figcaption>1.2.18</figcaption></figure><p></p><p>本题错选为 D，属于低级错误。这里是 OSI 参考模型，OSI 参考模型的网络层可以提供无连接服务和面向连接的服务，而不是传输层。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADFWrDV6CCV2z5-kjuxaItdtbp8Kr0AALnEWsbgF8gVoGtuhoyPgMLAQADAgADeAADPQQ" alt="1.2.28" /><figcaption>1.2.28</figcaption></figure><p></p><p>会话层的作用是同步，可以理解为打断点；表示层的作用是数据格式加密，数据格式转换等。</p><p>这道题的第 3 空错选为会话层，回到本行开始的位置这件事完全就不是“网络”需要参与的，所以应该是应用层做的。</p><p>这么理解就会清晰很多。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADFmrDWKnR3p4ynRcguYIYeF0jxjDJAALpEWsbgF8gVlQjJSSmm9ZtAQADAgADeAADPQQ" alt="1.2.30" /><figcaption>1.2.30</figcaption></figure><p></p><p>本题属于低级错误，没看完题目就选了。网络体系结构不需要完成的是实现细节。</p></section><section><h3>计网王道选择题 3 刷第 2 章<a href="#计网王道选择题-3-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADF2rDWOfwpnC57S4UqllWv-eu_SqRAALrEWsbgF8gVkFe0icr7OD_AQADAgADeAADPQQ" alt="2.1.1" /><figcaption>2.1.1</figcaption></figure><p></p><p>本题属于低级错误，这道题没有细想 D 的意思，直接选了 C，C 属于背书错误，信号传输率指的是比特，而不是波特。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADGGrDWSKU8L3qnWCdm3ogsdqRyaK4AALsEWsbgF8gVl8zMboFTD1JAQADAgADeAADPQQ" alt="2.1.13" /><figcaption>2.1.13</figcaption></figure><p></p><p>这两道题一起讲，上面那题是侥幸做对的。</p><p>在没有明确说一码元等于多少比特的时候，不需要考虑奈奎斯特定理，而第 12 题其实有暗示是 2 进制，所以说了，除了香农定理之外也要考虑奈奎斯特定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADGWrDWXDHnsfm-b42OLUYfRzdxLSKAALtEWsbgF8gVjFfER4Wx8qhAQADAgADeAADPQQ" alt="2.1.21" /><figcaption>2.1.21</figcaption></figure><p></p><p>本题属于“背答案”，没有细想，在那里直接背答案，所以错了。</p><p>简单来讲，信号传播速度指的是信号传输率，也就是 RTT 相关，本题考虑的是发送时延。</p></section><section><h3>计网王道选择题 3 刷第 3 章<a href="#计网王道选择题-3-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADGmrDWcy1XafZX5JmdU7jxImF2OymAALvEWsbgF8gVitS53D8TVsIAQADAgADeAADPQQ" alt="3.6.6" /><figcaption>3.6.6</figcaption></figure><p></p><p>本题属于低级错误，把错误看成选择正确的一项，然后选了 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADG2rDWf81wzZMLMutfcQkGqV0xyhNAALwEWsbgF8gVj2ELTtxU8oLAQADAgADeAADPQQ" alt="3.6.8" /><figcaption>3.6.8</figcaption></figure><p></p><p>这道题知道 802.1q 帧需要多一个 4B 的 VLAN 位，但是把最短帧长多少，和最长帧长需求是多少搞混淆了。</p><p>对于 10Mbps 的以太网，硬性要求是最少 64B，不需要考虑其他东西，而最长数据帧是 1500B 恒定，对于 802.1 帧最长是 1518B（662n4），对于 802.1q 帧则是要多一个 4B，也就是 1522B，但是最短都是 64B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADHGrDWnhtUVS1UosMeTr6SfSjXkW4AALxEWsbgF8gVhG8I9AYlAXHAQADAgADeAADPQQ" alt="3.6.24" /><figcaption>3.6.24</figcaption></figure><p></p><p>理解向后兼容，这道题就很容易选出来 A 是对的了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADHWrDWqKtz5-TBKm2bSMmG0GRtcb3AALyEWsbgF8gVuiCW214hdaJAQADAgADeAADPQQ" alt="3.6.28" /><figcaption>3.6.28</figcaption></figure><p></p><p>有点忘了 CSMA/CA 协议以及其帧，回顾一下。</p><p>CSMA/CA 协议是先等待 DIFS 的帧间间隔，然后再进行一系列操作，所以 A 肯定是错的，这道题经典没看完所有选项就选了。</p><p>然后对于后面一题，很显然是忘记了。</p><p>SIFS 是短帧间间隔，DIFS 是分隔每个会话的相当于，所以最后的长度应该是 SIFS &lt; PIFS &lt; DIFS，再不济也应该读题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADHmrDWzLaVkX-mF_eJNOkrVkAATMaQgAC9RFrG4BfIFa-mJYNx2mALQEAAwIAA3gAAz0E" alt="3.6.35" /><figcaption>3.6.35</figcaption></figure><p></p><p>这道题是纯粹的脑子抽了，依旧赶进度没仔细看题，能选出来按照用户名划分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADH2rDW232JLafPlfzcaeb9HbYd8JAAAL2EWsbgF8gVjDKgU7PPkIQAQADAgADeAADPQQ" alt="3.7.1" /><figcaption>3.7.1</figcaption></figure><p></p><p>本题错选为 D，主要是没有认真思考导致的。显然广域网采用点对点技术，而局域网一般采用 CSMA/CD 等方式。提供的服务都是转发数据，没什么区别，只不过一个数据量大一个数据量比前者而言相对小而已。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADIGrDXc8LrGm_hvmSjpLCSWRFKJgDAAL8EWsbgF8gVhqp06h3tB1oAQADAgADeAADPQQ" alt="3.7.10" /><figcaption>3.7.10</figcaption></figure><p></p><p>背书题，错选为 B，PPP 协议是先 LCP 然后再 NCP，前者是配置数据链路选项协议，后者是配置网络层协议。</p></section><section><h3>计网王道选择题 3 刷第 4 章<a href="#计网王道选择题-3-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADIWrDXn0N5JQkGE0J7UiWAvslqlAhAAL-EWsbgF8gVuD9iPTr7xtdAQADAgADeAADPQQ" alt="4.2.17" /><figcaption>4.2.17</figcaption></figure><p></p><p>属于低级错误，很显然这道题没看清楚 D 选项，不可能存在 256。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADImrDXx0jWFP3r16AmlPfNbenVFpAAAICEmsbgF8gVj9Csm9OvtCfAQADAgADeAADPQQ" alt="4.2.21" /><figcaption>4.2.21</figcaption></figure><p></p><p>属于低级错误，把 IP 划分为子网显然减少了网络数量（因为需要额外的网络号和广播号）。一个子网内如果没配置 VLAN 的话，是一整个广播域。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADI2rDX3VHDVxCX21VwhBoErAyBdPXAAIDEmsbgF8gVrpcL0Q95bsTAQADAgADeAADPQQ" alt="4.2.24" /><figcaption>4.2.24</figcaption></figure><p></p><p>属于低级错误，CIDR 是路由聚合技术，显然不是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADJGrDX6sYBcMNcrloDD3pcvsWcXHtAAIEEmsbgF8gVr-tHnOGlrNxAQADAgADeAADPQQ" alt="4.2.33" /><figcaption>4.2.33</figcaption></figure><p></p><p>属于低级错误，没看到最前面的 12 和 13。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADJWrDYCNxj7tTPXN_nU6Ho3DGbn_iAAIGEmsbgF8gVnEPpzw7ZhxvAQADAgADeAADPQQ" alt="4.2.43" /><figcaption>4.2.43</figcaption></figure><p></p><p>我其实不知道这道题为什么做错了，子网掩码为 255.255.240.0，显然中间是 1111,0000，因为 240=255-15。对于甲，也就是 211.71.136.23，其第 3 组数是 1000,1000；对于乙，也就是 211.71.130.25，其第 3 组数是 1000,0010。显然这两个第三组数的前 4 位数是一样的，所以在同一个子网内，所以通过 ARP 协议拿到乙的 mac 地址之后然后直接转发。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADJmrDYQ12BJnQuQ8WIWaiR0bG0BkDAAIHEmsbgF8gVu9xJve4GuJqAQADAgADeAADPQQ" alt="4.2.47" /><figcaption>4.2.47</figcaption></figure><p></p><p>这道题错选为 B，混淆了 ICMP 差错报文发送条件。对于 TCP/IP 协议族的网络层，有差错校验的功能（没有差错控制），假设有数据错了，直接丢弃等待计时器归零重传即可。但是对于 TTL，当路由器发现 TTL=1 时，TTL-1 后，发现 TTL=0，所以直接丢弃，这时候是需要发送时间超过报文的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADJ2rDY-bOXYeWTgGZnTXfT5ZiDxIeAAIOEmsbgF8gVgtS-O_Pq_lWAQADAgADeAADPQQ" alt="4.2.48" /><figcaption>4.2.48</figcaption></figure><p></p><p>这道题错选为 B，知道 C 是对的，怎么可能会不选 A，所以很猎奇，也不知道自己那个时候怎么想的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADKGrDZBYWX33k5NLn7XiOOVsNtmWJAAIPEmsbgF8gVtRxAmggO-GjAQADAgADeAADPQQ" alt="4.2.54" /><figcaption>4.2.54</figcaption></figure><p></p><p>属于低级错误，77=64+13 而不是 +11。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADKWrDZDyqATnKYxU--njsi3PV3OLnAAIQEmsbgF8gVpQlQmtr7Z2HAQADAgADeAADPQQ" alt="4.2.68" /><figcaption>4.2.68</figcaption></figure><p></p><p>理解错题目意思了，题目里已经给了 /27，那就直接按照 /27 来算，所以应该选 D 而不是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADKmrDZIX_32LDW92kHzKDyeUTITleAAIREmsbgF8gVhCLyn_625hcAQADAgADeAADPQQ" alt="4.4.15" /><figcaption>4.4.15</figcaption></figure><p></p><p>属于背书题。</p><p>OSPF 协议使用 Hello 报文问候，使用 DD 报文查询数据库，使用 LSU 报文链路状态更新，使用 LSR 报文向邻居请求某些链路的状态信息。</p><p>而 BGP 协议才是通过 OPEN 报文问候，Update 报文更新，keepalive 和 notification 就不多说了。</p></section><section><h3>计网王道选择题 3 刷第 5 章<a href="#计网王道选择题-3-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADK2rDZdUs_GI2WK2AAoubzMW4rDOVAAISEmsbgF8gVq0JEDbtVLUrAQADAgADeAADPQQ" alt="5.3.14" /><figcaption>5.3.14</figcaption></figure><p></p><p>对于第 14 题，再次辨析一下 ——</p><ul>
<li>重传计时器：这个不必多说，指的是一段时间内没收到 ACK 激活</li>
<li>保活计时器：指的是建立 TCP 连接之后，长时间没有任何通信，发送问对方是否要持续</li>
<li>时间等待计时器：指的是客户端在收到服务端发来的最后一次 ack 后，等待 2MSL 时间</li>
<li>持续计时器：指的是窗口为 0 的时候探测</li>
</ul><p>对于第 15 题没看懂题目意思，同时其实对 TCP 的理解依旧不够深刻。</p><p>TCP 的序号字段一个需要就代表 1B，而不是需要考虑首部等东西。</p><p>所以由 2^32B/40Gbps 即可得到答案（因为题目里说充分利用，所以不考虑首部）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADLGrDaBzXMOESqfsCygdGcb3LiIW-AAIgEmsbgF8gVoxgiq1q6zpCAQADAgADeAADPQQ" alt="5.3.21" /><figcaption>5.3.21</figcaption></figure><p></p><p>这道题值得辨析。</p><p>对于 TCP 建立阶段，客户端消耗一个 seq 建立连接，同时服务端也要消耗一个 seq 来回复 ack。对于这道题，也就是 seq=211 的时候，不发送数据，而 seq=212 的时候，才携带第一个数据。</p><p>对于最后阶段，客户端得消耗一个 seq，发送 fin 给服务端，服务端回复一个 ack 后再自己发自己的，最后服务端不发了，给客户端发一条信息，客户端收到这条信息之后，进行第 4 次挥手，注意，由于消耗了一个 seq，所以最后得用倒数第二个的 seq+1 进行发送（尽管不携带信息，理论上不消耗 seq，假设后续还有数据，那么从这个 seq+1 开始）。</p><p>所以，由于最终 seq 是 985，所以第一次挥手是 984，所以有数据的最后一个是 983。</p><p>综上所述，最后答案是 983-212+1=772。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADLWrDaXCG471C9kHJUcO7RR4mbi5pAAIkEmsbgF8gVtrldSBkwFZfAQADAgADeAADPQQ" alt="5.3.32" /><figcaption>5.3.32</figcaption></figure><p></p><p>属于低级错误，错选为 D，不多解释了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADLmrDaZUGsKsc-BxgS0KM1L2ALKsGAAIlEmsbgF8gVgbHYOLYvKrXAQADAgADeAADPQQ" alt="5.3.54" /><figcaption>5.3.54</figcaption></figure><p></p><p>辨析一下这几个时间点是什么。</p><p>对于四次挥手，客户端第一次挥手进入的等待时间叫 fin_wait_1，服务端收到 fin 后直到它发完数据的时间，啥也不是；客户端收到服务端的 ack 之后（也就是第二次挥手），等待的时间叫 fin_wait_2，服务端发完所有数据后，第三次挥手，服务端进入 close_wait 阶段，而客户端收到这个信息，等待最后 2msl 的时间，叫做 time_wait 阶段。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADL2rDajpiX0Qg0CdKRJxX0KR910LzAAImEmsbgF8gVhASpAS2_THmAQADAgADeAADPQQ" alt="5.3.59" /><figcaption>5.3.59</figcaption></figure><p></p><p>这道题也值得研究，涉及到要不要考虑捎带 fin 的问题（本题错选为 C）</p><p>理论上，是需要考虑捎带 fin 的情况，但是这道题第二个发送数据的窗口是 2000B，如果需要捎带确认，那么需要多一个序号，而已经达到了上限 2000B，所以得额外需要一个 RTT 的时间来发送 fin。</p></section><section><h3>计网王道选择题 3 刷第 6 章<a href="#计网王道选择题-3-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADMGrDarb7uyw_9Q_B6WWUYkXThzetAAInEmsbgF8gVqTddxGR3H8oAQADAgADeAADPQQ" alt="6.5.18" /><figcaption>6.5.18</figcaption></figure><p></p><p>属于语文阅读理解，得从 TCP 还没开始的时候算。（错选为 A）</p></section><section><h3>计网王道选择题 3 刷 - 总结<a href="#计网王道选择题-3-刷---总结"><span>#</span></a></h3><p>总的来讲，为了赶进度导致很急（尤其是 3.6 和 4.2 节，都是匆匆做一遍然后也没检查，直接对的答案，做的也很赶）</p><p>对于其他的其实还行，主要问题还是集中在遗忘和概念理解上。</p></section></section>
<section><h2>408 早年真题 2 刷（09-22，逐题分析 + 变式）<a href="#408-早年真题-2-刷09-22逐题分析--变式"><span>#</span></a></h2><p>二刷采用分析 + 一遍过的方式，不允许检查。</p><section><h3>408 2009 真题 2 刷<a href="#408-2009-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为 148</li>
<li>第 40 题错误，FTP 协议数据端口和控制端口分析问题</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARtqxjZVxFykGM7L_ln6lZW6n2E9NQAC5xNrGz_BMFZrl2tlKseJMQEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 B。</p><p>分析 A，对于栈在计算机的应用主要是递归函数，自身的应用可以是求后缀表达式，dfs，先序遍历，中序遍历，后序遍历。</p><p>分析 B，自身的应用例如树和图的层次遍历。在操作系统中，除了缓冲区之外，还可以在公平竞争的调用队列（比如说 RR 调度，比如说读写公平的读者写者问题）</p><p>分析 C，树可以用来表示文件系统，也可以作为关系数据库的索引（例如 B+ 树）</p><p>分析 D，图在操作系统里也可以表示文件系统，应用例如资源分配图，进程前驱图（和拓扑排序相关）</p><p>本题考察的内容在王道书 3.3 小节。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARxqxjhqygqk0_N93LnK0yvsMVlOfAAC6xNrGz_BMFb0X_7s2YJa4wEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 C。</p><p>队列是 FIFO，出队顺序等于出栈顺序，所以：</p><p>a</p><p>a，b</p><p>a，c</p><p>a，c，d</p><p>a，e</p><p>a，e，f</p><p>g</p><p>顺序如上所示，所以最长是 3。</p><p>这类题的变式例如受限队列，也就是两端均可插入但只有一端可以出队，或者只有一端可以入队但是有两端可以出队。主要是要看清楚题目意思，不会难。</p><p>还有的变式就是判断求后缀表达式值的时候，栈的大小，需要注意数在哪，求后缀表达式的时候，默认双操作符的数是：</p><p>后弹出来的 op 先弹出来的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAR1qxjnxgj3G44RVSOmR9HnpQ40RjQAC7hNrGz_BMFYe5vAeBlqzJQEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 D。</p><p>遍历方式主要有 4 种，先序遍历对应根左右，中序遍历对应左根右，后序遍历对应左右根，层次遍历没有对应的。</p><p>但是需要注意一个特殊情况，也就是根右左，注意到根右左是后序遍历左根右的逆序。</p><p>当然对于其他情况，例如右根左等也需要具体题目具体分析。</p><p>本题显然是右根左的情况，所以是 RNL，也就是 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAR5qxjq0DUJw4H4rRg8gZh53U9bdkAAC8RNrGz_BMFZFPV2mt9FqqQEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 B。</p><p>树这块考研大纲主要有以下几类：</p><ul>
<li>二叉树</li>
<li>线索二叉树</li>
<li>森林</li>
<li>二叉排序树</li>
<li>平衡二叉树</li>
<li>红黑树</li>
<li>B 树/B+ 树</li>
<li>k 叉哈夫曼树</li>
</ul><p>对于树的形态辨析，主要是集中在二叉排序树（二叉搜索树），平衡二叉树，红黑树，B 树/B+ 树。</p><p>对于二叉排序树，其只需要满足按照中序遍历为不减序列即可。</p><p>对于平衡二叉树，则需要满足整棵树左子树和右子树高只差的绝对值小于等于 1 即可，可以注意最少结点的平衡二叉树公式，即变式的斐波那契数列。对于高为 h 的 AVL 树，和标准斐波那契数列的关系是 N(h)=F(h+2)-1。标准斐波那契数列是 0,1,1,2,3,5,8,13,21。例如对于高为 5 的平衡二叉树，其最小应该是 13-1 即 12 的高度。</p><p>对于红黑树，则是 12 字咸鱼口诀：左根右，根叶黑，不红红，黑路同。注意红黑树查找略比平衡二叉树慢，红黑树相交易平衡二叉树的优化主要在减少了频繁调整上。</p><p>对于 m 阶 B 树，一个结点最多可以有 m-1 个值，除了根节点之外，最少则是 m/2 向上取整 -1。</p><p>对于 B+ 树，必须得查找到最后一层，且可以按照顺序查找的方式查找。</p><p>此外还需要注意，红黑树，B 树，B+ 树的叶子结点都指的是空节点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAR9qxj0zUb7UFtXxyVzyqdYjIu4hMgAC9RNrGz_BMFYZbFbaHcVkygEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 C。</p><p>什么是完全二叉树，完全二叉树的意思是说以父亲表示法排列，必须从头开始连续到尾巴。</p><p>这类题需要考虑两种情况，第一种是第 6 层是最后一层，第二种是第 7 层是最后一层。求最多一定是第 7 层是最后一层。</p><p>完全二叉树结点的计算公式为：<span><span>2h−12^h-1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>，前 6 层是满的，那么也就是 <span><span>26−1=632^6-1=63</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>63</span></span></span></span>。对于第 7 层，当第七层是满的时候，应该有 <span><span>27−1=642^{7-1}=64</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>7</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>64</span></span></span></span> 个结点，为了让上一层有 8 个叶节点，那么也就是 <span><span>64−8×2=64−16=4864-8\times2=64-16=48</span><span><span><span></span><span>64</span><span></span><span>−</span><span></span></span><span><span></span><span>8</span><span></span><span>×</span><span></span></span><span><span></span><span>2</span><span></span><span>=</span><span></span></span><span><span></span><span>64</span><span></span><span>−</span><span></span></span><span><span></span><span>16</span><span></span><span>=</span><span></span></span><span><span></span><span>48</span></span></span></span>。</p><p>所以，总共应该是 63+48=111，选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASBqxj4HgCEIr2y8HhfBV1j4xRH7tgAC9xNrGz_BMFbvKxnek7GOvgEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 B。</p><p>森林和二叉树的关系，主要用特值法求解。</p><p>但是有两个需要注意，森林的先根遍历=二叉树的先序遍历，森林的后根遍历=二叉树树的中序遍历，普通树的先序遍历=二叉树的先序遍历，普通树的中序遍历=二叉树的中序遍历。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASFqxj8u9eLNEFCQ48c2EwyZ7kLn0gAC-xNrGz_BMFYCJ5zStCPnYQEAAwIAA3cAAz0E" alt="6 解" /><figcaption>6 解</figcaption></figure><p></p><p>本题的关系如图所示，可能有这四种关系。根据左孩子右兄弟可以进行如下分析：</p><p>关系 1，u 是 v 的祖父</p><p>关系 2，u 是 v 的父亲</p><p>关系 3，u 是 v 的叔父，即 u 与 v 的父亲结点是兄弟</p><p>关系 4，u 是 v 的兄弟</p><p>综上所述，1 和 2 正确，3 错误，所以选择 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASJqxj_asGktsw89rEZiIDLQh9Jb7wAC_hNrGz_BMFZfBjbx4NfIKAEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><ul>
<li>A.只有 1</li>
<li>B.只有 2</li>
<li>C.1 和 2</li>
<li>D.1 和 3</li>
</ul><p>本题应该选 A。</p><p>做这类题一般是用排除法和特值法。</p><p>什么是无向连通图，无向连通图的意思是说从任意一个结点出发都可以到达另一个结点。</p><p>对于 1，由于所有结点都必须和别人互通，所以图中的每一条边，都恰好为图的顶点度数之和贡献了 2 点（握手定理）</p><p>对于 2，如果边数=顶点数 -1，在它是无向连通图的前提下，它是一棵树，一棵树显然是连通的，所以 2 错了，如果想让他正确，应该改为边数大于等于顶点个数 +1。还有一点需要注意，如果没有无向连通图这个前提，只说了边数大于等于顶点数 -1，不能判断其是否连通，因为可以一堆点自己排列，然后其他点使用最大的连接方式。</p><p>对于 3，只有一个顶点的图也是连通图。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASNqxkG9rwN7PbTSaf-bdninAAEc2EAAAgIUaxs_wTBW0H_ofAh0XB8BAAMCAAN4AAM9BA" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 D。</p><p>D 是 B+ 树的特性。关于 B 树和 B+ 树的区别，主要在于：</p><p>m 阶 B 树一个结点内关键字最多 m-1 个，而 B+ 树则是 m 个，B 树最少是 m/2 向上取整 -1，而 B+ 树则是 m/2 向上取整。</p><p>B+ 树非叶结点的关键字都只是为了查找，数据都在叶结点，所以必须要查找到最后一层，且 B+ 树支持顺序查找。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASRqxkLDzn5bNI138-bWKcR052R9LQACBBRrGz_BMFbjqaCKnU3oWwEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 A。</p><p>堆采用树的父亲表示法，用于排序（而不用于查找）。对于堆排序，首先先花费 On 的时间建堆，然后花费 nlogn 的时间排序。</p><p>需要注意，排成升序序列采用大根堆，反之则采用小根堆。</p><p>堆插入的时候是在最后一个位置插入，如图所示进行交换。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASVqxkOz3HxSd-ygMnIAAWEWCg4fE_AAAgkUaxs_wTBWNUjRB3drUXkBAAMCAAN5AAM9BA" alt="9 解" /><figcaption>9 解</figcaption></figure><p></p><p>除了这种考法之外，还可以考比较次数。对于比较次数，尤其需要注意，假设 a 被换上来的，那么即便最终不会再换上去，也需要再和可能的比较一次（这个需要记住）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASZqxkQjOBr2kg8TzkeDjs65rs2I-AACCxRrGz_BMFbh-MqPkdtOKgEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 B。</p><p>第二趟排序问题可能会考大纲里的所有排序，这里就不列举了。</p><p>重要的是一定要记清楚每一个排序的过程是什么。对于这道题：</p><p>11,12,13,7,8,9,23,4,5.</p><p>对于冒泡排序，是“沉底”，也就是每次都交换出来一个最大的到最后或者最小的到最前，舍去。</p><p>对于直接插入排序，是本题的结果。</p><p>对于选择排序，简单选择排序是每次选择一个最小的数放在开头，然后开头标记 +1（或者最大的放末尾），舍去。</p><p>对于二路归并排序，本题总共是 9 个数，所以应该切分为：11,12,13,7；8,9,23,4,5，然后再切分：11,12；13,7；8,9；23,4,5，然后再切分变成只有一个数，然后按照从后向前的顺序依次归并。显然这道题也不是，舍去。</p><p>考的比较多的还有希尔排序和快排。</p><p>还有一些其他考法，例如比较次数，交换次数等的比较，一定要分清楚比较次数和交换次数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASdqxkVVpJLwaz2bFvY0FQ-XECVkUAACEBRrGz_BMFZ5578BsofiFwEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 C。</p><p>冯诺依曼计算机指令和数据都以二进制的形式存放在存储器中。</p><p>对于 A，指令操作码的译码结果意思是把这条指令翻译成具体的意思，例如从内存 0x00h 中取出一个数（直接寻址）指令译码和数据毫无关系。</p><p>对于 B，指令的寻址方式有 2 中，顺序寻址和跳跃寻址，数据的寻址方式有 10 种，隐含寻址，立即数寻址，直接寻址，间接寻址，寄存器寻址，寄存器间接寻址，相对寻址，基址寻址，变址寻址，堆栈寻址。跳跃寻址和相对寻址是类似的，所以不可以通过这两个来区分。</p><p>对于 C，以指令流水段的不同阶段举例，一条指令需要经过五个阶段：取指令，分析指令，执行指令，访存和写回。显然对于一个取数指令，在取指令的阶段得到指令的数据，在分析指令的过程得到其含义，而通过这个含义去执行取数指令（简单的访存指令没有执行阶段），通过访存得到数据，从而找到数据。</p><p>对于 D，显然错误。</p><p>还可以注意冯诺依曼计算机是指令流驱动。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAShqxkbad4ulfYE12TQJCN1IbGnLTwACGxRrGz_BMFZjuFVXNRVUZgEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 D。</p><p>显然排除 A 和 B。127-9=118=7×16+6，所以选 D。</p><p>这类题除了这么考，还可以考更深的数的扩展，数是否溢出，精度是否丢失，或者考 OF，ZF，SF，CF 的值。</p><p>还可以注意，对于很多时候，都可以使用十进制计算来快速判断，而不是在那里二进制算半天。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASlqxkd_FlNH6lGgMLBBiYKie2InFwACIhRrGz_BMFbeOhiTufNtOwEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 D，这题先跳过，因为 2009 年之外，其他年份都是考 IEEE 浮点数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASpqxkegh3YtKtTUWHkgs8xz_i_Y1wACJBRrGz_BMFbqbBwa40hijAEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题在刚开始学计组的时候是难题，但是放在现在一定是简单题。cache 有 16 块，采用 2 路组相联，所以时 16/2=8 组，也就是需要 3 位。块内地址有 32B，也就是 5 位。</p><p>主存单元 129 号，意思不是块，而是考虑了块内地址的（这个要和多少号主存单元区分）。</p><p>129=1000,0001B，前 3 位为 100，所以是第 4 组。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAStqxkhuwI5HSAKWLIkfntRUg-4RQQACLxRrGz_BMFZytQ_teF0DUQEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 D。</p><p>4KB/(2KB)=2</p><p>64K-4KB=60KB。</p><p>60KB/(4K×4bit)=30</p><p>这类题考起来也不会很难，难一点的需要将 16 进制转换为 2 进制进行分析。</p><p>需要注意地址线可能会用不满，而且也需要根据题目具体题目具体分析地址线高位是 0 还是低位是 0。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACASxqxkkY49tA-QKr-kXJU-f1nQM71QACMxRrGz_BMFZIRypBpAHy6AEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 C。</p><p>PC+“1”是硬件自动完成的，这道题的“1”是 +2，所以执行 2000H 的时候，地址是在 2002H，偏移字段为 06H，则 +6H 即可，也就是 C。</p><p>但是要注意反套路，有些很神秘的题目是按字编址，</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAS1qxkmBEb6zKl32D82GAbTR6OqFkwACNRRrGz_BMFZVUwABNWMRuiQBAAMCAAN4AAM9BA" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 A。</p><p>辨析 RISC 和 CISC，其实也就是辨析 MIPS 和 x86 两套东西，这个和计组大题强相关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAS5qxkm-bDn4WG65ZA6jE4vCZ8egIAACNhRrGz_BMFZE0pU3kfra8AEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 A，指令流水段根据最长的来定。</p><p>同类知识点还可以注意指令流水段的相关概念，超标量技术，超流水线技术和超长指令字技术。</p><p>对于超标量技术采用的加硬件的方法，并没有缩短流水段，对于超流水线技术才是缩短了流水段。</p><p>知识可以迁移到单周期 CPU，单周期 CPU 由于要保证间隔相同，所以取决于最长的指令，也因此单周期 CPU 不适合乘法，因为乘法消耗太大了，所有东西都得为它让路。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAS9qxkqYajKaqwI5tW4_8-j_bE_CKgACQBRrGz_BMFZOH8D6j6GwqAEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 D。</p><p>这道题考的是背书，和 17 题一样，本质是两种架构的辨析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATBqxkrBzlC1AQcvWJXHecxTOK2NEAACQxRrGz_BMFYpOXtFvGcV5QEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题时钟频率为 10MHz，一个总线周期传 4B 信息，一个总线周期占 2 时钟周期，那么 1 时钟周期传 2B 数据，所以带宽为 2B×10M=20MB。</p><p>带宽计算，这种题其实非常坑，要非常小心去做。除了要分清楚时钟周期和总线周期之外，还要注意一些很恶心的东西，例如 24 年和 25 年的带宽计算。前者是给了一堆无用条件，后者是说了一大堆无用条件然后信息在括号里。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATFqxkuJq4Q4qkOrZifvjbDWFplQ0QACRhRrGz_BMFYGoPJFm7gFnwEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 D。</p><p>缺失 50 次，也就是命中 1000-50=950，950/1000×100%=95%</p><p>cache 缺失次数，缺失率等，这类题考起来也很阴。主要可以考以下几个方面：</p><ul>
<li>一维数组</li>
<li>一维数组一条指令访问多次该数</li>
<li>二维数组
<ul>
<li>正常的二维数组</li>
<li>比 cache 小的二维数组</li>
<li>行比 cache 行小的二维数组</li>
</ul>
</li>
</ul><p>此外还需要注意到地球的是命中率还是缺失率。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATJqxkxQQfRE_Xr6QaLj-H1jF2CllQACRxRrGz_BMFYXNMD7uVDeEwEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 A。</p><p>外中断与内中断，中断与异常。</p><p>这类题考频非常高，除了像这样直接的考之外，还可能会结合具体场景，例如指令要不要返回当前指令。</p><ul>
<li>内中断（异常）
<ul>
<li>故障：缺页异常，除 0 异常（需要返回当前）</li>
<li>自陷：trap 指令，需要返回下一条</li>
<li>终止：访问主存错误</li>
</ul>
</li>
<li>外中断：请求设备，时钟中断</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATNqxkzXnRb-7hoLwrAE94UCW11oFQACShRrGz_BMFb3LiEwsto4mgEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 D。</p><p>处理机是否可以并行，需要注意并行和并发。并行指的是真正的同时，对于单处理机，进程与进程只能并发，所以选 D</p><p>此外可以注意，多道处理程序具有并行和并发的特点（尽管并发就足够了），单处理机系统也可以是多道程序处理系统。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATRqxk03k4xU29sopEm3ZT8Y8y4jnQACTBRrGz_BMFYYK5i_pPuXPAEAAwIAA3gAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 D。</p><p>本题考察的是进程调度算法，要对每一个算法有印象。</p><p>对于高响应比优先调度，要记住公式：1+ 等待时间/运行时间</p><p>RR 必然是抢占的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATVqxk2es5QhywPLh3HsvRbWVHYy1gACThRrGz_BMFZhFoht7EKGswEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 C。</p><p>8 个打印机，假设有 m 个进程，每个分 2 台，8/2=4</p><p>这类题考察过很多次，不难但是要注意表述，有可能问的是可能会发生死锁 K 的最小值，也可能问的是不会发生死锁 K 的最大值。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATZqxk4Bd-aQhgFuX0o0ZHoaKMsYWgACTxRrGz_BMFajHhd-0kklNAEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 A。</p><p>分区分配的意思是提前划分好内存以供使用，可以是同样的长度，也可以预先分配为特定的长度。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATdqxk5unD4jP1YjS-VcAAEG8AAB_NywAAJSFGsbP8EwVmx_0tdq1O7AAQADAgADeAADPQQ" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 C。</p><p>地址长度 32 位，段号 8 位，所以段内地址有 24 位，所以一段最长是 C。</p><p>分页管理，分段管理和段页式管理。和计组类似的，这类计算刚上手很难，但是到现在这个阶段应该要不成问题了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAThqxk60BkVNii-Oe3Qox2cAAXrFLo8AAlUUaxs_wTBWDcLHz68pG28BAAMCAAN4AAM9BA" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题考的也是概念，要分析清楚三种文件组织方式。</p><p>连续结构可以随机访问，但是扩展很不方便。</p><p>链式结构分为隐式链接分配和显式链接分配，对于前者不需要额外的外部空间去存储信息，但是每个块最后需要存储指针信息，对于后者则需要额外使用静态链表存储，常用于 FAT32 系统。</p><p>对于链式结构有三种，单级，多级以及混合索引，其中混合索引常用于 UFS 系统。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATlqxk9e_AABM3ejzWqAoqKuOXcTBAUAAlgUaxs_wTBWo_xT7Cq06skBAAMCAAN4AAM9BA" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 A。</p><p>需要增加，105 向后一定是 110，然后是 170 等。这道题应该选 A，对于 B 方向反了，对于 C 是 C-SCAN，D 啥也不是。</p><p>这类题不难，但是要小心翼翼，看清楚题目意思（就是很恶心），首先辨析 SCAN，C-SCAN，LOOK 和 C-LOOK，SCAN 是从 0 到最大（假设一开始是从 0 开始），然后从最大到 0，C-SCAN 则是从 0 到最大，然后还是从 0 到最大，LOOK 则是看当前的值来决定（对 SCAN 的优化）</p><p>但是，比较恶心的是：有的时候真题会混用这两个概念，但是大体上都不会混用。如果题目里实在没给前者的条件（最大），那么只能根据后者来处理，因为王道书上有这么一句，前者在实际工业意思是后者。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATpqxlBFFjyJsqvmTNn5CXs4pKIXHwACXhRrGz_BMFZzrminaxbS8QEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 A。</p><p>这类题就是辨析概念。对于 A，需要辨析一下 UFS 和 FAT 系统的区别。UFS 的文件访问控制信息肯定是不存在 inode 里的，而是存在具体信息里；对于 FAT 则是存。</p><p>文件分配表得分为系统文件打开表和进程文件打开表，对于前者一整个操作系统只有一张，对于后者一个进程有一张，且可以自行管理权限。需要注意，对于线程而言，没有自己的打开文件表，而是依托于进程存在的。</p><p>用户口令表是访问控制信息的一种。</p><p>系统注册表是软件在操作系统留下的东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATtqxlFBpWDJAAGuPyDHj0SqNqpIhXQAAmEUaxs_wTBW1s-ox9k9ke8BAAMCAAN4AAM9BA" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 B。</p><p>辨析软连接和硬链接。这类题主要是记忆，考过挺多次的。</p><p>F1 软链出去 F2，那 F2 就是一个独立新的，计数为 1，而 F1 硬链接出去 F3，所以 F1 和 F3 都是 2，删了 F1，F2 独立，不变，所以是 1，F3-1，所以也是 1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACATxqxlGrGV-ZzB_pA71jhlpBVRI4PAACYhRrGz_BMFan9fStbQ3jzwEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 A。</p><p>面向程序员的是逻辑号，这样不需要每次写程序都需要根据电脑修改。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAT1qxlHsTlYTcuOiMfGIkcUIyVH-ggACYxRrGz_BMFbY-i7P9840SQEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选择 B。</p><p>这类题很恶心，纯记忆的题，关于 OSI 模型和 TCP/IP 模型有很大的不同，主要体现为：</p><p>OSI 模型数据链路层就要实现差错控制，流量控制；网络层需要实现拥塞控制，并且可以无连接和有连接；会话层管理打断点和通信；表示层管理数据格式转换，加密。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAT5qxlKe4sgxKHa26YhtihbhCWO6IQACaBRrGz_BMFZVXr84H3MEewEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 B。</p><p>2Wlog2V=2×3000×4=24kbps</p><p>这类题才是真的非常不好上手，但是经过了 3 刷王道选择题，现在已经基本搞明白了。</p><p>首先要注意有没有最大这两个字，没有最大这两个字不需要采用奈奎斯特定理，其次如果给了波特率和比特率的关系，才需要在香农定理的题目里都考虑。</p><p>具体想要再练可以去看王道的选择题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAT9qxlNMnaRcm-gvNbbs_wwcqnGdggACbhRrGz_BMFbL5wlmZCoAAZ8BAAMCAAN4AAM9BA" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 C。</p><p>三种方式：停止等待协议，GBN 协议和 SR 协议。中间那个可以累计确认，外面那俩不行。</p><p>这几个协议在选择题里倒还好，但是在大题里，一定要引起高度重视。因为 TCP 采用的是类 SR 的协议，没有累计确认。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUBqxlPZc3frsueUv11f-_2BybSH1wACbxRrGz_BMFa96p2iQ6nBsAEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 A。</p><p>这类题就是背书题了，主要是看清题目就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUFqxlQXpmJMNW85mtUt4fWZEwj-EwACcRRrGz_BMFaDy63gGS_soQEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 D。</p><p>假设站点距离为 x，那么 RTT 应该是 2x/(2×10^8)，而数据帧应该是 10x。</p><p>数据帧 -800bit，那么那么也就是 10y=10x-800，解得 y=x-80，所以应该选 D。</p><p>这类题感觉是必考题，除了题目给的信息之外，还需要注意一些字眼，例如单向传播时延，10BaseT，100BaseT 附带的隐含信息。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUJqxlV1E9i4AV_7_d7ujqywqsjJxQACiBRrGz_BMFbOS66U8x8k1AEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 D。</p><p>第一个段起始：200，结束：499</p><p>第二个段起始：500，结束：999</p><p>确认序号是我希望你发什么，也就是我希望你发 1000。</p><p>这类题也是不难但是需要小心谨慎。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUNqxlXl9lhD5mnOcv_EkYXm2tMAAcsAApUUaxs_wTBWnniisKjEMMoBAAMCAAN4AAM9BA" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 C。</p><p>16KB 超时，也就是新门限值为 8KB。</p><p>所以应该是：</p><ul>
<li>1</li>
<li>2</li>
<li>4</li>
<li>8</li>
<li>9</li>
</ul><p>过了 4 个 RTT 应该是 9。</p><p>注意如果是发送窗口，要考虑对方的接受窗口大小。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAURqxlZNMLQX8y68lha7zMeg0HxkywACmhRrGz_BMFbASzs0J11FFAEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 B，属于背书题。</p><p>只有信号走的是控制连接。</p><p>本题分析错误，应该选 A。</p><p>控制指的是发号施令，协调动作的信息，请求下载，退出等。FTP 命令举例，比如说请求下载，请求下载肯定走的不是数据连接（因为只有传数据的时候才是走的数据连接，并且数据连接一旦传输完数据了之后就释放了）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUZqxlbyM89NmmGoNcVhA1KNIPwnogACnxRrGz_BMFa1x411HFlnkgEAAwIAA3gAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>不可以，考虑这样一种情况：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUVqxlbF4b5taJ0C2spGf94lDW5FUQACnRRrGz_BMFZIsg9RJuUIbAEAAwIAA3kAAz0E" alt="41 解" /><figcaption>41 解</figcaption></figure><p></p><p>假设要求 a 到 d 的距离，那么一开始 u 是 a，选择最短的路径是 a-b，那么从 b 出发继续，选择 b-d 到达中断，总花费为 101，然而显然花费最短的路径应该是 a-c-d，总共花费 5。</p><p>这道题没什么好讲的，直接过就好了，不过初见端倪，图考的特别频繁。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUdqxld38Y73ByuRWA09n2QKz2IyDwACoBRrGz_BMFZbOIC-2VNvRwEAAwIAA3gAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>根据数学原理，假设链表长度为 n，将链表分成两部分，k 和 n-k，显然取一个指针先遍历 k 个单位，那么当前指针再向后遍历 n-k 个单位就为空，所以天然的得到 n-k 这个值，而题目要求正是得到第 n-k 个结点。</p><p>(2)</p><ol>
<li>定义两个指针 l1，l2，都指向带头结点链表 list 的下一个结点</li>
<li>l1 先遍历 k 个单位，如果遍历过程中 l1 是空，那么意味着 k 大于 list 的长度 n，直接返回 0</li>
<li>l2 与 l1 共同遍历，直到 l1 为空</li>
<li>此时 l2 指向的结点就是倒数第 k 个结点</li>
</ol><p>(3)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>struct</span><span> </span><span>LNode</span><span>{</span></div></div><div><div><div>2</div></div><div><span>  </span><span>int</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>3</div></div><div><span>  </span><span>LNode</span><span>*</span><span> </span><span>link</span><span>;</span></div></div><div><div><div>4</div></div><div><span>}</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>void</span><span> </span><span>solve</span><span>(</span><span>LNode</span><span> </span><span>*</span><span><span>L</span><span>){</span></span></div></div><div><div><div>7</div></div><div><span><span>  </span></span><span>// 为空直接返回 0</span></div></div><div><div><div>8</div></div><div><span>  </span><span>if</span><span>(</span><span>L</span><span>-&gt;</span><span>link</span><span>==</span><span>nullptr</span><span>){</span></div></div><div><div><div>9</div></div><div><span>    </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>10</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>  </span><span>LNode</span><span> </span><span>l1</span><span>=</span><span>L</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>12</div></div><div><span>  </span><span>LNode</span><span> </span><span>l2</span><span>=</span><span>L</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>13</div></div><div><span><span>  </span></span><span>// l1 指针向后 k 个位置</span></div></div><div><div><div>14</div></div><div><span>  </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>k</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>15</div></div><div><span><span>    </span></span><span>// 如果 k 超过 l1 长度，那么直接返回 0</span></div></div><div><div><div>16</div></div><div><span>    </span><span>if</span><span> (</span><span>l1</span><span>==</span><span>nullptr</span><span>){</span></div></div><div><div><div>17</div></div><div><span>      </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>19</div></div><div><span>    </span><span>l1</span><span>=</span><span>l1</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>20</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>21</div></div><div><span><span>  </span></span><span>// l1 和 l2 共同向前走</span></div></div><div><div><div>22</div></div><div><span>  </span><span>while</span><span>(</span><span>l1</span><span>!=</span><span>nullptr</span><span>){</span></div></div><div><div><div>23</div></div><div><span>    </span><span>l1</span><span>=</span><span>l1</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>24</div></div><div><span>    </span><span>l2</span><span>=</span><span>l2</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>25</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>26</div></div><div><span>  </span><span>printf</span><span>(</span><span>"</span><span>%d</span><span>"</span><span>,</span><span>l2</span><span>-&gt;</span><span>data</span><span>);</span></div></div><div><div><div>27</div></div><div><span>  </span><span>return</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>28</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>这道题是链表的基本操作，我觉得没什么好说的，过了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUhqxlrmbbfOfz5F31G-g7QoSuOD7wACqBRrGz_BMFafRcIer3ygMAEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>时钟周期：1/500M</p><p>一条指令的执行时间：5/500M</p><p>中断服务需要的时间：20×5/500M</p><p>假设传输 1s 的数据，即传送 0.5MB 的数据，总共要传输 0.5MB/4B=0.125M 次中断。</p><p>所以中断需要的时间是：0.125M×20×5/500M=0.125×20×5/500=0.025=2.5%</p><p>(2)</p><p>假设传输 1s 的数据，即传输 5MB 的数据，总共要 DMA 处理 5MB/5000B=1K 次。</p><p>依次 DMA 预处理和后处理开销时间为：500/500M=1/1M。</p><p>所以 DMA 总共需要的处理开销时间是：1K/1M=0.1%。</p><p>本题考察的是外设相关的知识，我认为这道母题十分重要。核心思路是以运行 1s 为例得到具体的字节数，这样计算会很方便。</p><p>此外还需要注意题目的表述（即时钟周期和指令条数变来变去）</p><p>总的来讲这类题不会难，但是需要注意这类题可以出变种，例如 2016 年的真题，一些问题留到那道题解释。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdlqx2waHjqnUDIi9RTLiQKLw7c75QACTxBrGz_BOFYiO0sBHz3kpwEAAwIAA3gAAz0E" alt="44 1" /><figcaption>44 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdpqx2wt96eMWfiXXxCKMfAkBIEjrQACUBBrGz_BOFaixxYCxqef3AEAAwIAA3gAAz0E" alt="44 2" /><figcaption>44 2</figcaption></figure><p></p><p>这类题非常经典，在 15/22 年真题也考了差不多的内容。</p><p>主要就是要辨析清楚每一个小步骤到底做了什么事情。</p><p>C5 (R0)-&gt;A R0out, Ain</p><p>C6 (R1)-&gt;MAR R1out, MARin</p><p>C7 M(MAR)-&gt;MDR MemR, MDRinE</p><p>C8 (MDR)+(A)-&gt;AC MDRout, ACin, Add</p><p>C9 (AC)-&gt;MDR ACout MDRinE</p><p>C10 (MDR)-&gt;M(MAR) MemW, MDRoutE</p><p>我觉得这类题还是得多做。</p><p>假设换一个任务，将这些数据存入 (R3)，那么：</p><p>C10 应该是：</p><p>C10 (R3)-&gt;MAR</p><p>C11 (MDR)-&gt;M(MAR) MemW, MDRoutE</p><p>其实都是类似的，主要还是要记住具体流程，尤其是 C1 到 C4 指令阶段。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdtqx2yKVXsqCuKFe0UZcLcm28U55QACUhBrGz_BOFYo25Q2feuGMAEAAwIAA3gAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>func </span><span>P1</span><span>(){</span></div></div><div><div><div>2</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>3</div></div><div><span>    </span><span>produce</span><span>();</span></div></div><div><div><div>4</div></div><div><span>    </span><span>P</span><span>(空位); N</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>互斥锁 </span><span>1</span></div></div><div><div><div>6</div></div><div><span>    </span><span>put</span><span>();</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>互斥锁</span></div></div><div><div><div>8</div></div><div><span>    </span><span>V</span><span>(奇数);</span></div></div><div><div><div>9</div></div><div><span>    </span><span>V</span><span>(偶数);</span></div></div><div><div><div>10</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>}</span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>func </span><span>P2</span><span>(){</span></div></div><div><div><div>14</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>15</div></div><div><span>    </span><span>P</span><span>(奇数); </span><span>0</span></div></div><div><div><div>16</div></div><div><span><span>    </span></span><span>互斥锁</span></div></div><div><div><div>17</div></div><div><span>    </span><span>getodd</span><span>();</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>互斥锁</span></div></div><div><div><div>19</div></div><div><span>    </span><span>V</span><span>(空位);</span></div></div><div><div><div>20</div></div><div><span>    </span><span>countodd</span><span>();</span></div></div><div><div><div>21</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>22</div></div><div><span>}</span></div></div><div><div><div>23</div></div><div>
</div></div><div><div><div>24</div></div><div><span>func </span><span>P3</span><span>(){</span></div></div><div><div><div>25</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>26</div></div><div><span>    </span><span>P</span><span>(偶数); </span><span>0</span></div></div><div><div><div>27</div></div><div><span><span>    </span></span><span>互斥锁</span></div></div><div><div><div>28</div></div><div><span>    </span><span>geteven</span><span>();</span></div></div><div><div><div>29</div></div><div><span><span>    </span></span><span>互斥锁</span></div></div><div><div><div>30</div></div><div><span>    </span><span>V</span><span>(空位);</span></div></div><div><div><div>31</div></div><div><span>    </span><span>counteven</span><span>();</span></div></div><div><div><div>32</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>33</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore mutex</span><span>=</span><span>1</span><span>;</span><span> // 互斥锁</span></div></div><div><div><div>2</div></div><div><span>semaphore empty</span><span>=</span><span>N;</span><span> // 缓冲区空位</span></div></div><div><div><div>3</div></div><div><span>semaphore num_odd</span><span>=</span><span>0</span><span>;</span><span> // 奇数的个数</span></div></div><div><div><div>4</div></div><div><span>semaphore num_even</span><span>=</span><span>0</span><span>;</span><span> // 偶数的个数</span></div></div><div><div><div>5</div></div><div><span>func </span><span>P1</span><span>(){</span></div></div><div><div><div>6</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>n</span><span>=</span><span>produce</span><span>();</span><span> // 生成一个数</span></div></div><div><div><div>8</div></div><div><span>    </span><span>P</span><span>(empty);</span><span> // 请求缓冲区空位</span></div></div><div><div><div>9</div></div><div><span>    </span><span>P</span><span>(mutex);</span><span> // 互斥锁</span></div></div><div><div><div>10</div></div><div><span>    </span><span>put</span><span>();</span><span> // 放数</span></div></div><div><div><div>11</div></div><div><span>    </span><span>V</span><span>(mutex);</span><span> // 释放互斥锁</span></div></div><div><div><div>12</div></div><div><span>    </span><span>if</span><span>(n</span><span>%</span><span>2</span><span>==</span><span>1</span><span>){</span><span> // 判断这个数是奇数还是偶数</span></div></div><div><div><div>13</div></div><div><span>      </span><span>V</span><span>(num_odd);</span><span> // 如果是奇数，则生成 num_odd 信号</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>15</div></div><div><span>      </span><span>V</span><span>(num_even);</span><span> // 如果是偶数，则生成 num_even 信号</span></div></div><div><div><div>16</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>17</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>18</div></div><div><span>}</span></div></div><div><div><div>19</div></div><div>
</div></div><div><div><div>20</div></div><div><span>func </span><span>P2</span><span>(){</span></div></div><div><div><div>21</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>22</div></div><div><span>    </span><span>P</span><span>(num_odd);</span><span> // 消耗一个奇数位置</span></div></div><div><div><div>23</div></div><div><span>    </span><span>P</span><span>(mutex);</span></div></div><div><div><div>24</div></div><div><span>    </span><span>getodd</span><span>();</span><span> // 访问缓冲区得到奇数</span></div></div><div><div><div>25</div></div><div><span>    </span><span>V</span><span>(mutex);</span></div></div><div><div><div>26</div></div><div><span>    </span><span>V</span><span>(empty);</span><span> // 释放一个缓冲区空位</span></div></div><div><div><div>27</div></div><div><span>    </span><span>countodd</span><span>();</span><span> // 统计奇数个数</span></div></div><div><div><div>28</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>29</div></div><div><span>}</span></div></div><div><div><div>30</div></div><div>
</div></div><div><div><div>31</div></div><div><span>func </span><span>P3</span><span>(){</span></div></div><div><div><div>32</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>33</div></div><div><span>    </span><span>P</span><span>(num_even);</span></div></div><div><div><div>34</div></div><div><span>    </span><span>P</span><span>(mutex);</span></div></div><div><div><div>35</div></div><div><span>    </span><span>getodd</span><span>();</span></div></div><div><div><div>36</div></div><div><span>    </span><span>V</span><span>(mutex);</span></div></div><div><div><div>37</div></div><div><span>    </span><span>V</span><span>(empty);</span></div></div><div><div><div>38</div></div><div><span>    </span><span>countodd</span><span>();</span></div></div><div><div><div>39</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>40</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>咸鱼六部曲：</p><ol>
<li>分析总共有几个人</li>
<li>用中文描述每个人的动作，以及是否需要循环</li>
<li>分析这个动作前需要 P 什么，有 P 就有 V</li>
<li>分析互斥锁以及变量初值</li>
<li>检查连续的 P 是否会导致死锁</li>
<li>誊写并且检查</li>
</ol><p>本题是经典的生产者消费者问题，只是做了一点简单的变式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdxqx3BWG6KI2qXLnnQL6b4R-xlcQAACfhBrGz_BOFb0V97EjWKhmQEAAwIAA3gAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>题目的表述是“访问”。访问虚地址的目的是为了得到物理地址，由于题目里没有提到 cache，所以得到物理地址之后还需要根据这个物理地址去拿到东西。</p><p>页面大小为 4KB，则为低 12 位，所以：</p><p>2362H 的页号为 2，1565H 的页号为 1，25A5H 的页号为 2.</p><p>访问 2362H，首先访问 TLB，由于 TLB 为空，所以访问页表，根据页号 2 得到物理页框号 254H 并写入 TLB，得到物理地址后再进行访问内存得到数据，总计：10+100+100=210ns</p><p>访问 1565H，首先访问 TLB，由于 TLB 为空，所以访问页表，发现页表内没有，由于分配的物理页框是 101H 和 254H，且 254H 刚被访问了，由 LRU，将 101H 分配给页号 0，缺页异常结束后，信息写入页表和 TLB，指令回到读 TLB，，得到物理地址后访存，总计：10+100+10^8+10+100=100000220ns</p><p>访问 25A5H，读 TLB，得到物理地址后访存，总计：10+100=110ns</p><p>(2)</p><p>由上分析可知是 101H</p><p>本题其实不难，不过近些年的考研不会考这么简单了。主要是要捋清楚页号，页框之间的逻辑以及分配问题（不过选择题还有可能这么考，例如 21 和 22 年的选择题都有）</p><p>此外还需要注意，缺页异常结束后数据直接写入 TLB。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAd1qx3K_-wABGUe1v-ElbZ3cCnwUNQQAAocQaxs_wThWNn0zLs4YUFUBAAMCAAN4AAM9BA" alt="47 1" /><figcaption>47 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAd5qx3LUsOyvPuwIVOpUqBZ3CwlymAACiBBrGz_BOFZrfvan7j3GCQEAAwIAA3gAAz0E" alt="47 2" /><figcaption>47 2</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>202.118.1.0/24，可以拆分为：</p><p>202.118.1.0 - 202.118.1.127</p><p>202.118.1.128 - 202.118.1.255</p><p>所以，可以分配给局域网 1 的地址是：202.118.1.0/25，分配给局域网 2 的地址是：202.118.1.128/25。</p><p>(2)</p><p>局域网 1 的路由：202.118.1.0 255.255.255.128 / E1</p><p>局域网 2 的路由：202.118.1.128 255.255.255.128 / E2</p><p>域名服务器路由：202.118.3.2 255.255.255.255 202.118.2.2 L0</p><p>互联网路由：0.0.0.0 0.0.0.0 202.118.2.2 L0</p><p>(3)</p><p>202.118.1.0 255.255.255.0 202.118.2.1 L0</p><p>这道题我记得在最开始做的时候，云里雾里，是因为需要注意，采用/的记录方法等价于网络号 + 子网掩码。</p><p>此外还可以注意，对这类题还可能结合 NAT 考（而且非常常见）</p></section><section><h3>408 2010 真题 2 刷<a href="#408-2010-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为 138</li>
<li>第 16 题没有一个选项一个选项分析，用的显然正确分析，导致低级错误认为 3 也是对的</li>
<li>第 27 题分析出来是皮特松算法了，但是仔细看选项直接选的</li>
<li>第 43 题 -2，想当然分析导致错误，二地址指令默认存储在目的操作数，而不是源操作数。</li>
<li>第 44 题 -2，想当然认为块内地址是 32B，实际上应该是 64B</li>
<li>第 45 题 -4，这个需要着重注意，不是低级错误。首先是一个低级错误，加法减法算错；其次是算数据传输时延，也就是转一圈的时间除以磁道数，这个还是第一次想明白怎么算。</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAd9qx7CDmiJU2MZ1spWrfrDErbyqXQAC1hJrGz_BQFZ7oiDf9VGuAQEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 D。</p><p>进行模拟：</p><p>对于 A，进栈 abcd，退栈 dc，进栈 e，退栈 eb，进栈 f，退栈 fa。</p><p>对于 B，进栈 abc，退栈 cb，进栈 d，退栈 da，进栈 e，退栈 e，进栈 f，退栈 f。</p><p>对于 C，进栈 ab，退栈 b，进栈 c，退栈 ca，进栈 de，退栈 e，进栈 f，退栈 fd。</p><p>对于 D，进栈 a，退栈 a，进栈 bcdef，退栈 fedcb。</p><p>所以选择 D。</p><p>对于这类题不会难，多检查一下就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1VqyOWUq2n5TGKsaenaRM29LWCDcAACKBNrG6T-SFYb5_-S5rQgXQEAAwIAA3kAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 C。</p><p>受限队列，两端入队一端出队。</p><p>对于 A，a，ba，bac，bacd，bacde。</p><p>对于 B，a，ba，bac，dbac，dbace。</p><p>对于 C，a，不行了。</p><p>对于 D，a，ba，cba，cbad，acbad。</p><p>这类题也不难，主要还是要搞清楚受限如何受限</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1ZqyOcEI9D8vCzcOFvfcczLY3GYXgACLBNrG6T-SFazQgABNm1OJ38BAAMCAAN4AAM9BA" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 D。</p><p>后序线索二叉树遍历即 dbca，后序线索二叉树是沿虚线走的，显然选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1dqyOerPprN9wLKF0w95RAMvj7pcwACLRNrG6T-SFZBKvmLpzljYgEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 C，如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1hqyOkNcS6J1NpauJLvUg3tJVWl1wACLxNrG6T-SFZT6OcCVL_DXQEAAwIAA3cAAz0E" alt="4 解" /><figcaption>4 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1lqyOkgFNQ-sO4lqZlvjigXNV0LRQACMBNrG6T-SFY3QwZfm2JfqAEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 B。</p><p>公式度的和 +1=边 +1=结点数。</p><p>所以，20×4+10×3+1×2+10×1+1=123=20+10+1+10+n=41+n，所以 n=123-41=82。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1pqyOnKvqQxxf5rQ2qv7MoSStWlYwACMhNrG6T-SFaT1L8MEu4G8QEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 A。</p><p>这类题应该在掌握哈夫曼树的基础上然后看清题目举反例做。显然取 1,2,3,4,5 构造出来的树不是完全二叉树。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1tqyOqe9NvrQBCT20FXy6wo2yWF9gACNBNrG6T-SFayNPlTguyefgEAAwIAA3kAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 C。</p><p>必须连通，所以让 6 个结点的边最大 +1 即可，也就是 6×5/2+1=16，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA1xqyOrennJ5opDZoViD7OFAGTeSNQACNRNrG6T-SFa-2LhkQMowZQEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 B。</p><ul>
<li>a
<ul>
<li>b
<ul>
<li>ced</li>
<li>ecd</li>
</ul>
</li>
<li>ebcd</li>
</ul>
</li>
</ul><p>所以总共是 3 个，也就是 B。</p><p>这类题也不难，重点是捋清楚。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA11qyOtNrnP_9kzw7dyrlHJomfR-1QACNxNrG6T-SFZwB1JQF8zs2wEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题考察的是折半查找判定树，绘制如图：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA15qyOuuo2N7BlHCN5WBVpOa0raa8gACORNrG6T-SFZXqkP2KxllXQEAAwIAA3kAAz0E" alt="9 解" /><figcaption>9 解</figcaption></figure><p></p><p>所以应该是 5。</p><p>搞清楚本质。</p><p>还有一类考法就是计算关键字比较次数，这个也需要注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA19qyOvKVsnZ2lvJdb_jcixgxh3dQAACOhNrG6T-SFYg7Mz5fomlpQEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 D。</p><p>递归次数与一开始的初始数据有关，和长短分区和先后无关，因为无论是先处理谁，最后都是一样的结果（和处理顺序无关）</p><p>这道题初上手反套路。</p><p>比较可能考的是各类排序的性质，比如说快排不稳定等，以及优缺点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2BqyOxiLleXUnKDpkPLa-PNdjAcFQACTBNrG6T-SFZKV3e0T5-LrgEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 A。</p><p>比较的是排序猜测，09 年真题也考了。对每个排序理解清楚是什么意思就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2FqyOy-hihqHCKDFKbv9AKwaojg8AACdhNrG6T-SFZoUxTC93Ee1QEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，提高 CPU 时钟频率，在更高频的 CPU 跑程序肯定会更快，23 就不说了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2NqyO0G1FEcjKkFpnUSgqHMEDjUzgACeBNrG6T-SFakT84MMGQKCAEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题转换成十进制计算然后判断是最快的，r1=FEH=1111,1110B=-2，r2=1111,0010B=-1-13=-14，r3=90H=1001,0000B=-128+16=-112，r4=F8H=1111,1000B=-8。</p><p>所以，r2×r3 显然溢出</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2RqyO3IDblSadfxSd8cmOekYJEGoAACehNrG6T-SFZkKZmxQ6OzaQEAAwIAA3kAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 B。</p><p>1 显然正确，2 显然错误。</p><p>对于 3，变大再变小不会，正确，对于 4 会导致精度丢失，所以错误。</p><p>应该选 1,3</p><p>考察单精度浮点数双精度浮点数，int，long，long long 等类型的转换，需要注意溢出和精度丢失问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2VqyO49goycw-4NQw5eUnFMhv_qUgACexNrG6T-SFZbcGNcGBqJ0QEAAwIAA3kAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 D。</p><p>2K×4 位需要 8 块组成 8K×8 位，但是由于先进行位扩展，所以可以视为 2K×8 位组成 8K×8 位的存储器。</p><p>8KB=2^13B，也就是 000H-FFFH 地址 B1FH 的 B 是 1011，所以应该是第 2 块，2K×8 位，也就是 1000,0000,0000B=800H，所以选择 D。</p><p>这类题也不会难，重点在于捋清楚。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2ZqyO8mzKuo32O_D3BXYX9Iv2eCswAChxNrG6T-SFadBElKMA7FhQEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 A。（低级错误选为 D，因为没分析 3）</p><p>对于 1,2，显然正确。对于 3，ROM 显然不可以用来做 cache；对于 4，只有 RAM 需要刷新，ROM 不用刷新，所以应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2hqyPCRyVEKygWPekvWU8I_f37hvAACiRNrG6T-SFbfbVDAQYIx-QEAAwIAA3gAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 D。</p><p>page 未命中说明不在内存，所以 tlb 和 cache 必不可能命中。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2lqyPDEOiFgy7ovIpvAuKAG4-nLAQACixNrG6T-SFbJ_HngYmTNwAEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 B。</p><p>可见与不可见需要深度辨析，汇编程序员可见的是 PC，通用寄存器组，状态寄存器（只能看到不能改）</p><p>这类题也是经典题目，需要区分透明和可见。透明的意思是感觉好像不存在，所以这道题透明的应该是 MAR，MDR 和 IR。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2pqyPESQ92JRzzB3nmIjHQVJ3ymlQACjBNrG6T-SFa4jvvBtr--OAEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 A</p><p>旁路转发是解决数据冲突的方式（除了 load-use），本题 BCD 则是三种冲突的方式。</p><p>20 题超纲。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2tqyPFI5zxKdyVzc-Ng3nRZODapZgACjRNrG6T-SFbrKoG_LS0zAAEBAAMCAAN4AAM9BA" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 A。</p><p>中断分为两个主要的阶段，中断响应与中断服务程序的执行。前者是硬件执行的，后者是操作系统负责的。</p><p>硬件，也就是 CPU 负责硬件关中断，保存 PSW，PC 以及找到中断向量的入口地址。</p><p>操作系统负责后续的。</p><p>根据题目，BC 可以排除（因为一开始就是关中断）</p><p>对比之下应该选择 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA2xqyPJURPsYmp8AAQpjKGovmgWdD4sAAo4Taxuk_khWmNUH2iQbY9oBAAMCAAN4AAM9BA" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 D。</p><p>其实吧所有数据乘起来就好了，也就是 1600×1200×24×85×2=D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA21qyPLzJvwOFpNdOommcQgxU58KJwACjxNrG6T-SFYZrqzk4-5LFQEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题属于背书题，选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA25qyPMC2kKOVmbKiRiDriW-rpp8DAACkBNrG6T-SFaLNs4UPRz_dAEAAwIAA3gAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 C。</p><p>导致创建新进程主要是看有没有创建新的 PCB，对于 1 和 3 都要，对于 2 则是让进程从运行态进入阻塞态，所以 2 排除，应该选 1 和 3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA29qyPNl-zQ3sIPFeJHQ3SZc8EleowACkhNrG6T-SFYLUayf0dq01AEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 B。</p><p>如果要有等待的进程，那么当前信号量应该是负数，所以 AC 排除，可用为 1，即 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3BqyPOpDAwIO2FfP_irG5Y62qAr4AACkxNrG6T-SFafnElii1JRwQEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 BC，刚完成 io 应该提升优先级</p><p>对于 D，考虑抢占式优先级调度，如果已从就绪态变成运行态，优先降低会导致完全一上处理机就下去。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3FqyPR5t4OLz8hSgMPMPfuju_uwwwAClRNrG6T-SFbmyWbdzCGOIwEAAwIAA3gAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 D（低级错误选为 B，因为没看完题目）</p><p>做这种题的时候考虑经典模型，显然这道题是皮特松算法，会导致让权等待，但是不会导致题目里这两个，所以选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3JqyPS49rK_ct4vtoShvSoOWz2u7gAClhNrG6T-SFYr8JJq1TnmNgEAAwIAA3kAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题最重要的事情是：每次需要重新排序最短长度，而不是保持不变。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3NqyPVUlCwuAn8b4Lr-i1wxEkPTSgACmhNrG6T-SFbnTVuuJJ8FMwEAAwIAA3cAAz0E" alt="28 解" /><figcaption>28 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3RqyPV4HT8jb1v1LklQbp--x2IQBgACnRNrG6T-SFatUnP0G_wyXAEAAwIAA3gAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 B。</p><p>一页内最多可以存在 512 个表项，也就是 9 位，所以 2 级页号是 9，页目录号是 16-9=7，所以选 B</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3VqyPhcy9qZiZRBKJSUHSTx67krzwACohNrG6T-SFb2wCA61qCu2wEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 C。</p><p>256B/4B=64，即一块磁盘可以存 64 个，所以，总共应该是（4+2×64+64×64）×256B。</p><p>也就是（1+2×16+64×16）KB=（1+32+2^10）KB=（1+32+1024）KB=1057KB。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3ZqyPj2Ad13UB566fUB7a7c3tdD4QACphNrG6T-SFa28s3pSRTh0QEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 C，显然不解释了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3dqyPkWxCcSkdZa9OYtYx1w62smhQACpxNrG6T-SFa42fb80eoR5AEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 B。</p><p>中断处理的全流程，见 <a href="/posts/npee/os/#%E4%BB%A5-scanf-%E5%88%86%E6%9E%90%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86">以 scanf 分析设备管理</a></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3hqyPmmKCiM_YBgK9IqdtOjlIJu7QACqBNrG6T-SFYhCfXGjcQQdwEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选 C，属于背书题，不解释了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3lqyPnAlv_L-q95PFGFuplmi-fSkQACqRNrG6T-SFbdUCG9OYGP_wEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 C。</p><p>首先计算分组数，1000x=98000+20x，解得 x=1000。</p><p>走过一段链路的时间是 1000B/100Mbps=80us。</p><p>显然平着走是最短的，经过 2 个路由器，也就是 3 段链路，所以 1002×10us=C。</p><p>这类题感觉最难的也就是考 2025 年真题那样子，好好分析即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3pqyPnNLZ38Y-qfqqfxFUQm4B2ZawACqhNrG6T-SFZR-YaZ2J8F8AEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 D。</p><p>背书题，RIP 协议 16 跳代表不可达。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3tqyPnciDeXvAQLqItVdo7Dt3rz4wACqxNrG6T-SFattU5wXvV2lAEAAwIAA3kAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 C。</p><p>背书题。</p><p>不过值得注意的是，源点抑制在新版本的 ICMP 被废除了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA3xqyPnpahFnJYP4OMHFDNMbC9daYQACrBNrG6T-SFYzH6O_g2gBqwEAAwIAA3kAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 B。</p><p>248=255-7=1111,1000B。所以子网数为 32，可分配地址减去网络地址和广播地址是 6.</p><p>此外还需要注意，可分配，可用都指的是应该挖去网络地址和广播地址，而 ip 数，之类的表述不需要挖去。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA31qyPn6QAQns0ApyRQsHIEfovhvKwACrRNrG6T-SFbEPbAbenjayAEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 D。</p><p>属于背书题。</p><p>广播风暴可以使用路由器和 vlan 抑制</p><p>冲突域可以用网桥和交换机划分</p><p>中继器和集线器只是对信号整形放大。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA35qyPoI0pffuHbofs4TZhGf0tRFUQACrhNrG6T-SFa_oqM4ZVA7UQEAAwIAA3kAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 A。</p><p>拥塞窗口为 4，也就意味着当前甲最多可以发送 4 个单位数据，题目要求是发 2 个单位，所以应该是：</p><p>1,2，3 和 4 待发送。</p><p>收到了 1 的确认，所以拥塞窗口：2,3,4,5（然后有可能是到 6，也有可能是 6,7,8,9）</p><p>但是接收窗口只有 2 了，所以发送窗口变为 2,3</p><p>而 2 已经发送未确认所以不需要再发，所以还可以发 3，也就是还可以发 1000B。</p><p>这类题也是很经典的题目，从早年考到了近些年年份。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA39qyPoYnNhve5S2DB8W155dAAHhzIAAAq8Taxuk_khWakxhHUc5DpMBAAMCAAN5AAM9BA" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 A。</p><p>背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4BqyPooi8mn3GA7l3Y3QHVP6vMQWwACsBNrG6T-SFadtTbfzbqMdQEAAwIAA3gAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p>

<table><thead><tr><th>关键字</th><th>关键字乘 3</th><th>最大</th><th>模</th></tr></thead><tbody><tr><td>7</td><td>21</td><td>21</td><td>0</td></tr><tr><td>8</td><td>24</td><td>21</td><td>3</td></tr><tr><td>30</td><td>90</td><td>84</td><td>6</td></tr><tr><td>11</td><td>33</td><td>28</td><td>5</td></tr><tr><td>18</td><td>54</td><td>49</td><td>5</td></tr><tr><td>9</td><td>27</td><td>21</td><td>6</td></tr><tr><td>14</td><td>42</td><td>42</td><td>0</td></tr></tbody></table><p>由装填因子可知长度为 10。</p><p>所以最终应该是：</p>

<table><thead><tr><th>下标</th><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr></thead><tbody><tr><td>关键字</td><td>7</td><td>14</td><td>空</td><td>8</td><td>空</td><td>11</td><td>30</td><td>18</td><td>9</td><td>空</td></tr></tbody></table><p>(2)</p><p>查找成功的概率：</p>

<table><thead><tr><th>关键字</th><th>查找次数</th></tr></thead><tbody><tr><td>7</td><td>1</td></tr><tr><td>8</td><td>1</td></tr><tr><td>30</td><td>1</td></tr><tr><td>11</td><td>1</td></tr><tr><td>18</td><td>3</td></tr><tr><td>9</td><td>3</td></tr><tr><td>14</td><td>2</td></tr><tr><td>总比较次数</td><td>12</td></tr><tr><td>成功平均查找长度</td><td>12/7</td></tr></tbody></table><p>查找失败的概率：</p>

<table><thead><tr><th>散列地址</th><th>比较次数</th></tr></thead><tbody><tr><td>0</td><td>3</td></tr><tr><td>1</td><td>2</td></tr><tr><td>2</td><td>1</td></tr><tr><td>3</td><td>2</td></tr><tr><td>4</td><td>1</td></tr><tr><td>5</td><td>5</td></tr><tr><td>6</td><td>4</td></tr><tr><td>总比较次数</td><td>18</td></tr><tr><td>失败平均查找长度</td><td>18/7</td></tr></tbody></table><p>由于是 mod7，所以算到这里就结束了，总共是 18，也就是 18/7</p><p>这种题历年考了 2 次，不难但是要注意留档。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4FqyPo3STA0nAQ0j3QqfXC6nvpiZAACsRNrG6T-SFbCfr0qkk9miwEAAwIAA3gAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>根据数学原理，以第 p 个数前的序列记为 a，后面记为 b，则 ab 的转置为 b 的转置 a 的转置，分别再对 b 的转置 和 a 的转置 进行转置，得到需要的序列。</p><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>reverse</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>l</span><span>,</span></span><span>int</span><span><span> </span><span>r</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>  </span><span>while</span><span>(</span><span>l</span><span>&lt;</span><span>r</span><span>){</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>tmp</span><span>=</span><span>A</span><span>[</span><span>l</span><span>];</span></div></div><div><div><div>4</div></div><div><span>    </span><span>A</span><span>[</span><span>l</span><span>]</span><span>=</span><span>A</span><span>[</span><span>r</span><span>];</span></div></div><div><div><div>5</div></div><div><span>    </span><span>A</span><span>[</span><span>r</span><span>]</span><span>=</span><span>tmp</span><span>;</span></div></div><div><div><div>6</div></div><div><span>    </span><span>l</span><span>++</span><span>;</span></div></div><div><div><div>7</div></div><div><span>    </span><span>r</span><span>--</span><span>;</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span>}</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>void</span><span> </span><span>solve</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>p</span><span>,</span></span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>12</div></div><div><span>  </span><span>reverse</span><span>(</span><span>A</span><span>,</span><span>0</span><span>,</span><span>p</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>13</div></div><div><span>  </span><span>reverse</span><span>(</span><span>A</span><span>,</span><span>p</span><span>,</span><span>n</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>14</div></div><div><span>  </span><span>reverse</span><span>(</span><span>A</span><span>,</span><span>0</span><span>,</span><span>n</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>15</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>时间复杂度：O(n)</p><p>空间复杂度：O(1)</p><p>解 2：</p><p>(1)</p><ol>
<li>设置一个辅助数组 tmp，长度为 n</li>
<li>将第 A[(i+p)%n] 位的数组复制到 tmp[i]</li>
<li>将 tmp 的每一位复制回 A</li>
</ol><p>(2)</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>solve</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>p</span><span>,</span></span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>  </span><span>int</span><span> </span><span>tmp</span><span>[</span><span>n</span><span>];</span></div></div><div><div><div>3</div></div><div><span>  </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>n</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>4</div></div><div><span>    </span><span>tmp</span><span>[</span><span>i</span><span>]</span><span>=</span><span>A</span><span>[(</span><span>i</span><span>+</span><span>p</span><span>)</span><span>%</span><span>n</span><span>]</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>6</div></div><div><span>  </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>n</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>7</div></div><div><span>    </span><span>A</span><span>[</span><span>i</span><span>]</span><span>=</span><span>tmp</span><span>[</span><span>i</span><span>];</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>(3)</p><p>时间复杂度：O(n)</p><p>空间复杂度：O(n)</p><p>考数组的题就看有没有写过了，几秒内没有想出最优解直接暴力也可以拿大多数分数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA45qyeiJkbEeVJ480g0ZfhmXAAFyr1gAAq0Raxuk_lBWBWpFKOuYZrsBAAMCAAN4AAM9BA" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>OP 有 12 到 15 4 位，所以是 16 条指令。</p><p>根据图，Md 有 3 位，Md 和 Rd 共 0 到 5 也就是 6 位，所以 Rd 是 3 位，也就是 8 条指令。</p><p>由于贮存地址空间大小为 128KB，按 16 位的字编址，所以地址空间是 128KB/16bit=128KB/2B=64KB，也就是 2 的 16 次方，所以 MAR 是 16 位。</p><p>字长 16 位，所以 MDR 需要 16 位。</p><p>(2)</p><p>看指令的最后一行，意思是当前寄存器中读一个值（该值为 16 位），以当前指令的下一条指令为基准，向上和向下偏移。</p><p>显然整个地址空间都可以被覆盖，所以目标地址范围是 0000H-FFFFH。</p><p>(3)</p><p>确定 OP 码：0010B</p><p>确定源操作数操作方式：寄存器间接寻址，001B</p><p>确定源操作数 Rs：4，也就是 100B</p><p>确定目的操作数操作方式：寄存器间接、自增，也就是 010B</p><p>确定目的操作数 Rd：5，也就是 101B。</p><p>组合起来，0010,0011,0001,0101B=2315H</p><p>该指令的意思是：从 R4 中取出 1234H 解析数据得到 5678H；从 R5 中取出数据 5678H 解析数据得到 1234H，5678H+1234H=68ACH，覆盖 R4 中的地址数据 1234H 指向的数据 5678H，然后 R5 中的数据 5678H+1</p><p>综上所述，存储单元 1234H 的数据从 5678H 变为 68ACH；R5 中的数据从 5678H 变为 5679H。</p><p>这类题最重要的就是看清楚题目格式，不要想当然自己觉得怎么解释就是怎么解释。</p><p>还有就是要注意按字编址还是按字节编址，这道题是少见的按字编址。</p><p>本题 -2，想当然分析导致，二地址指令默认存储在目的操作数，而不是源操作数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA49qyejCV5RYuu0zbPtvoPPpKBPEzAACrxFrG6T-UFZ9q3WFfYNHnQEAAwIAA3gAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>主存空间：256MB，也就是 28 位。</p><p>8 个 cache 行，也就是 3 位，采用直接映射，无需缩减位数。</p><p>cache 行大小 64B，也就是 6 位。</p><p>tag 位=28-3-6=19 位</p><p>cache 至少需要 tag 位和有效位，所以每一个 cache 行需要额外的 20 个位。</p><p>所以一个 cache 行需要 64×8bit+20bit=532bit，总共有 8 行，所以是 8×532bit=4256bit。</p><p>(2)</p><p><code>a[0][0]</code> 放在 320=000,0140H。</p><p>由于 31=1,1111B，31×4=111,1100=7CH，所以 <code>a[0][31]</code> 是 000,01BCH。将倒数第 2 位取出即 BH=1011B，取前三位也就是 101B=5。</p><p>所以在第 5 组。</p><p>将 1BCH 展开，即 0001,1011,1100B，取 110B，也就是 6。</p><p>由于一行是 256 个数据，又要 256+1，所以 257=1,0000,0001B，×4 也就是 100,0000,0100B=404H。所以 <code>a[1][1]</code> 是 000,0544H。将倒数第 2 位取出即 4H=0100，取前三位也就是 010B=2。</p><p>所以在第 2 组。</p><p>将 544H 展开，即 0101,0100,0100B，取 101B，也就是 5。</p><p>块内地址是 64B，而不是想当然的 32B</p><p>(3)</p><p>一个 cache 行可以容纳 64B/4B=16 个数据。</p><p>程序 A 数据命中率为 1-1/16=15/16=93.75%</p><p>程序 B 数据命中率为 0%</p><p>这类题挺常考的，可以注意一下几类 cache 的分析方式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5BqyejV58wmvCWSj8ZZzGHxSzYebQACsBFrG6T-UFZUyd-IXyf5ZQEAAwIAA3gAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>2KB=2×8Kbit=16Kbit=16×1024bit=16386bit。</p><p>所以本题采用位图法进行管理。</p><p>(2)</p><p>没有明确给最大磁道是多少，所以只能将 CSCAN 视为 CLOCK。</p><p>磁盘时延=寻道 + 旋转 + 寻址 + 读数据</p><p>沿增大的方向移动，所以访问序列为：100,120,30,50,90，总共需要访问 20+90+60=180 个磁道。</p><p>所以寻道消耗 180ms。</p><p>所以寻道消耗 170ms。</p><p>一分钟旋转 6000 次，也就是 1 秒旋转 100 次，也就是 5ms 旋转 0.5 次。</p><p>所以旋转消耗 20ms。</p><p>对每个磁道随机读取 1 个分布的扇区，由于有 100 个扇区，所以可以视为 5ms/100，也就是 0.05ms</p><p>所以寻磁道需要消耗 0.2ms。</p><p>数据传输的意思是，10ms 转 1 次，所以 10ms/100=0.1ms，一圈的时间除以 100 得到数据传输时间。</p><p>4 次总共是 0.4ms</p><p>所以总计 200.2ms。</p><p>所以总计为 190.4ms。</p><p>(3)</p><p>FIFO。</p><p>Flash 存储器可以随机寻址，寻址时延接近为 0，所以按照 FIFO 最好。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5Fqyejqot5jRqPRL335QaLO7OXV5wACsRFrG6T-UFaRqF_HHJHadAEAAwIAA3kAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>(1)</p><p>逻辑地址空间为 64KB，所以总计 16 位，由于页内地址为 1KB，占 10 位，所以页号为前 6 位。</p><p>17CAH=0001,0111,1100,1010B，取前 6 位 00,0101B，也就是页号为 5。</p><p>(2)</p><p>采用 FIFO，显然应该替换掉最早装入的，也就是页号 0。将物理页框号 7 分配给页号 5，所以物理页号为 00,0111B，拼接也就是 0001,1111,1100,1010B=1FCAH。</p><p>(3)</p><p>采用 CLOCK 算法，找出近期访问位为 0 的页并淘汰，如果当前页为 1 那么将 1 改为 0。</p><p>扫一圈所有页都是近期访问，所以都改为 0，从开始重新扫描，所以选逻辑页为 2 对应的物理页框 2=00,0010B，拼接可得 0000,1011,1100,1010B=0BCAH。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5Jqyej-eycddQdOAzED_JCCVbKPLAACshFrG6T-UFaAkCUTVxJgRQEAAwIAA3gAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>RTT=4km/200000(km/s)=20us。</p><p>所以最短经过 10us，最长经过 20us。</p><p>(2)</p><p>除数据帧之外总共消耗 6+6+2+4=18B，最大的数据是 1500B。</p><p>甲的数据传输时间是 1518B/10Mbps，乙的数据传输时间是 64B/10Mbps</p><p>所以总时间消耗是 RTT+(1518+64)B/10Mbps= RTT+(12656)/10Mbps=20us+1265.6us=1285.6us。</p><p>所以数据传输速率是 1500B/1285.6us=1.16677B/us</p><p>注意这里求的是有效数据传输速率，而不是求利用率。</p></section><section><h3>408 2011 真题 2 刷<a href="#408-2011-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为 142</li>
<li>第 9 题，回路的定义是 a-b-c-a，要回到本身，而简单路径的定义是没有重复路径的结点</li>
<li>第 42 题 -1，算法题没写最优解（二分法），问题不大</li>
<li>第 43 题 -2，第 4 问整体逻辑错误。第四问问的是带符号数，而我回答了有符号数相关的内容。并且这道题考察的是计算机内部如何比较，也就是得从硬件层面出发，而不是看 OF 标志位</li>
<li>第 47 题 -3，文件系统与磁盘。本题结合磁盘来考，需要注意从磁盘的角度分析</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5NqygHvMaUDuO0PKKYGFbuAYdg0kAACsxFrG364UVbmLJKbCy5VYwEAAwIAA3kAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 A。</p><p>令 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 是次数，则 <span><span>2+2×2+⋯+2×2t=2t+2−2=n/22 + 2\times2 + \cdots + 2\times2^t = 2^{t+2}-2 = n/2</span><span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span></span><span>×</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span></span><span>×</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>t</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>t</span><span>+</span><span>2</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>2</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span><span>/2</span></span></span></span></p><p>变形得 t=logn，所以应该选择 A。</p><p>这类题最重要的事情就是一步步算出来，而不是想当然直接脑子想。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5RqygLY-flLIBWVRstxlKpvZC983gACtBFrG364UVagoxdsmY0f7wEAAwIAA3kAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 B。</p><p>以 d 为开头的元素，也就是一开始的入栈顺序是 abcd，然后 d 出栈。</p><p>所以从后面开始，有可能是：ecba，ceba，cbea，cbae，总共 4 种。</p><p>这类题纯模拟，只要不出错就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5VqygM_NWC0xHXM_R1DTZUe0n4XwwACtRFrG364UVZK5WJoS8FuYAEAAwIAA3kAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选择 B。</p><p>本题插入第一个元素后，f 指向 A0，r 指向 A0，出队，r-1，指向 n-1。</p><p>这类题有 4 种变式，可以注意题目的要求。</p><p>这类题的做法就是假设已经有了第一个元素，然后出队一次（只动 rear 指针），得到初始值。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5ZqygQFPTSUSI9koR1MdgXSfjellgACtxFrG364UVaudXAovhio-AEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 C。</p><p>完全二叉树至多有一个度为 1 的结点，假设度为 0 的节点个数为 n0，度为 2 的节点个数位 n2，度为 1 的结点个数为 n1（只有可能是 0 或 1）。</p><p>可以列出公式：n0+n1+n2=n1+2n2+1=768，化简可得 n0=n2+1，所以 2n2+1+n1=768，2n2+n1=767。</p><p>为了让 n2 有解，所以 n1 取 1，所以 2n2=767-1=766，n2=766/2=383。</p><p>所以 n1=n2+1=384，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5dqygT0fcBW1mThPoIMON-25XBUpAACvBFrG364UVaas4JYRKgKQQEAAwIAA3kAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，可以构造出全向右的树。</p><p>对于 B，假设前序遍历为 1,2,3,4，中序遍历为 2,3,4,1，可以绘制出树，并且可以确认后序遍历确实是 4,3,2,1</p><p>对于 C，假设前序遍历为 1,2,3,4，中序遍历为 3,2,4,1，可以的到后序遍历为 3,4,2,1。</p><p>对于 D，可以构造全向左的树。</p><p>先序/后序/层次遍历和中序遍历可以确认一棵树</p><p>本题就是一个个去判断，主要是恶心。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5hqygUEbnEm8KxkK5Qe8j3ysi307gACvRFrG364UVY2kVoahZ4QVwEAAwIAA3kAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 D。</p><p>这类题使用特值法会特别快，假设有一棵树，如图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5lqygXMWLK5j_rho5mq2xLyOb4bdQACvxFrG364UVZIxtWgKwza0gEAAwIAA3cAAz0E" alt="6 解" /><figcaption>6 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5pqygXevZrWe8OxO5JxHAABgyt8_Q0AAsARaxt-uFFWR6Zbd04Wp9IBAAMCAAN5AAM9BA" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 A。</p><p>绘制出 A 对应的树求其中序遍历序列，发现 94 冲突。</p><p>二叉排序树，我认为这类题求中序遍历比我一开始想的绘制树取硬想来的快很多。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5tqygYHtcKWOY7frf-UZ9eXB0uklQACwRFrG364UVagSdGQGc6GiwEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 D。</p><p>本题应该选 C。</p><p>简单路径的意思是没有重复结点的路径，1 显然正确；对于 2 显然错误，对于 3 显然正确，所以应该选 D。</p><p>因为上面的解释，回路是包含自己本身的，所以 1 是错的。</p><p>多用特值法举例。</p><p>需要注意，邻接矩阵存储稀疏图会有大量的 0（0 也是数据）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA5xqygZozgR1tWNQnD92XPQZAzDICQACwxFrG364UVZOxuq-dGPSlwEAAwIAA3kAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，装填因子越大，说明元素越多，越容易冲突，所以 1 错误。</p><p>对于 2 和 3 显然正确。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA51qygcm5Suwzucq0IIGnVuaRYU_HgACxBFrG364UVbiBpNl07B3wgEAAwIAA3kAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 A。</p><p>快排只能用顺序存储，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA55qygdI2tF5Gychg96uUgrFZ4zhFAACxRFrG364UVabfm1hhEIxtQEAAwIAA3kAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 B。</p><p>如图所示，将 18 插入尾巴，先和 10 比较，交换，然后和 25 比较，不交换。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA59qyge3kmuUyt1dcRkhoXfu9cDroQACxhFrG364UVbnziE--xM56gEAAwIAA3gAAz0E" alt="11 解" /><figcaption>11 解</figcaption></figure><p></p><p>这就是前面说的，需要注意即使不换也要比较。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6BqygfJDPhzwfZvi1yDXQmgDGhF1wACxxFrG364UVaH1PwlShleUwEAAwIAA3kAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 D，背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6FqygfchQJLUApH6h-vMVpn1wILAgACyBFrG364UVbjCW8nY-AJ3AEAAwIAA3kAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 A。</p><p>符号位：1</p><p>8.25=1000.01=1.00001×2^3，所以阶码为 3+127=130=1000,0010B。</p><p>尾数为 0001。</p><p>拼起来，也就是 1100,0001,0000,0100,0000,0000,0000,0000B=C104,0000H，也就是 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6Jqygizp9VgmB8YrST3xgd5o_QuuAACyhFrG364UVbwnDYqZKlXzwEAAwIAA3kAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 B。</p><p>但是注意，CDROM 可以随机读，不能随机写。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6NqygjfejxfEEoGygH1gb1-XiQIcAACyxFrG364UVaSoth9eer_5AEAAwIAA3kAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 D。</p><p>由于存储器按字节编址，贮存空间大小为 64MB，可知需要 26 位。后面的是干扰条件，因为 MAR 是硬件，是寻址能力。</p><p>后者类似于加内存条。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6RqygxwAktlWpYMFMKNmg7n3yp5dgAC0BFrG364UVbr3BDrhwABSdoBAAMCAAN5AAM9BA" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题属于背书题，选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6VqygyAV3P_OmlPfEglkXJfFt63HQAC0RFrG364UVZBmNjnOGICDgEAAwIAA3kAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 C。</p><p>无符号数看 CF 位有没有溢出，此外还要比较零，所以取 CF 和 ZF 标志位。</p><p>由于是大于，所以 CF 应该不溢出，为 0，且 ZF 不等于 0，也就是 ZF=0，也就是 CF 和 ZF 同时为 0 的时候为真。</p><p>本题背书 + 使用代入法即可很轻松地解出来。</p><p>当然，这类题大题也有可能考，根据学过的数字电路知识解释就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6Zqyg3E318uja0vsTewO4uZ-FYmvwAC1xFrG364UVa3KFGqElt94wEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 D。</p><p>本题属于背书题，流水线和 RICS 相关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6dqyg6IeZgJOhYGVSrX4MCAkcRQbgAC2RFrG364UVY3hAiXJ89i-wEAAwIAA3kAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，由于没有 cache，所以地址转换之后必须去内存读数据。</p><p>对于 B，没有采用超标量等技术，显然是对的。</p><p>对于 C，即使是空操作指令，PC 也会 + “1”</p><p>对于 D，开中断显然可以被打断。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6hqyg9C7haZKBpsPMRcNILCb7BUdAAC3RFrG364UVaOGCGNF2biRwEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 C。</p><p>总线分为数据总线，地址总线和控制总线，数据总线是双向的，地址总线是单向的，控制总线有的是双向的，有的是单向的。</p><p>对于控制总线，只会传输信号，例如读写信号，时钟同步，中断信号等，而对于数据都是走的数据总线。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6lqyhBUUs8Dljq55wnS9iBi1iU-EQAC3xFrG364UVYGcPkW0xg51QEAAwIAA3kAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 D。</p><p>1 表示不能打断我，0 表示可以打断我，为了防止同级自身无限递归嵌套，所以自己要把自己屏蔽了。</p><p>这个我一直搞混，属于我自己比较生的考点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6pqyhHviSP1SWgM8Gz4v_CX_EEeWwAC4xFrG364UVasF-2a5vxfMgEAAwIAA3kAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 C。</p><p>假设总共处理 1s，查询一次所需要的时间是 500/50M=10/M=10us。</p><p>由于总共需要查询 200 次，所以总共需要的时间是 2000us=2ms=0.002，所以应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6tqyhJWz7UFiHTaex9jshLiJnXXkgAC5RFrG364UVapLMLPFf-D1AEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 B，这道题不严谨，不用在意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA6xqyhJw9CEiEeHjNtn2O9ry8QsCqgAC5hFrG364UVaW0gXF0-5hGwEAAwIAA3gAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 A。</p><p>不知道该怎么解释，很神秘。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA61qyhKfpY9dwuDCpyChq8Asryoy2AAC5xFrG364UVaYWu_xNF0H0gEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 D。</p><p>线程之间有独立的栈指针，可以独立占有 CPU 运行，其他基本都是进程的。</p><p>线程与进程共享的是什么，属于重难点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA65qyhLgysuDSXyGcBhTn9Gl1BthBgAC6RFrG364UVZg_avbTYy6gAEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题套到 scanf 经典模型去理解，当然这些背书是可以背到的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA69qyhQQlRtnxsD5Yz4ql63GkuicMwAC6hFrG364UVZ-gTQdPVeR8wEAAwIAA3kAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 D。</p><p>这道题是已经帮忙算好了，可用资源减去尚需分配，显然只有 P1 才可以，分配给 P1 后，可用资源变为 2,2,1，此时可以分配 P4，分配完之后可用资源变成 2,2,2。然后就分配不了了，所以选择 D。</p><p>死锁避免的解决方法，死锁避免的计算。</p><p>这类题不会难，主要还是小心谨慎。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7BqyhTFp1xBuNIMzLcO2aHGOVT76QAC7RFrG364UVai4SXEFQXOEQEAAwIAA3kAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，假设页表已经满了，此时需要替换一个页，1,2,3 都会发生。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7FqyhUAAaqxPzJeSGBqH1KfgQpTK8UAAu4Raxt-uFFWcOdMj_vttCcBAAMCAAN4AAM9BA" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 A。</p><p>系统发生抖动的主要原因是 CPU 很闲，内存 - 磁盘一直在缓入缓出，解决的根本办法只有扩大内存和撤销进程，所以应该选 A。</p><p>对于 B 治标不治本。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7JqyhVA-E9bb2QS-WRWghcqN77n-gAC7xFrG364UVZmrGeJq3LTewEAAwIAA3kAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 C。</p><p>这道题很阴，前面说了那么多废话，然后最后问逻辑地址。</p><p>逻辑地址形成是链接。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7NqyhVtD6HyKPGOCsl2YoddN781LQAC8RFrG364UVbm7AOdTdP77gEAAwIAA3kAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 B</p><p>单缓冲区双缓冲区的辨析，见下图：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7RqyhdPAAEK_XGWA_DYeFTchDXd0dEAAvMRaxt-uFFWUfidrqzvkawBAAMCAAN5AAM9BA" alt="31 解" /><figcaption>31 解</figcaption></figure><p></p><p>这类题王道书上有很多。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7VqyhdlcB4iKN4N0_R1aEVRSnsKLQAC9BFrG364UVZf7mGQujLxjQEAAwIAA3kAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题的解题方法可以是先标号，也就是左侧标 1,2,3，右侧标 4,5,6，然后考虑不同的顺序对结果的影响。</p><p>假设执行顺序为 1,2,3,4,5,6，那么 x 值为 1。</p><p>假设执行顺序为 1,4，然后 3 是最后执行的，那么 x 值为 2；同理，执行顺序为 1,4，然后 6 是最后执行的，那么 x 值为 0</p><p>综上，应该是 0,1,2，不可能是 -1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7ZqyhgpFwZODuUa692IQFTOK3iQYwACAxJrG364UVaf5Fgir74gewEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题，需要区分 OSI 和 TCP/IP。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7dqyhhZZlSojcHbCg_Ivatrq-Ag0gACBRJrG364UVZxRwjlNOAxsgEAAwIAA3kAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题没说最大，所以按照正常算就好了，2400=Blog2 4，所以 B=1200</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7hqyhiJmxanFXPu3UChvF__VsgxYwACBxJrG364UVZAWixKiaYMYAEAAwIAA3kAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 B。</p><p>选择重传协议没有累计确认，而 0 和 2 超时，没提到 3，所以只用重传 0 和 2 就可以了，也就是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7lqyhi8KB8zBNf16DHAXbdTQEWpOQACCBJrG364UVZMdSg05frafwEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 D，属于背书题。</p><p>CSMA/CA 协议用于无线网传输，使用类似停止等待协议的机制。而 CSMA/CD 协议不需要确认（因为用有线，几乎不会出错）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7pqyhk5Oh9W0jb1_CpaGynpy7yYJQACCxJrG364UVaGbi3ZZOejTwEAAwIAA3kAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 D。</p><p>首先排除 A 和 B。</p><p>这道题考的是路由聚合，将 R2 连接的左右两个子网聚合，可得 192.168.2.0/24，也就是对应的 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7tqyhmybZet-M2zox6Kndv1OjhWpgACEhJrG364UVaePqPBXQQAAasBAAMCAAN5AAM9BA" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于该子网，后者 IP 分组是一个广播地址，所以应该是 2 个主机。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA7xqyhn82tJLnn2oGsibmn5kHuUXoQACExJrG364UVbIuzO2iJ1U3wEAAwIAA3kAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 C。</p><p>首先确认乙的 ack，乙的 ack 意思是我期待你接下来要发什么，乙已经接收到 11220，所以期待收到 11221，所以 BD 可以排除。</p><p>由于是建立 TCP 连接，所以显然是 C。</p><p>这类题非常常见，可以注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA71qyhpbLX3kghzuHh4JnfGKF0F76wACFBJrG364UVZnYqBmdU8grgEAAwIAA3kAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 B。</p><p>第三个段的初始序号为 900，那么第 2 个段的初始序号为 500，第一个段的初始序号为 200，仅收到第 1 和第 3 段，那么接收方的 ack 会始终要发送方发第 2 段的数据，也就是 500。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA75qyiQOKNTig9fjtFQLu-8Roo0evwACLBJrG364UVZQRbctNmNbiAEAAwIAA3kAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Fqyi8pjcVa5i3G1lJEMcUi1-aJdgAC3RJrG364UVYj3x5nsskBZAEAAwIAA3kAAz0E" alt="41 解" /><figcaption>41 解</figcaption></figure><p></p><p>无向图里，对角线为 0，没连接的线为 0；有向图里，对角线为 0，没连接的线为无穷。</p><p>绘制数据结构的题以及横着存储的题，其实不会难，主要是要捋清楚。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA79qyiRwp-BB3oHKm4mCJ8nSv_JNCAACLRJrG364UVbC7-kE_eEkDQEAAwIAA3kAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>方法 1：</p><ol>
<li>设一个长度为 2L 的数组 S，将 S1 复制到 S 的前半部分，S2 复制到 S 的后半部分</li>
<li>对 S 进行快速排序</li>
<li>S[L-1] 即为题目要求的数</li>
</ol><p>方法 2：</p><ol>
<li>设一个长度为 L 的数组 S</li>
<li>取 i，j，k，初值设 0，分别指向 S1，S2，S</li>
<li>如果 S1[i]&lt;=S2[j]，S[k++]=S1[i++]；</li>
<li>如果 S1[i]&gt;S2[j]，S[k++]=S1[j++]</li>
<li>重复上述过程，直至 k 的值=L</li>
<li>S[L-1] 即为题目要求的数</li>
</ol><p>方法 3：</p><ol>
<li>设一个长度为 L 的数组 S，以及一个变量 pre</li>
<li>取 i，j，k，初值设 0，分别指向 S1，S2，S</li>
<li>如果 S1[i]&lt;=S2[j]，pre=S1[i++]；</li>
<li>如果 S1[i]&gt;S2[j]，pre=S1[j++]</li>
<li>重复上述过程，直至 k 的值=L</li>
<li>pre 即为题目要求的数</li>
</ol><p>方法 4：</p><p>利用二分法。</p><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>patition</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>l</span><span>,</span></span><span>int</span><span><span> </span><span>r</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> p</span><span>=</span><span>A</span><span>[l];</span></div></div><div><div><div>3</div></div><div><span>    </span><span>while</span><span>(l</span><span>&lt;</span><span>r){</span></div></div><div><div><div>4</div></div><div><span>        </span><span>while</span><span>(</span><span>A</span><span>[r]</span><span>&gt;=</span><span>p</span><span>&amp;&amp;</span><span>l</span><span>&lt;</span><span>r){</span></div></div><div><div><div>5</div></div><div><span><span>            </span></span><span>r</span><span>--</span><span>;</span></div></div><div><div><div>6</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>7</div></div><div><span>        </span><span>A</span><span>[l]</span><span>=</span><span>A</span><span>[r];</span></div></div><div><div><div>8</div></div><div><span>        </span><span>while</span><span>(</span><span>A</span><span>[l]</span><span>&lt;=</span><span>p</span><span>&amp;&amp;</span><span>l</span><span>&lt;</span><span>r){</span></div></div><div><div><div>9</div></div><div><span><span>            </span></span><span>l</span><span>++</span><span>;</span></div></div><div><div><div>10</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>        </span><span>A</span><span>[r]</span><span>=</span><span>A</span><span>[l];</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>    </span><span>A</span><span>[l]</span><span>=</span><span>p;</span></div></div><div><div><div>14</div></div><div><span>    </span><span>return</span><span> l;</span></div></div><div><div><div>15</div></div><div><span>}</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>void</span><span> </span><span>Qsort</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>l</span><span>,</span></span><span>int</span><span><span> </span><span>r</span><span>){</span></span></div></div><div><div><div>18</div></div><div><span>    </span><span>if</span><span>(l</span><span>&gt;=</span><span>r){</span></div></div><div><div><div>19</div></div><div><span>        </span><span>return</span><span>;</span></div></div><div><div><div>20</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>21</div></div><div><span>    </span><span>int</span><span> mid</span><span>=</span><span>patition</span><span>(A, l, r);</span></div></div><div><div><div>22</div></div><div><span>    </span><span>Qsort</span><span>(A,l,mid</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>23</div></div><div><span>    </span><span>Qsort</span><span>(A,mid</span><span>+</span><span>1</span><span>,r);</span></div></div><div><div><div>24</div></div><div><span>}</span></div></div><div><div><div>25</div></div><div>
</div></div><div><div><div>26</div></div><div><span>int</span><span> </span><span>solve1</span><span>(</span><span>int</span><span><span> </span><span>S1</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>S2</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>L</span><span>){</span></span></div></div><div><div><div>27</div></div><div><span>    </span><span>int</span><span> </span><span>S</span><span>[</span><span>2</span><span>*</span><span>L];</span></div></div><div><div><div>28</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>L;i</span><span>++</span><span>){</span></div></div><div><div><div>29</div></div><div><span>        </span><span>S</span><span>[i]</span><span>=</span><span>S1</span><span>[i];</span></div></div><div><div><div>30</div></div><div><span>        </span><span>S</span><span>[i</span><span>+</span><span>L]</span><span>=</span><span>S2</span><span>[i];</span></div></div><div><div><div>31</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>32</div></div><div><span>    </span><span>Qsort</span><span>(S, </span><span>0</span><span>, </span><span>2</span><span> </span><span>*</span><span> L </span><span>-</span><span> </span><span>1</span><span>);</span></div></div><div><div><div>33</div></div><div><span>    </span><span>return</span><span> </span><span>S</span><span>[L</span><span>-</span><span>1</span><span>];</span></div></div><div><div><div>34</div></div><div><span>}</span></div></div><div><div><div>35</div></div><div>
</div></div><div><div><div>36</div></div><div><span>int</span><span> </span><span>solve2</span><span>(</span><span>int</span><span><span> </span><span>S1</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>S2</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>L</span><span>){</span></span></div></div><div><div><div>37</div></div><div><span>    </span><span>int</span><span> </span><span>S</span><span>[</span><span>2</span><span>*</span><span>L];</span></div></div><div><div><div>38</div></div><div><span>    </span><span>int</span><span> i</span><span>=</span><span>0</span><span>,j</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>39</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> k</span><span>=</span><span>0</span><span>;k</span><span>&lt;</span><span>L;k</span><span>++</span><span>){</span></div></div><div><div><div>40</div></div><div><span>        </span><span>if</span><span> (</span><span>S1</span><span>[i]</span><span>&lt;=</span><span>S2</span><span>[j]){</span></div></div><div><div><div>41</div></div><div><span>            </span><span>S</span><span>[k]</span><span>=</span><span>S1</span><span>[i];</span></div></div><div><div><div>42</div></div><div><span><span>            </span></span><span>i</span><span>++</span><span>;</span></div></div><div><div><div>43</div></div><div><span><span>        </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>44</div></div><div><span>            </span><span>S</span><span>[k]</span><span>=</span><span>S2</span><span>[j];</span></div></div><div><div><div>45</div></div><div><span><span>            </span></span><span>j</span><span>++</span><span>;</span></div></div><div><div><div>46</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>47</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>48</div></div><div><span>    </span><span>return</span><span> </span><span>S</span><span>[L</span><span>-</span><span>1</span><span>];</span></div></div><div><div><div>49</div></div><div><span>}</span></div></div><div><div><div>50</div></div><div>
</div></div><div><div><div>51</div></div><div><span>int</span><span> </span><span>solve3</span><span>(</span><span>int</span><span><span> </span><span>S1</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>S2</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>L</span><span>){</span></span></div></div><div><div><div>52</div></div><div><span>    </span><span>int</span><span> pre</span><span>=</span><span>S1</span><span>[</span><span>0</span><span>];</span></div></div><div><div><div>53</div></div><div><span>    </span><span>int</span><span> i</span><span>=</span><span>0</span><span>,j</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>54</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> k</span><span>=</span><span>0</span><span>;k</span><span>&lt;</span><span>L;k</span><span>++</span><span>){</span></div></div><div><div><div>55</div></div><div><span>        </span><span>if</span><span> (</span><span>S1</span><span>[i]</span><span>&lt;=</span><span>S2</span><span>[j]){</span></div></div><div><div><div>56</div></div><div><span><span>            </span></span><span>pre</span><span>=</span><span>S1</span><span>[i];</span></div></div><div><div><div>57</div></div><div><span><span>            </span></span><span>i</span><span>++</span><span>;</span></div></div><div><div><div>58</div></div><div><span><span>        </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>59</div></div><div><span><span>            </span></span><span>pre</span><span>=</span><span>S2</span><span>[j];</span></div></div><div><div><div>60</div></div><div><span><span>            </span></span><span>j</span><span>++</span><span>;</span></div></div><div><div><div>61</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>62</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>63</div></div><div><span>    </span><span>return</span><span> pre;</span></div></div><div><div><div>64</div></div><div><span>}</span></div></div><div><div><div>65</div></div><div>
</div></div><div><div><div>66</div></div><div><span>int</span><span> </span><span>solve4</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>B</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>67</div></div><div><span>    </span><span>int</span><span> s1 </span><span>=</span><span> </span><span>0</span><span>, d1 </span><span>=</span><span> n </span><span>-</span><span> </span><span>1</span><span>;</span><span> // 序列 A 的起止下标</span></div></div><div><div><div>68</div></div><div><span>    </span><span>int</span><span> s2 </span><span>=</span><span> </span><span>0</span><span>, d2 </span><span>=</span><span> n </span><span>-</span><span> </span><span>1</span><span>;</span><span> // 序列 B 的起止下标</span></div></div><div><div><div>69</div></div><div><span>    </span><span>int</span><span> m1, m2;</span></div></div><div><div><div>70</div></div><div>
</div></div><div><div><div>71</div></div><div><span>    </span><span>while</span><span> (s1 </span><span>!=</span><span> d1 </span><span>||</span><span> s2 </span><span>!=</span><span> d2) {</span></div></div><div><div><div>72</div></div><div><span><span>        </span></span><span>m1 </span><span>=</span><span> (s1 </span><span>+</span><span> d1) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>73</div></div><div><span><span>        </span></span><span>m2 </span><span>=</span><span> (s2 </span><span>+</span><span> d2) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>74</div></div><div>
</div></div><div><div><div>75</div></div><div><span>        </span><span>if</span><span> (</span><span>A</span><span>[m1] </span><span>==</span><span> </span><span>B</span><span>[m2]) {</span></div></div><div><div><div>76</div></div><div><span>            </span><span>return</span><span> </span><span>A</span><span>[m1];</span><span> // 两个中位数相等，直接返回</span></div></div><div><div><div>77</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>78</div></div><div>
</div></div><div><div><div>79</div></div><div><span>        </span><span>if</span><span> (</span><span>A</span><span>[m1] </span><span>&lt;</span><span> </span><span>B</span><span>[m2]) {</span><span> // A 的中位数较小，舍弃 A 前半部分和 B 后半部分</span></div></div><div><div><div>80</div></div><div><span>            </span><span>if</span><span> ((s1 </span><span>+</span><span> d1) </span><span>%</span><span> </span><span>2</span><span> </span><span>==</span><span> </span><span>0</span><span>) {</span><span> // 元素个数为奇数</span></div></div><div><div><div>81</div></div><div><span><span>                </span></span><span>s1 </span><span>=</span><span> m1;</span><span>     // 包含中间点</span></div></div><div><div><div>82</div></div><div><span><span>                </span></span><span>d2 </span><span>=</span><span> m2;</span><span>     // 包含中间点</span></div></div><div><div><div>83</div></div><div><span><span>            </span></span><span>} </span><span>else</span><span> {</span><span>                 // 元素个数为偶数</span></div></div><div><div><div>84</div></div><div><span><span>                </span></span><span>s1 </span><span>=</span><span> m1 </span><span>+</span><span> </span><span>1</span><span>;</span><span> // 舍弃前半部分</span></div></div><div><div><div>85</div></div><div><span><span>                </span></span><span>d2 </span><span>=</span><span> m2;</span><span>     // 保留后半部分</span></div></div><div><div><div>86</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>87</div></div><div><span><span>        </span></span><span>} </span><span>else</span><span> {</span><span>             // B 的中位数较小，舍弃 B 前半部分和 A 后半部分</span></div></div><div><div><div>88</div></div><div><span>            </span><span>if</span><span> ((s1 </span><span>+</span><span> d1) </span><span>%</span><span> </span><span>2</span><span> </span><span>==</span><span> </span><span>0</span><span>) {</span><span> // 元素个数为奇数</span></div></div><div><div><div>89</div></div><div><span><span>                </span></span><span>d1 </span><span>=</span><span> m1;</span></div></div><div><div><div>90</div></div><div><span><span>                </span></span><span>s2 </span><span>=</span><span> m2;</span></div></div><div><div><div>91</div></div><div><span><span>            </span></span><span>} </span><span>else</span><span> {</span><span>                 // 元素个数为偶数</span></div></div><div><div><div>92</div></div><div><span><span>                </span></span><span>d1 </span><span>=</span><span> m1;</span></div></div><div><div><div>93</div></div><div><span><span>                </span></span><span>s2 </span><span>=</span><span> m2 </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>94</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>95</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>96</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>97</div></div><div><span>    </span><span>return</span><span> </span><span>A</span><span>[s1] </span><span>&lt;</span><span> </span><span>B</span><span>[s2] </span><span>?</span><span> </span><span>A</span><span>[s1] </span><span>:</span><span> </span><span>B</span><span>[s2];</span></div></div><div><div><div>98</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>解法 1，时间复杂度：O(nlogn)，空间复杂度：O(n)</p><p>解法 1，时间复杂度：O(n)，空间复杂度：O(n)</p><p>解法 1，时间复杂度：O(n)，空间复杂度：O(1)</p><p>解法 4，时间复杂度：O(logn)，空间复杂度：O(1)</p><p>方法四不管他，前三种得会。方法四是 ai 生成的，其他都是自己写的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Bqyi4kpHcYlq-alrbRVGgpvLsmJwAC2RJrG364UVbEmEJ2Al8-jQEAAwIAA3kAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>先分析：</p><p>134=128+6=1000,0110B</p><p>246=255-9=1111,0110B</p><p>R1 寄存器内保存的值是 1000,0110B，解释为 134</p><p>R2 寄存器内保存的值是 1111,0110B，解释为 246</p><p>R3 寄存器内保存的值是 1000,0110B，解释为 -128+6=-122</p><p>R4 寄存器内保存的值是 1111,0110B，解释为 -1-9=-10</p><p>R5 寄存器内的值解释为 134+256-246=144=128+16=1001,0000B</p><p>R6 寄存器内的值解释为 134+246-256=134-10=125=127-3=0111,1100B</p><p>R7 寄存器内的值解释为 -122+10=-112</p><p>R8 寄存器内的值解释为 -122-10+128=-132+128=-5</p><p>(1)</p><p>R1 内容是 86H</p><p>R5 内容是 90H</p><p>R6 内容是 7CH</p><p>(2)</p><p>m 值为 -122</p><p>k1 值为 -112</p><p>(3)</p><p>可以。</p><p>无符号数的减法等价于加上减数取补 +1，有符号数的减法等价于减数取反 +1。</p><p>无符号数和有符号数的加减法实质上过程是一样的，只是解释方式不一样。</p><p>(4)</p><p>无符号整数加减法通过 CF 位，如果 CF=1 那么发生溢出，如果 CF=0 那么不发生溢出。</p><p>有符号整数加减法通过 OF 位，如果 OF=1 那么发生溢出，如果 OF=0 那么不发生溢出。</p><p>（计算机内部如何判断，而不是人类如何判断）</p><p>最高位的进位和符号位的进位相同，则不发生溢出，相反则发生溢出。</p><p>上述程序中：</p><p>unsigned int z2=x+y</p><p>（题目要求的是带符号数，无符号数上面那俩都溢出了）</p><p>int k2=m+n;</p><p>发生溢出。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Jqyi9PT-7IfxXl5EdMtsMM_xdp0AAC3hJrG364UVZ_w4keh93zGgEAAwIAA3kAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>虚拟地址空间大小为 16MB，也就是 2^24 B，所以虚拟地址共有 24 位。</p><p>由于页面大小为 4KB，也就是 2^12B，所以页内地址是 12 位，所以虚页号有 24-12=12 位。</p><p>物理地址空间大小为 1MB，也就是 2^20B，所以物理地址共有 20 位。</p><p>由于页内地址占 12 位，所以页框号有 20-12=8 位。</p><p>(2)</p><p>物理地址空间为 20 位，cache 采用直接映射，共 8 行，需要 3 位存储。</p><p>主存与 cache 块交换大小是 32B，占 5 位。</p><p>所以 tag 号占 20-3-5=20-8=12 位。</p><p>所以 tag 号前 12 位，cache 占中 3 位，块内地址占后五位。</p><p>(3)</p><p>00,1C60H，取前三位为虚页号 001 访问主存，由于有效位为 1，所以可知在主存里。</p><p>由页号 001 得到物理页号 04，得到主存地址 0,4C60H。</p><p>0,4C60H=0000,0100，1100,0110,0000B，第 5-7 位为 cache 号，即 011，也就是 3 号 cache。比较 tag 号，自己的 tag 号为 04C，而题中第 3 行是 105，所有 cache 不命中。</p><p>(4)</p><p>四路组相联需要可以存放 8 个表项，所以总共有 2 组 TLB，需要 1 位 TLB 号。</p><p>所以虚拟地址空间前 11 位为 tag 号，tag 号后一位为 TLB 组号。</p><p>02,4BACH=0000,0010,0100,1011,1010,1100B.</p><p>可知在第 0 组 TLB。虚拟地址 tag 号为 000,0001,0010B=012H，对比 TLB 发现其有效位为 1。由于在 TLB 内必在页表内，所以必在主存。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Nqyi9u9iFh6s6Dq9rtJS_sWefwWQAC3xJrG364UVZDG8subEEaYQEAAwIAA3kAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>cobegin{</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>process 顾客i</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>P（座位）；</span><span> // 10</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>P（取号机）；</span><span> // 1</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>从取号机获取一个号码；</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>V（取号机）；</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>V（顾客数量）；</span></div></div><div><div><div>9</div></div><div><span><span>    </span></span><span>等待叫号；</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>P（营业员空位）；</span><span>// 0</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>V（座位）</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>获取服务；</span></div></div><div><div><div>13</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>14</div></div><div><span><span>  </span></span><span>process 营业员</span></div></div><div><div><div>15</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>16</div></div><div><span>    </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>17</div></div><div><span><span>      </span></span><span>P（顾客数量）；</span><span>// 0</span></div></div><div><div><div>18</div></div><div><span><span>      </span></span><span>叫号；</span></div></div><div><div><div>19</div></div><div><span><span>      </span></span><span>V（营业员空位）；</span></div></div><div><div><div>20</div></div><div><span><span>      </span></span><span>为顾客服务；</span></div></div><div><div><div>21</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>22</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore seat</span><span>=</span><span>10</span><span>;</span></div></div><div><div><div>2</div></div><div><span>semaphore mutex</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>3</div></div><div><span>semaphore service</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div><span>semaphore cust</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>cobegin{</span></div></div><div><div><div>7</div></div><div><span><span>  </span></span><span>process 顾客i</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>9</div></div><div><span>    </span><span>P</span><span>(seat);</span><span> // 10</span></div></div><div><div><div>10</div></div><div><span>    </span><span>P</span><span>(mutex);</span><span> // 1</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>从取号机获取一个号码;</span></div></div><div><div><div>12</div></div><div><span>    </span><span>V</span><span>(mutex);</span></div></div><div><div><div>13</div></div><div><span>    </span><span>V</span><span>(cust);</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>等待叫号;</span></div></div><div><div><div>15</div></div><div><span>    </span><span>P</span><span>(service);</span><span>// 0</span></div></div><div><div><div>16</div></div><div><span>    </span><span>V</span><span>(seat);</span></div></div><div><div><div>17</div></div><div><span><span>    </span></span><span>获取服务;</span></div></div><div><div><div>18</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>19</div></div><div><span><span>  </span></span><span>process 营业员</span></div></div><div><div><div>20</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>21</div></div><div><span>    </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>22</div></div><div><span>      </span><span>P</span><span>(cust);</span><span>// 0</span></div></div><div><div><div>23</div></div><div><span><span>      </span></span><span>叫号;</span></div></div><div><div><div>24</div></div><div><span>      </span><span>V</span><span>(service);</span></div></div><div><div><div>25</div></div><div><span><span>      </span></span><span>为顾客服务;</span></div></div><div><div><div>26</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>27</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>28</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>本题为理发师问题，属于生产者消费者问题的变种，历年考题只考过这一题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Rqyi9_4vzxDVtwJxxay2oJTdsizAAC4BJrG364UVY1XE6Xnc-czAEAAwIAA3kAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>连续存储。</p><p>使用连续存储具备随机访问的特点，减少磁盘移动距离。</p><p>一次性写入数据，链式存储可以一次性写入数据，必须得慢慢写。</p><p>采用索引结构额外需要索引块，对于不可修改的小文件存储开销太大。</p><p>起始块号，长度。</p><p>(2)</p><p>集中存储。</p><p>集中存储在查找 FCB 的时候可以减少磁头移动距离和磁盘 IO。（扫到了答案才想出来的）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Vqyi-azQawSAvIO13vPbh_2HB9CAAC4RJrG364UVYaXfcHz8_i6AEAAwIAA3kAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>首先分析本题：</p><p>00 21 27 21 51 ee 为目的 mac 地址，本题的目的 mac 地址应该是 R 的。</p><p>00 15 c5 cl 5e 28 为源 mac 地址。</p><p>08 00 为类型号</p><p>45 为版本号和头部长度</p><p>00 为服务类型</p><p>01 ef 为总长度</p><p>11 3b 为标识</p><p>40 00 为标志和片偏移</p><p>80 为 TTL</p><p>06 为协议</p><p>ba 9d 为头部校验和</p><p>Oa 02 80 64 为源 IP 地址</p><p>40 aa 62 20 为目的 IP 地址</p><p>(1)</p><p>Web 服务器 IP 地址即本题的目的地址，也就是 40H.AAH.62H.20H</p><p>该主机默认网关 MAC 地址即 R 的 Mac 地址，也就是 00-21-27-21-51-ee</p><p>(2)</p><p>ARP 协议</p><p>ff-ff-ff-ff-ff-ff</p><p>(3)</p><p>图中显然是已经建立好了 TCP 连接开始传输 HTTP 数据了。</p><p>首先花费 1RTT 的时间得到 html，然后花 5RTT 的时间请求 5 次小图像，总共 6RTT。</p><p>(4)</p><p>TTL，目的 IP 地址，头部校验和</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8Zqyzh01Or0OTh7GeAUKcezjNZRmwACqhNrG364WVYc8JbQKO_BeAEAAwIAA3kAAz0E" alt="47 参考资料" /><figcaption>47 参考资料</figcaption></figure><p></p><p>408 不需要背诵 IP 和 TCP 的数据报，但是需要背以太网的。</p></section><section><h3>408 2012 真题 2 刷<a href="#408-2012-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为 146</li>
<li>第 43 题 -3，第 2 问没看清楚题目，题目说的是在 cache 缺失的基础上；第 4 问则是一个体是按 4B 算，而不是 16B</li>
<li>第 47 题 -1，第 2 问分析正确，答案写错了（1,0000B 应该是 16，而不是 32）</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8hqy0kgq8gH84zvzG6Z4GlNWmXHfQAC6RRrG364YVabWnas4psQVwEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 B。</p><p>阶乘，属于熟知。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8lqy0lb1Rj_jxM5Nxt3IWsYfCQKbgAC6hRrG364YVada8w3gav1MAEAAwIAA3kAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 A。</p><p>模拟过程过于混乱，就不放草稿纸过程了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8pqy0l6FQvlupLbSBKNaK7jM_fucQAC7BRrG364YVaP4KsuOG3LJAEAAwIAA3kAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 A。</p><p>本题属于非常规题，不过可以确定根节点是 a。</p><p>由前者为根左右，后者为左右根可知紧邻着 a 的 e 必然为其孩子（不一定是左孩子还是右孩子），并且可以得出无论 e 是左孩子还是右孩子，a 都不存在另一边了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8tqy0oDZxtjy62SX_uYIPSEmxj8XwAC8RRrG364YVbCPAOipBMJCgEAAwIAA3kAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 B。</p><p>最小结点平衡二叉树，高度为 6 也就是第 8 个斐波那契数列的值 -1。</p><p>0,1,1,2,3,5,8,13,21</p><p>所以是 21-1=20。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA81qy0qsAVYEInKWYgKEViifzL7zhQAC8xRrG364YVYt2gPwd7dIzAEAAwIAA3kAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 C。</p><p>广度优先遍历，考虑得到结点 A 的，那么只需要遍历 A 的边表结点就可以得到 A 的邻近结点，根据其邻近结点，遍历其邻近结点的边表结点即可。</p><p>需要注意的是，访问某个结点的时间复杂度是 O(1)，也就是可以随机访问。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA85qy0rXO0wP_lSH0xFEj1W0BJLCdQAC9BRrG364YVaJIyCqOPOm8wEAAwIAA3kAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 C。</p><p>主对角线以下元素均为 0，也就意味着至少有一个元素入度为 0。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA89qy0sOWDKoIEw3vZrNEQNUoYbrNgAC9RRrG364YVZIDSTD0IYWRQEAAwIAA3kAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题不需要用手算法，不过手算法需要会。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9Bqy0swOnzQxZWu8WCrOjIuE5SbWwAC9hRrG364YVbDQ7Jl6eg8TAEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 A。</p><p>1 显然是正确的。</p><p>对于 2，假设所有权值都是一样的，或者权值相同的构成了环然后额外出去一个，都不行，所以 2 是错的。</p><p>对于 3，prim 算法从不同顶点开始得到的树不一定相同，同样考虑一个完全图，权值都是一样的，此时显然可能性很多。</p><p>对于 4，总不是错误的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9Fqy0vz-JGtXIesRM98JknNl_pJtgAC-BRrG364YVYTF6x2AuKjlQEAAwIAA3kAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 D。</p><p>删除 B 树的结点，先看左右兄弟能不能补，本题可以补，所以从所以把 65 从父节点换下来，把 62 变成父节点。</p><p>所以最右结点关键字是 65。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9Jqy0xU8kivGvSUjLAaOINXHZEJKgAC-RRrG364YVZmW8KzY0oT5wEAAwIAA3kAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 1，简单选择排序的原理是每次动待排序数组中选择一个最小的换上去，所以 1 可以选</p><p>对于 2 希尔排序只能在当前 d 里选，不一定。</p><p>对于 3，每次都确认一个元素的最终位置，将之划分为比他小的和比他大的</p><p>对于 4，堆排序每次都选择一个最大的元素排至队尾，所以可以</p><p>对于 5，二路归并不一定。</p><p>所以应该选 1,3,4，也就是 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9Nqy0zeS9OJStcD-kkd5vMD2t8UGgAC_BRrG364YVZiWi_pfjF3RgEAAwIAA3kAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 D。</p><p>折半插入排序只是可能减少选取到待排序数组的某个数，交换次数等没有任何差别。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9Rqy005xu8sH-5zL4dOwifMXD0yBAAC_hRrG364YVbyjvVn5TAW3wEAAwIAA3kAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 D。</p><p>IO 时间为 10s，假设总任务量为 N，那么 N/CPU1 主频=90，CPU2 主频=CPU1 主频×1.5，所以 N/(CPU1 主频×1.5)=60s。</p><p>所以新的程序耗时 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9Vqy092Nif9RXSra_dhUoZ9DrWVBgADFWsbfrhhVpqvUu-oAW8GAQADAgADeQADPQQ" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 B。</p><p>unsigned short x=65530=65535-5=1111,1111,1111,1010B=FFFAH.</p><p>unsigned int 直接进行 0 扩展，也就是 B。</p><p>如果本题是 int x，那么也就是先 0 扩展为 unsigned int，然后按照 int 解释，所以也是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9Zqy1F7rfto_0UUoqrAQarfTIlgAgACBhVrG364YVawhDx6TJzt8wEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 D。</p><p>这类题用二进制做，符号位为 0，阶码为 1111,1110，尾数 23 位全为 1。</p><p>254-127=127</p><p>所以是 1.111（23 个 1）<span><span>×2127\times 2^{127}</span><span><span><span></span><span>×</span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>127</span></span></span></span></span></span></span></span></span></span></span></span>，也就是 1111（24 个 1）<span><span>×2104\times 2^{104}</span><span><span><span></span><span>×</span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>104</span></span></span></span></span></span></span></span></span></span></span></span>。</p><p>所以也就是 2^104 加到 2^127=2^128-2^104，也就是 D。</p><p>需要注意阶码特殊情况。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9dqy1kAAeoUuMrCMkmyXwrP_oDwvVAAAhwVaxt-uGFWiLTbWqVQl7QBAAMCAAN5AAM9BA" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 D。</p><p>按字节编址，以 int 为边界，也就是 int 开头是 C008H，char 的开头是 C00CH，由于需要边界对齐，所以 C00DH 为空，record.c 应该是 C00EH。</p><p>本题采用小短发，所以 273=256+16+1=1,0001,0001B=0000,0111H。</p><p>所以低位应该是 11H。</p><p>综上所述，应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9hqy1lFteB9IFvsgi-KvMdtptQo9wACHRVrG364YVb2kaJYHcUk0wEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A，flash 存储器读速度接近 ram，写速度接近 rom，所以错误。</p><p>17 猎奇（出题组的锅），直接过。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9pqy1pAimY2q66gAerAl6Wn_bN8OwACHxVrG364YVbatn-NgQkgLwEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 C。</p><p>分别包含 7,3,12,5,6 个微命令，每个微命令需要额外一个 1 个停机位，所以总共就是 8,4,13,6,7，也就是 3,2,4,3,3，加起来是 15。</p><p>此外可以注意一下其他两种编码方式，直接控制（编码）法，字段直接编码法，字段间接编码法。</p><p>对这道题，如果采用字段直接编码法，也就是几个指令全都加起来即可，也就是 7+3+12+5+6=33。</p><p>本题推导不出来字段间接编码，不过可以做出如下修改：</p><p>微指令中设有控制字段 A 和操作字段 B。已知字段 A 用 2 位代码作为模式控制信号；字段 B 在字段 A 的不同模式下，可以分别解释为 4 组互不相容的微命令集。若这 4 组微命令集分别包含 7, 5, 6, 8 个互斥微命令，且各组均需包含“不操作”状态，则字段 A 和字段 B 的总位数至少为多少位？</p><p>这道题是 2 位 + 后面最大的也就是 4 位（因为 8+1），总共 6 位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9tqy1xizIthzG4f6mlGuLxi63POsAACKhVrG364YVZAiWHnPBQbDgEAAwIAA3kAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 C。</p><p>传送 128bit 的数据，传数据本身需要花费 128/32=4 个时钟周期，而支持促发，传输一个地址，需要 1 个时钟周期，总共需要 1 个，所以总计是 5 个时钟周期。</p><p>5/100M=50ns。</p><p>20 超纲。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA9xqy113N8DT-Oe3VxnOzS9a-FdhEAACKxVrG364YVaIAAGJAbnbZGwBAAMCAAN4AAM9BA" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 D。</p><p>控制线上传输的一般是信号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA-tqy2qd3wt6hJPb9fUXPyXaTiV_VgACphVrG364YVY5TUkuzEPcFgEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题是背书题，关中断，保存断点，形成中断服务程序入口并送入 PC，也就是 1 和 3，通用寄存器是操作系统做的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA-xqy2s7t4loB1LP-HK1oCSHlNX8KQACqBVrG364YVZwiWU-qjs85AEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，系统调用的发生在用户态，执行在内核态，对于 B 和 D 也是如此。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_Rqy2uI9YjHZ8ISdO2bJsPe3yMUXwACqhVrG364YVYRPnZwh0AMNQEAAwIAA3kAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 B。程序状态字寄存器只有中断需要保存（因为要切换进程），而子程序调用不需要切换进程。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_Vqy2u5hsdghEnsOkfxSSzRKxC9cQACqxVrG364YVaM9tKdxCqXIwEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 C 和 D，虚拟存储不受任何东西的限制，对于 A 和 B，虚拟内存只能基于非连续的分配，如果是基于连续的，虚拟存储都是从逻辑 0 开始，那么必然会炸，所以需要分配地址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_Zqy2wtghon22NNUzot_qmFTMqf1QACrBVrG364YVZDBk1UISHmqgEAAwIAA3kAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_dqy2xTFZ4pA1vFb5XenTynQl4uvQACrRVrG364YVZSrCUpNP9wGAEAAwIAA3kAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 D。</p><p>本题也是比较经典的题，已分配资源总数为：</p><p>R1 已分配：3+4+4+2+3=16</p><p>R2 已分配：2+1=3</p><p>R3 已分配：3+3+5+4+4=19</p><p>所以，R1 还剩下 2，R2 还剩下 3，R3 还剩下 3，得到三元组 2,3,3</p><p>P0 资源还需要 2,3,7</p><p>P1 资源还需要 1,3,3</p><p>P2 资源还需要 0,0,6</p><p>P3 资源还需要 2,2,1</p><p>P4 资源还需要 1,1,0</p><p>2,3,3 显然可以从 P4 开始分配，不过 P4 题目选项里没有。</p><p>分配给 P0，显然不行</p><p>分配给 P1，得到新的三元组 5,5,6，分配给 P0，显然不行。</p><p>分配给 P2，显然不行。</p><p>分配给 P3，得到新的三元组 6,3,7；分配给 P4，得到新的三元组 9,4,11；分配给 P2，得到新的三元组 13,4,14；分配给 P1，得到新的三元组…</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_hqy2xj3TjkRtVANTKz_5yn1eAHGQACrhVrG364YVY6jE36daR5XAEAAwIAA3kAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 A。</p><p>open 和 read 的辨析，这个属于重难点。</p><p>对于 1，文件数据不在内存里，需要从运行态进入阻塞态来获取数据。</p><p>对于 2，请求 read 之后，CPU 进入内核态 IO</p><p>对于 3，read 不需要包含文件名，因为 open 返回了文件描述符，去文件打开表里拿文件描述符就可以了。</p><p>所以，1 正确，2 正确，应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_lqy2zJO_u-_yojfOFQNcfzjfEowQACsBVrG364YVaMCoTrSguPxgEAAwIAA3kAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题最重要的是要画图，尤其是要注意我红笔圈出来的东西得计算上。</p><p>我特别容易忽略计算这一块内容。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDlqzPVpQFALLGJLgJXv9BG---DihwAC2hJrG8y1YVZfy89hbvj5qwEAAwIAA3kAAz0E" alt="29 解" /><figcaption>29 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_pqy20tc2ft7XZn_NxscI2Y7nJiUgACsRVrG364YVYyJ52tJE5zOgEAAwIAA3kAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，进程结束也就是从运行态变成终止态，此时处理机空出来了，所以需要调度。</p><p>对于 B，创建新进程之后，需要从创建态调度到就绪态。</p><p>对于 C，进程处于临界区不意味着其不可以调度，只是其占有的设备不可以被释放。</p><p>对于 D，系统调用返回用户态，可以理解为 scanf 结束后，此后处于正常运行阶段，所以按照普通进程来考虑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_tqy224YUQHWv2S4-ATyh46ZmtGogACsxVrG364YVZZyqGl82bVkQEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A，这句话是对的，进程是资源分配的单位。</p><p>对于 B，进程是资源分配的基本单元，线程是调度的基本单位。</p><p>对于 C，系统级线程需要内核支持，用户级线程不需要内核支持</p><p>对于 D，同一个进程中的各个线程只有自己的栈空间，地址是依附于进程的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_xqy24QOSmxthUl7q8x6Ll2xPWsuAACtBVrG364YVZS4z0GNkgmgwEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 B，磁盘设置多个分区可以理解为 windows 的分区，也就是分为 C 盘 D 盘，显然对磁盘设备 IO 性能毫无影响。</p><p>对于 A，重排 IO 次序例如把杂乱无章的顺序改为顺序，这样就可以减少磁臂移动</p><p>对于 C，预读也就是在将要访问之前，从磁盘提前把数据读入内存，滞后写也就是设置脏位，或者在关闭文件的时候不立刻写入，因为可能会在短时间内再次打开</p><p>对于 D，假设是链式分配，链式分配对应的磁盘块对应到磁盘上可能会导致多次移动。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_1qy27p_WF9PHnHDp14wkqXVCRR1QACtxVrG364YVb9Y2qnCyG34QEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题是背书题，选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_5qy28AAZ3ujMf7mbU1wo8gL1nANZAAArgVaxt-uGFWPuzuR6CXdAYBAAMCAAN4AAM9BA" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题属于背书题，选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA_9qy28RWaB9QGFRekkIK7ImitkX9QACuRVrG364YVbU_9JSSlg1oAEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题属于背书题，选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAABastvJg593LrJ8Kr5hX-pWRbrtE8AAroVaxt-uGFWMQ7ejc2--EYBAAMCAAN5AAM9BA" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 B。</p><p>假设数据帧是 x 字节，传播一个帧的时间是 xB/16kbps，也就是 x/2000。</p><p>所以，列式子 NTd/(Td+Ta+RTT)≥1，RTT=540ms，解得：</p><p><span><span>N=⌈2+1080x⌉N = \left\lceil 2 + \frac{1080}{x} \right\rceil</span><span><span><span></span><span>N</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>⌈</span></span><span>2</span><span></span><span>+</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1080</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>⌉</span></span></span></span></span></span></p><p>所以 x 应该取比较小的数据，也就是 128。1080/128 约等于 1024/128=8，所以 2+9=11，所以也就是得要 4 位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAFqy2_zL2dI29PG5rfkl_FCuWuKwAACuxVrG364YVbeWmhH6cDK0gEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 C。</p><p>124 都是路由器的功能，对于 3 错在不丢失，差错校验是对的，但是没有差错控制。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAJqy3B2tLb5MS4Fak61BtdTOQ9-CQACvBVrG364YVaKCsOEhWcOKQEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题属于背书题，选 A。</p><p>对于 C 是 DNS，其他都是棍母。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBANqy3CdLoFff_uhsvn010RVRKh2JQACvRVrG364YVaUHBmNcU9LfgEAAwIAA3kAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 D。</p><p>主机地址 180.80.77.55，将 77 展开为二进制，也就是 77=64+13=0100,1101B，子网掩码 252=255-3=1111,1100B。</p><p>由于是广播分组，所以 77 应该是 0100,11｜11。也就是 77+2,79。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBARqy3ERspl7rQ02cSwFS2kOucR1hQACvhVrG364YVY87CFrNsNv1gEAAwIAA3kAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题属于背书题，选 D。</p><p>用户给邮件服务器是 SMTP，邮件服务器之间是 SMTP，用户拉邮件服务器是 POP3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAVqy3FKStiL_eBfQM5Scn-yGCcHZQACvxVrG364YVYBnB-rSuicigEAAwIAA3kAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>将 A 和 B 合并得到新的有序表 AB，总长度为 45</li>
<li>将 C 和 AB 合并得到新的有序表 ABC，总长为 85</li>
<li>将 D 和 E 合并得到新的有序表 DE，总长为 110</li>
<li>将 ABC 和 DE 合并得到新的有序表 ABCDE，总长为 195</li>
<li>将 ABCDE 和 F 合并得到新的有序表 395</li>
</ol><p>对于比较次数，最大比较次数为 m+n-1，所以：45+85+110+195+395-5=825</p><p>(2)</p><ol>
<li>采用构建哈夫曼树的策略</li>
<li>从原有序表中选取最短的两个有序表，进行合并</li>
<li>将步骤 1 得到的有序表放回原序列</li>
<li>从新的有序表中选取最短的两个有序表，进行合并</li>
<li>重复上述步骤，直至有序表数量变为 1 个</li>
</ol><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA8dqy0Y8l_NWGkByrEvt4rrIGj7UKgAC2xRrG364YVYySjdXmR_FHwEAAwIAA3kAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>分别遍历 str1 和 str2，得到其长度 m，n</li>
<li>将 str1，str2 中较长的那一个，先向前遍历 |m-n| 个单位</li>
<li>str1 和 str2 同时向前遍历，如果其相等，那么返回</li>
<li>直到 str1 和 str2 为空，返回 nullptr</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>struct</span><span> </span><span>LNode</span><span>{</span></div></div><div><div><div>2</div></div><div><span>    </span><span>char</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>LNode</span><span>*</span><span> </span><span>next</span><span>;</span></div></div><div><div><div>4</div></div><div><span>};</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>int</span><span> </span><span>getLength</span><span>(</span><span>LNode</span><span>*</span><span><span> </span><span>L</span><span>){</span></span></div></div><div><div><div>7</div></div><div><span>    </span><span>LNode</span><span>*</span><span> </span><span>tmp</span><span>=</span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>8</div></div><div><span>    </span><span>int</span><span> </span><span>sum</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>9</div></div><div><span>    </span><span>while</span><span>(</span><span>tmp</span><span>!=</span><span>0</span><span>){</span></div></div><div><div><div>10</div></div><div><span>        </span><span>sum</span><span>++</span><span>;</span></div></div><div><div><div>11</div></div><div><span>        </span><span>tmp</span><span>=</span><span>tmp</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>    </span><span>return</span><span> </span><span>sum</span><span>;</span></div></div><div><div><div>14</div></div><div><span>}</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>LNode</span><span>*</span><span> </span><span>solve</span><span>(</span><span>LNode</span><span>*</span><span><span> </span><span>str1</span><span>,</span></span><span>LNode</span><span>*</span><span><span> </span><span>str2</span><span>){</span></span></div></div><div><div><div>17</div></div><div><span>    </span><span>int</span><span> </span><span>n1</span><span>=</span><span>getLength</span><span>(</span><span>str1</span><span>);</span></div></div><div><div><div>18</div></div><div><span>    </span><span>int</span><span> </span><span>n2</span><span>=</span><span>getLength</span><span>(</span><span>str2</span><span>);</span></div></div><div><div><div>19</div></div><div>
</div></div><div><div><div>20</div></div><div><span>    </span><span>LNode</span><span>*</span><span> </span><span>curr1</span><span>=</span><span>str1</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>21</div></div><div><span>    </span><span>LNode</span><span>*</span><span> </span><span>curr2</span><span>=</span><span>str2</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>22</div></div><div>
</div></div><div><div><div>23</div></div><div><span>    </span><span>int</span><span> </span><span>n</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>24</div></div><div>
</div></div><div><div><div>25</div></div><div><span>    </span><span>if</span><span>(</span><span>n1</span><span>&gt;</span><span>n2</span><span>){</span></div></div><div><div><div>26</div></div><div><span>        </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>n1</span><span>-</span><span>n2</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>27</div></div><div><span>            </span><span>curr1</span><span>=</span><span>curr1</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>28</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>29</div></div><div><span><span>    </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>30</div></div><div><span>        </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>n2</span><span>-</span><span>n1</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>31</div></div><div><span>            </span><span>curr2</span><span>=</span><span>curr2</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>32</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>33</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>34</div></div><div><span>    </span><span>while</span><span> (</span><span>curr1</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span> </span><span>&amp;&amp;</span><span> </span><span>curr2</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>){</span></div></div><div><div><div>35</div></div><div><span>        </span><span>if</span><span>(</span><span>curr1</span><span>==</span><span>curr2</span><span>){</span></div></div><div><div><div>36</div></div><div><span>            </span><span>return</span><span> </span><span>curr1</span><span>;</span></div></div><div><div><div>37</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>38</div></div><div><span>        </span><span>curr1</span><span>=</span><span>curr1</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>39</div></div><div><span>        </span><span>curr2</span><span>=</span><span>curr2</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>40</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>41</div></div><div><span>    </span><span>return</span><span> </span><span>nullptr</span><span>;</span></div></div><div><div><div>42</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>时间复杂度：O(m+n)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAZqy3F-eEgvEO5VDftVkX8_1ZLdVAACwBVrG364YVYB-1VLlLWHRwEAAwIAA3kAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>MIPS=80/4=20</p><p>1s 内执行 20M 条指令，访存 30M 次，由于命中率为 99%，所以缺失率为 1%，也就是 0.3M 次缺失</p><p>0.3M 次缺失总共流数据 0.3M×16B=4.8MB（M 为 10^6），所以主存带宽需要 4.8MB/s。</p><p>(2)</p><p>访存 30M 次，缺页率为 0.0005%，也就是 150 次缺页。</p><p>页面大小为 4KB，缓冲器数据位 32 位，也就是 4KB/32bit=4KB/4B=1024 次。</p><p>缺失是 0.3M，缺页基于 cache 缺失，也就是 0.3M×0.0005%=1.5 次。</p><p>页面大小为 4KB，缓冲器数据位 32 位，也就是 4KB/32bit=4KB/4B=1024 次，也就是一页需要启动 DMA 1024 次，平均 1.5 次缺页，也就是 1.5×1024=1536。</p><p>(3)</p><p>DMA 控制器优先级更高。</p><p>DMA 常用于传送高速设备数据块，如果 CPU 优先则可能会丢失数据。</p><p>(4)</p><p>一个存储体的周期为 50ns，达到稳定的情况下，50ns 可以流动 4×16B=64B 的数据，所以数据率为 64B/50ns=1.28GB/s，这里的 G 是 10^9。</p><p>一个体是看存储器总线宽度，也就是 4B，而不是 16B，所以最后这个流动是 4×4B=16B，所以数据率为 16B/50ns=320MB/s</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDtqzPw8L_L0Pc-zkmfbjLdBYGOdDQAC4RJrG8y1YVZCks5whA2g-gEAAwIAA3kAAz0E" alt="44 1" /><figcaption>44 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDxqzPxWZ-1qz1A6WLmk6QH1oYH9cAAC4hJrG8y1YVbEh6-ge9TmzgEAAwIAA3kAAz0E" alt="44 2" /><figcaption>44 2</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>由于是 16 位计算机，-513=1111,1101,1111,1111B，算术右移一位，也就是 1111,1110,1111,1111B=FEFFH。</p><p>(2)</p><p>由于是连续的 4 条指令，所以应该是 8 条。</p><p>(3)</p><p>I3 的 ID 被阻塞的原因是因为 LOAD-USE 冲突，需要等待将数据写回后才可以 ID。</p><p>I4 的 IF 被阻塞的原因是需要等待上一条指令 ID 完之后才可以 IF。</p><p>(4)</p><p>如下图所示，最短是 17。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWpq2Io8gHr3a9HhfJXIIDK_ouwglwAC8hNrG89ByVaLRFK5x6rXGwEAAwIAA3kAAz0E" alt="44 解" /><figcaption>44 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAhqy3Gc3YWWfiHIeY6sISNI54UbwwACwhVrG364YVaftxvEiFCcKAEAAwIAA3kAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><p>先梳理全流程：</p><ul>
<li>0-4
<ul>
<li>访问&lt;1,1&gt;，将物理页框 32 分配给逻辑页 1</li>
<li>访问&lt;3,2&gt;，将物理页框 15 分配给逻辑页 3</li>
<li>访问&lt;0,4&gt;，将物理页框 21 分配给逻辑页 0</li>
</ul>
</li>
<li>5-9
<ul>
<li>访问&lt;0,6&gt;，刷新页 0</li>
<li>将逻辑页 1 对应的物理页框 32 回收，并挂到空闲页框链尾</li>
<li>将逻辑页 3 对应的物理页框 15 回收，并挂到空闲页框链尾</li>
<li>此时空闲页框链表为 41,32,15</li>
</ul>
</li>
<li>10-14
<ul>
<li>访问&lt;1,11&gt;，由于空闲页框链尾仍存在，所以将 32 重新分配给逻辑页 1</li>
<li>访问&lt;0,13&gt;，刷新页 0</li>
<li>访问&lt;2,14&gt;，将物理页框 41 分配给逻辑页 2</li>
</ul>
</li>
</ul><p>(1)</p><p>21</p><p>(2)</p><p>32</p><p>(3)</p><p>41</p><p>(4)</p><p>适合时间局部性好的程序，因为近 5 个时间点没访问过的只是被挂到链尾，不需要访问磁盘就可以读到数据。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAlqy3G0_HGuokIso-j1-jBJ9-hyYwACxRVrG364YVYe5n0gxY4KRQEAAwIAA3kAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>总容量为 4TB，也就是 2^42B，由于磁盘块大小为 1KB，也就是 2^10B，所以总共有 2^32 个磁盘块，也就是需要 32bit 存储，也就是 4B，所以表项中块号至少 4B。</p><p>一个索引表大小为 512B，512B/4B=128 个磁盘，所以一个文件最多占 128 个磁盘，也就是 128KB。</p><p>(2)</p><p>起始块号占 6B，块数占 2B，也就意味着块数是 2B=16bit，也就是 2^16 个磁盘块。</p><p>504B/6B=84 个磁盘块，所以总共是（2^16+84）KB，也就是 65536+84=65620 KB。</p><p>为了使单个文件长度最大，则需要尽可能扩大连续存储的空间，所以应该尽可能增加块数占比的字节数。</p><p>由上一问可知，表项至少需要 4B，所以起始块号至少占 4B，也就是块数至多占 4B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBApqy3HTO_bGLwoK0HUYuAoAAd_2db8AAscVaxt-uGFWaEDXb9PhXzIBAAMCAAN5AAM9BA" alt="47" /><figcaption>47</figcaption></figure><p></p><p>（注意，题目的报文 3 的第二行，50f0,4380H 扫描错误，应该是 5010,4380H。</p><p>解：</p><p>先分析五个报文。</p><p>对于报文 1，总长度为 30H，标识为 019bH，标志和片偏移为 4000H，生存时间 TTL 为 80H，协议为 06H，头部校验何为 1de8H，原 IP 地址为 c0H.a8H.00H.08H，目的地址为 d3H.44H.47H.50H，源端口号为 0bd9H，目的端口为 1388H，序号为 846b,41c5H，确认号为 0000,0000H，数据偏移、保留和 URG 等位为 7002H，窗口为 4380H，校验和为 5db0H，紧急指针位 0000H。</p><p>(1)</p><p>源 IP 地址为 H，也就是 192.168.0.8 = c0H.a8H.00H.08H 的数据报。比对可知编号为 1,3,4 IP 分组是 H 发送的。</p><p>建立 TCP 连接是 A 发送请求建立，然后 B 接收并发送 ACK，然后 A 再次发送 SYN 等信息。</p><p>报文 1 的这些信息是 02H，也就是 0000,0010B，可以看到 SYN 号为 1，其他位为 0，并且序号为 846b,41c5H</p><p>报文 2 的这些信息是 12H，也就是 0001,0010B，可以看到 SYN 号为 1，ACK 号为 1，并且序号为 eO59,9fefH，确认号为 846b,41c6H，可以判断出确实是回复的报文。</p><p>报文 3 的这些信息是 10H，也就是 0001,0000B，ACK=1，表示建立。</p><p>所以报文 1,2,3 建立 TCP 连接。</p><p>（报文 4 看数据字段携带了应用层数据）。</p><p>看数据字段，以太网数据帧至少要 64B，IP 首部为 20B，所以至少是 44B 的数据，观察 3 和 5，28H=40&lt;46，所以报文 3 和 5 经过快速以太网的时候必须经过填充。</p><p>28H</p><p>(2)</p><p>根据报文 5 的确认号，846b,41d6H，以及报文 3 的序号 846b,41c6H，可知总共发送了 846b,41d6H-846b,41c6H=10H=0001,0000B，也就是 32B 的数据。</p><p>最后一步错了，应该是 16B。</p><p>(3)</p><p>观察 S 初始 TTL 字段，显然是 40H，而报文 5 是 31H，40H-31H=FH，也就是 15 个路由器。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAtqy3Hl3Gp4KmZub6t3Shvvhy_tdQACyBVrG364YVZ-QGjzpHyFzgEAAwIAA3gAAz0E" alt="47 参考资料" /><figcaption>47 参考资料</figcaption></figure><p></p></section><section><h3>408 2013 真题 2 刷<a href="#408-2013-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为 143，分数没 1 刷高。1 刷的时候选择题全对，然后错的也是第 43 和第 44，错的点几乎一模一样</li>
<li>第 3 题低级错误，图画的是对的，但是题看错了</li>
<li>第 43 题 -4，IO 相关分析错误</li>
<li>第 44 题 -1，为什么是指令寄存器？</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBAxqy4UkyyYgg4EWN607foVPwCjRzQACHRZrG364YVagRzuEtHgOAAEBAAMCAAN5AAM9BA" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 D。</p><p>考虑这样一种情况，短序列为 1,999，长序列为 2,3,4,5…，998，那么需要接 2-998 的数。根据这个这个应该选 D。</p><p>本题和 2012 年的数据结构应用题类似，但这道题考的不是比对次数，而是合并次数。</p><p>这里的坑和排序的交换次数、比较次数类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBA1qy4h9CnsfzDBacZd7DZh3jTBvvgACURZrG364YVZ3xHDsry83dwEAAwIAA3kAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题应该采用特值法，也就是取 n=4，可知想要 p2 是 3，那么第一个出栈的必然是 1 或者 2，等待 3 出栈后，底下的数是 可以决定 p3 和 p4 的归属，可以是 1/2 或者 4 排序。</p><p>所以，p3 可以取 n-1。</p><p>当然不放心的话可以多试几个，因为这道题有无法确定。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBA5qy4nSsqgTcLVvDT2VfDuvgzfloAACZxZrG364YVYTvfqVISXUYgEAAwIAA3kAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 A。</p><p>本题应该选 D。</p><p>本题属于模拟题，只要记住平衡二叉树的性质以及如何转转即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBA9qy4p3GS4ve7d38EDBUn9nk0V41QACcxZrG364YVa8lv2gLk1mKQEAAwIAA3cAAz0E" alt="3 解" /><figcaption>3 解</figcaption></figure><p></p><p>上述的解是对的，但是题看错了，上述为 0 的确实是 3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBBqy4qTvyb8gKp6qirDDUkSMQnvjAACdBZrG364YVbBUtQviIwWlAEAAwIAA3kAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题考察的是多❌哈夫曼树，也就是最佳归并树。有 6 个叶节点，显然 (6-1)%(3-1)=1，所以要额外加 (3-1)-1=1 个虚段。</p><p>绘图如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGVqzeD0QIHfa_HRM5Kaq3ZSs6bHLAACUBFrG8y1aVY9l7uaF0uLKwEAAwIAA3kAAz0E" alt="4 解" /><figcaption>4 解</figcaption></figure><p></p><p>可以得到 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBFqy4sOtgbS9jSMOLakvgzSPewdOAACdRZrG364YVZI4WjO2yvcTgEAAwIAA3kAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 A。</p><p>假设 Y 和 X 的父节点为 A，则由于左右根，X 是右，所以接下来应该是根，也就是 X 的父节点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGZqzeF0vYKvpVT_zpiz5l52a059XwACURFrG8y1aVYv16B8wrLeEwEAAwIAA3kAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 C。</p><p>使用排除法，考虑一个树的结点只有 1,2,3，且 2 为根，删除叶节点 3 之后再插入，T1 和 T3 不变，所以 1 排除；考虑相同的结点，但是 1 为根，删去 2，此时插入的时候就不一样了。所以 4 排除。</p><p>综上所述，叶节点的时候，T1 和 T3 相同，不是叶节点，T1 和 T3 不同，也就是 2,3 正确。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGdqzeIr1Fkmq7mwVoxjhwLBBUrvDAACVBFrG8y1aVaXmXL1p2OEjgEAAwIAA3kAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 C。</p><p>按行之和求出来是出度，按列之和求出来是入度。</p><p>所以第一行之和是 2，第一例之和是 1，所以第 0 个结点的度应该是 3，排除法可以选择出来是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGhqzeJ1mkHckVgi7FattBiWd094FQACVRFrG8y1aVYYsGUJRdtjmQEAAwIAA3kAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 D，D 是深度优先遍历。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGlqzeKZWAp3F-BATfAJA6vIhNQYMAACVhFrG8y1aVZ909Y2FkGNlwEAAwIAA3kAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 C。</p><p>求关键路径可得 本题关键路径有 3 条，也就是 1,3,2,4,6、1,3,2,5,6 和 1,3,5,6</p><p>然后逐个分析。</p><p>对于 A，取 c 和 e，也就是影响 2,4 和 2,5，完全不影响关键路径 3，舍去。</p><p>对于 B，取 c 和 d，也就是影响 2,4 和 3,2，完全不影响关键路径 3，舍去。</p><p>对于 C，去 d 和 f，也就是影响 3,2 和 3,5，均影响。</p><p>对于 D，取 f 和 h，也就是影响 3,5 和 5,6，完全不影响关键路径 1，舍去。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGpqzeQq-DIYCVg57mEwaOSbj1G5bwACWxFrG8y1aVYaiVeg6Uj4QwEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 A。</p><p>5 阶 B 树非根最少需要含有 5/2 向上取整 -1=2 个结点，根最少得有一个结点也就是 2 ❌，所以最后应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGtqzeRka26sfPptWYHrfCxRaPagIAACXBFrG8y1aVaSaUtAaq-t-QEAAwIAA3kAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 C。</p><p>逐个分析，第一趟排序的结果为：110,120,911,122,114,007,119；第二趟排序的结果为：007,110,911,114,119,120,122。</p><p>对比可得本题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBNqzJEHd99b9kUVO8EUjs2tNnKBjwACoxFrG8y1YVZNdMYxH-E-QQEAAwIAA3kAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 C。</p><p>首先计算平均 CPI，也就是 2×0.5+3×0.2+4×0.1+5×0.2=1+0.6+0.4+1=3。</p><p>所以平均 CPI 为 3。</p><p>由于主频为 1.2GHz，所以每秒可以执行 1.2G/3=0.4G 条指令，也就是 400M 条指令。</p><p>所以本题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBRqzJG6AZRgaPZsZXP3EroZM52duAACqxFrG8y1YVaA-Ze5ulbeKAEAAwIAA3kAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 A。</p><p>C640,0000H=1｜100,0110,0｜100,0000,0000,0000,0000,0000B</p><p>根据划分，符号位为 1，也就是是负数。</p><p>阶码 1000,1100B=128+12=127+13，所以应该是 2 的 13 次方。</p><p>尾数显然是 1。</p><p>所以最终应该是 -1.1B×2 的 13 次方，也就是 -1.5×2 的 13 次方，所以选 A。</p><p>本题题目应该是打印错误了，不过问题不大。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBVqzJN_O4Kte2AVr-AAAff6RDj2zTwAArwRaxvMtWFWYL9CEfdJAoQBAAMCAAN5AAM9BA" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 A。</p><p>这类题就像前面说的，最好的办法就是转换为 10 进制，不过这道题是乘 2 除以 2，用二进制算更方便。</p><p>对于 x×2，算数左移，也就是 1110,1000B，对于 y/2，算数右移，也就是 1101,1000B</p><p>二者之和也就是 1110,1000B+1101,1000B=1100,0000B，所以选择 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBZqzKAhG9BWu9gsu05WMyllx_tMRgAC7hFrG8y1YVYYXJdc_O-E5wEAAwIAA3kAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 C。</p><p>海明码的计算公式是 2^k≥n+k+1，n=8 的时候，也就是 2^k≥9+k，所以 k 应该取 4.</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBdqzKB1Joj8gczFkBqdTrNtxXU4NgAC7xFrG8y1YVbaGwAB4SkeC40BAAMCAAN5AAM9BA" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 A。</p><p>虚拟空间大小有 4GB，也就是 2^32B，所以占 32 位，页内地址为 4KB，所以占 12 位，所以页号占前 20 位。</p><p>对 03FF,F180H 进行虚实地址变换，可以得到其页号为 0,3FFFH，查看页表可得到页框号为 0153H。</p><p>所以变换结果应该是 015,3180H，也就是选项 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBhqzKEF2L2R4eRKhKbygjxMbiCH3gAC8RFrG8y1YVZfpIyWzB3g0gEAAwIAA3kAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 D。</p><p>变址寻址是 1000H+2000H，得到数据的地址 3000H，根据地址 3000H 得到数据 4000H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBlqzKFJalEKXYbpjJR__oNmKWQDQwAC8xFrG8y1YVYOhjdr_7JvMQEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 C。</p><p>4 采用 4 级指令流水线执行 100 条指令需要 103 个时钟周期，所以执行 100 条指令需要耗时 103/1.03G，也就是执行 1 条指令平均需要 103/1.03G 一整个除以 100，计算可得是 C。</p><p>19 超纲。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBpqzKHLM8c8HoUFFr_rKxfnoKaB-gAC9BFrG8y1YVaBoZJRqnzVQgEAAwIAA3kAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题属于背书题。</p><p>对于 1 和 3 可以背书背到。</p><p>条带化不知道是什么，增加 cache 机制可以使数据访问变快，而不是可靠性。</p><p>条带化是指将连续的数据切分成固定大小的块，轮流分散写入多个物理磁盘中，其作用是通过多盘并行读写来成倍提升 I/O 传输速率与吞吐量（但没有任何容错冗余，不提升可靠性）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBtqzKLK2QonbW2A1ZRg4Ey7bkiv3wAC9RFrG8y1YVYG5wUKGjtluAEAAwIAA3kAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 B。</p><p>磁盘控制器时延是 0.2ms（下达指令需要的时间）</p><p>寻道时延是 6ms。</p><p>计算旋转时延，10000rpm 即 10000/60 rps，转半圈也就是 0.5/(10000/60)=3ms。</p><p>读数据需要 4KB/20MB/s=0.2ms。（2011 真题特别指出读数据读取扇区这个时间等同于读数据的时间）</p><p>所以总共是 9.4ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBBxqzKX2HD80xQQzY2qhM5LbfgAB29kAAvoRaxvMtWFWP73kHTY4bmcBAAMCAAN5AAM9BA" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，中断方式指的是让 CPU 帮忙搬数据，DMA 方式指的是争夺总线。</p><p>对于 B，说法正确，需要注意 DMA 响应发生在一个总线事务完成后，至少也得等这个流水段做完，不可能打断这个流水段。</p><p>对于 C，说法正确，DMA 传送数据是通过硬件执行，最后说自己好了是要 CPU 参与。</p><p>对于 D，说法错误，错误于所有。对于中断 IO 方式，运用在快速设备上会导致数据丢失；对于不支持 DMA 方式的快速设备而言，也不可以用 DMA 方式。</p><p>DMA 方式确实适用于快速设备，注意方向。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBB1qzKdOICqRbgf_FuoiYwzvdrNUWAACARJrG8y1YVZXzp0FoPKp6QEAAwIAA3kAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A，删除某文件不需要删除目录（即便该目录下之后其一个文件），因为目录本身也是一个文件。</p><p>对于 BCD，显然如此。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBB5qzKfG6e03tCVAzqsWvYKerLDrFAACAxJrG8y1YVbi5EVL1dL-ygEAAwIAA3kAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 A。</p><p>CD 可以直接存取（不能说随机读），但是定位之后，读写只能顺序。</p><p>直接存取的含义是是指激光读写头可以按块（扇区）地址直接寻道定位，实现对盘片上任意逻辑地址的独立读取，无需顺序遍历前置数据。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBB9qzKkcYyljvsrZIeOmUhmtT_4CMgACCBJrG8y1YVZ037eYzilIQwEAAwIAA3kAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 C。</p><p>系统调用程序需要做的事情是把用户程序的高级语言翻译成设备可以听得懂的语言，而设备驱动需要做的事情是需要把给设备听的语言翻译为给操作系统听的。</p><p>所以计算磁盘应该是驱动程序做的事情，因为系统调用（也就是设备无关性软件）做的事情只能是给设备对应的信号，而给不了到操作系统级别的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCBqzKs1y0qJHtPhE06rvgSpFgHo5AACDhJrG8y1YVZVW2FvCGdRwQEAAwIAA3kAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A，inode 结点总数指的是总共可以有多少个文件，和一个文件的长度无关。</p><p>对于 B，间接地址级数越大，显然可以越长</p><p>对于 C，地址项个数越多，所拥有的单级磁盘块就越多。</p><p>对于 D，地址项乘文件块大小。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCFqzKunAlG7iuRFgmxpRWEiZALfIAACFBJrG8y1YVYcI40_9k5HTQEAAwIAA3kAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于单缓冲，可以绘图如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCJqzKwkIyprBpHaZKa0InkzqUBeiQACFRJrG8y1YVbmqQmCij7CmwEAAwIAA3kAAz0E" alt="27 解" /><figcaption>27 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCNqzKw6SvB0vgLFSfdtsrPylu44vAACFhJrG8y1YVb1LH608U4uewEAAwIAA3kAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 1，是内部中断，异常分类下的故障</p><p>对于 2，是库函数</p><p>对于 3，read 系统调用需要进入内核态 IO。</p><p>所以应该选 1 和 3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCRqzKyT_G1vl-4GnK2lC2T3n5AKqQACGBJrG8y1YVbRoIfgxI5qxgEAAwIAA3kAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 D。</p><p>这类题出现了非常多次了，属于背书题和细节题。</p><p>注意最终被加载，操作系统肯定是最终被加载到内存里。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCVqzKzGaBnvRig68d4WDkmjtJutDAACGRJrG8y1YVYxTfxs-yvD5QEAAwIAA3kAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 1，如果是处理越界错误，那么会导致故障。产生缺页的前提是操作系统肯定访问过页表了，既然已经访问了页表，那么就不可能存在越界错误。</p><p>对于 2，如果页表满了需要替换。</p><p>对于 3 必然会发生。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCZqzK0oj_dHGUU5ga_zKc3Glx385gACGhJrG8y1YVZP9hRE50Pd1QEAAwIAA3kAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 B。</p><p>背书题，长 IO 优先级更大。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCdqzK086DhIx-nH9-mig7xtgF1dIAACGxJrG8y1YVZm4uTr8fYQZQEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 A，银行家算法是死锁避免，死锁预防指的是破坏死锁的四个必要条件。</p><p>对于 B 是对的。</p><p>对于 C，处于不安全状态的时候，只是可能会出现死锁，而不是必然。假设现在系统处于不安全状态，进程一直都没去要他的 3 个设备。</p><p>对于 D，破坏死锁必要条件是死锁预防干的事，银行家算法根本没破坏请求和保持。</p><p>死锁的四个必要条件是：</p><ul>
<li>互斥</li>
<li>不剥夺</li>
<li>保持并请求</li>
<li>循环等待</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBChqzK4Eb67wJeC4AY5LW-VkD923lQACHRJrG8y1YVbWkHHra7TycgEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题选 B。</p><p>属于背书题，OSI 参考模型从下到上应该是：</p><p>物理层，数据链路层，网络层，传输层，会话层，表示层，应用层。其中会话层的作用是对话管理，表示层的作用是数据格式转换。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBClqzK5yXrYM77IFbwwJq3ocbQ6j0wACIRJrG8y1YVYkcjbQUgEUigEAAwIAA3kAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题选 A。</p><p>属于半道背书题，10BaseT 使用的是曼彻斯特编码，也就是在一个区间内，向上为 0，向下为 1。</p><p>对比题目，也就是 0011,0110，所以选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCpqzK7KS71FSFDr-1dicvA8MqaaMQACIxJrG8y1YVbJVqIZKllhlwEAAwIAA3kAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于报文 8Mb/10Mbps=800ms，两端链路也就是 1600ms。</p><p>对于一组数据 10kb，在一条链路上传输时延为 10kb/10Mbps=0.001s。总共 8Mb/10kb=800 组，也就是 801 个传输时延，所以 801×0.001=801ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCtqzK_bo_L3iuuI9gTcHchVvdTVIwACJBJrG8y1YVZR2X2O8nfRGAEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 B。</p><p>CDMA，TDMA，FDMA 分别指的是码分复用，时分复用，频分复用。</p><p>CSMA 指的是载波监听多点传输。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBCxqzLAWWJ4I0gZkyrUSkoh2XoRVDAACJxJrG8y1YVaJbtYX_pkHDwEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 A。</p><p>HDLC 协议已经从大纲里删了，但是只要知道其是比特切分，也就是连续的五个 1 后面需要插入一个 0。</p><p>对于原码 011111｜00 011111｜10，在竖线位置后再插入一个 0，显然也就是 01111100 00111110 10，也就是 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBC1qzLCQAAFsskYcGqmUyIlyJd5vYV8AAioSaxvMtWFW27VLrth_54QBAAMCAAN5AAM9BA" alt="38" /><figcaption>38</figcaption></figure><p></p><p>直通的意思就是啥也不看，只看 mac 地址，也就是 6B，所以应该选 B。</p><p>存储转发：整帧全部收进缓存 → 算 CRC 校验纠错 → 没错才发出去。（安全可靠、延迟稍高）</p><p>直通交换：只收前 6 B 目的地址 → 硬件秒查端口 → 边收边发“抢跑”出去。（速度极快、不纠错、可能传坏帧）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBC5qzLF_g6hPnAssxz2VvhR_A1pQkQACLBJrG8y1YVaEe8h7aPzFXAEAAwIAA3kAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题也是经典题。甲收到乙的序号为 1913，确认序号为 2046，有效载荷为 100，也就意味着乙发了从 1913 开始的 100B 数据，并且希望甲发以 2046 开头的数据，所以甲的序号应该是 2046，确认号是甲希望乙发从多少字节开始的数据，由于已经发了 1913-2012 这几个帧，所以下一个帧应该是发 2013，所以这道题应该是 2046,2013，也就是选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBC9qzLIVh7Ogpv9oQ4xAi3oeo76KIQACLxJrG8y1YVY8F8rUjbFrMwEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 A，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDBqzLI46Z9D85Sjl_QeExCPbQOXgAACMhJrG8y1YVYJZn9koP5DSwEAAwIAA3kAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>解 1：</p><ol>
<li>对 A 进行快速排序</li>
<li>第 (n-1)/2 个数可能是超过一半的数，记为 candidate。</li>
<li>遍历 A，统计 candidate 的出现次数，如果超过 n/2，那么返回 candidate，否则返回 -1</li>
</ol><p>解 2：</p><ol>
<li>用数组模拟哈希表 hasmap</li>
<li>遍历数组，将数组元素作为 key，值则为出现的次数，每次出现该值 +1</li>
<li>遍历哈希表，如果 value 超过 n/2，那么返回 candidate，否则返回 -1</li>
</ol><p>解 3：</p><ol>
<li>使用摩尔投票法，假设第一个数为候选人 candidate，候选者出现次数 curr=1</li>
<li>从第二个元素开始遍历数组，如果当前值不是 candidate，那么 curr-1，否则 +1</li>
<li>一旦 curr 归零，那么需要更新 candidate 为当前数组的值，并且令 curr=1</li>
<li>重复上述过程直至数组遍历完</li>
<li>遍历 A，统计 candidate 的出现次数，如果超过 n/2，那么返回 candidate，否则返回 -1</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>patition</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>l</span><span>,</span></span><span>int</span><span><span> </span><span>r</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> p</span><span>=</span><span>A</span><span>[l];</span></div></div><div><div><div>3</div></div><div><span>    </span><span>while</span><span>(l</span><span>&lt;</span><span>r){</span></div></div><div><div><div>4</div></div><div><span>        </span><span>while</span><span>(p</span><span>&lt;=</span><span>A</span><span>[r]</span><span>&amp;&amp;</span><span>l</span><span>&lt;</span><span>r){</span></div></div><div><div><div>5</div></div><div><span><span>            </span></span><span>r</span><span>--</span><span>;</span></div></div><div><div><div>6</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>7</div></div><div><span>        </span><span>A</span><span>[l]</span><span>=</span><span>A</span><span>[r];</span></div></div><div><div><div>8</div></div><div><span>        </span><span>while</span><span>(</span><span>A</span><span>[l]</span><span>&lt;=</span><span>p</span><span>&amp;&amp;</span><span>l</span><span>&lt;</span><span>r){</span></div></div><div><div><div>9</div></div><div><span><span>            </span></span><span>l</span><span>++</span><span>;</span></div></div><div><div><div>10</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>        </span><span>A</span><span>[r]</span><span>=</span><span>A</span><span>[l];</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>    </span><span>A</span><span>[l]</span><span>=</span><span>p;</span></div></div><div><div><div>14</div></div><div><span>    </span><span>return</span><span> l;</span></div></div><div><div><div>15</div></div><div><span>}</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>void</span><span> </span><span>Qsort</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>l</span><span>,</span></span><span>int</span><span><span> </span><span>r</span><span>){</span></span></div></div><div><div><div>18</div></div><div><span>    </span><span>if</span><span>(l</span><span>&gt;=</span><span>r){</span></div></div><div><div><div>19</div></div><div><span>        </span><span>return</span><span>;</span></div></div><div><div><div>20</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>21</div></div><div><span>    </span><span>int</span><span> p</span><span>=</span><span>patition</span><span>(A, l, r);</span></div></div><div><div><div>22</div></div><div><span>    </span><span>Qsort</span><span>(A,l,p</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>23</div></div><div><span>    </span><span>Qsort</span><span>(A,p</span><span>+</span><span>1</span><span>,r);</span></div></div><div><div><div>24</div></div><div><span>}</span></div></div><div><div><div>25</div></div><div>
</div></div><div><div><div>26</div></div><div><span>int</span><span> </span><span>solve1</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>27</div></div><div><span>    </span><span>Qsort</span><span>(A,</span><span>0</span><span>,n</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>28</div></div><div><span>    </span><span>int</span><span> candidate</span><span>=</span><span>A</span><span>[(n</span><span>-</span><span>1</span><span>)</span><span>/</span><span>2</span><span>];</span></div></div><div><div><div>29</div></div><div><span>    </span><span>int</span><span> cnt</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>30</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>n;i</span><span>++</span><span>){</span></div></div><div><div><div>31</div></div><div><span>        </span><span>if</span><span> (</span><span>A</span><span>[i]</span><span>==</span><span>candidate){</span></div></div><div><div><div>32</div></div><div><span><span>            </span></span><span>cnt</span><span>+=</span><span>1</span><span>;</span></div></div><div><div><div>33</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>34</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>35</div></div><div><span>    </span><span>if</span><span> (cnt</span><span>&gt;</span><span>n</span><span>/</span><span>2</span><span>){</span></div></div><div><div><div>36</div></div><div><span>        </span><span>return</span><span> candidate;</span></div></div><div><div><div>37</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>38</div></div><div><span>    </span><span>return</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>39</div></div><div><span>}</span></div></div><div><div><div>40</div></div><div>
</div></div><div><div><div>41</div></div><div><span>int</span><span> </span><span>solve2</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>42</div></div><div><span>    </span><span>int</span><span> </span><span>hasmap</span><span>[n];</span></div></div><div><div><div>43</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> n; i</span><span>++</span><span>){</span></div></div><div><div><div>44</div></div><div><span>        </span><span>hasmap</span><span>[i] </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>45</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>46</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>n;i</span><span>++</span><span>){</span></div></div><div><div><div>47</div></div><div><span>        </span><span>hasmap</span><span>[</span><span>A</span><span>[i]]</span><span>++</span><span>;</span></div></div><div><div><div>48</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>49</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>n;i</span><span>++</span><span>){</span></div></div><div><div><div>50</div></div><div><span>        </span><span>if</span><span>(</span><span>hasmap</span><span>[i]</span><span>&gt;</span><span>n</span><span>/</span><span>2</span><span>){</span></div></div><div><div><div>51</div></div><div><span>            </span><span>return</span><span> i;</span></div></div><div><div><div>52</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>53</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>54</div></div><div><span>    </span><span>return</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>55</div></div><div><span>}</span></div></div><div><div><div>56</div></div><div>
</div></div><div><div><div>57</div></div><div><span>int</span><span> </span><span>solve3</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>58</div></div><div><span>    </span><span>int</span><span> candidate</span><span>=</span><span>A</span><span>[</span><span>0</span><span>];</span></div></div><div><div><div>59</div></div><div><span>    </span><span>int</span><span> curr</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>60</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>1</span><span>;i</span><span>&lt;</span><span>n;i</span><span>++</span><span>){</span></div></div><div><div><div>61</div></div><div><span>        </span><span>if</span><span>(</span><span>A</span><span>[i]</span><span>!=</span><span>candidate){</span></div></div><div><div><div>62</div></div><div><span><span>            </span></span><span>curr</span><span>--</span><span>;</span></div></div><div><div><div>63</div></div><div><span><span>        </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>64</div></div><div><span><span>            </span></span><span>curr</span><span>++</span><span>;</span></div></div><div><div><div>65</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>66</div></div><div><span>        </span><span>if</span><span>(curr</span><span>==</span><span>0</span><span>){</span></div></div><div><div><div>67</div></div><div><span><span>            </span></span><span>candidate</span><span>=</span><span>A</span><span>[i];</span></div></div><div><div><div>68</div></div><div><span><span>            </span></span><span>curr</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>69</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>70</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>71</div></div><div><span>    </span><span>int</span><span> cnt</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>72</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>n;i</span><span>++</span><span>){</span></div></div><div><div><div>73</div></div><div><span>        </span><span>if</span><span> (</span><span>A</span><span>[i]</span><span>==</span><span>candidate){</span></div></div><div><div><div>74</div></div><div><span><span>            </span></span><span>cnt</span><span>+=</span><span>1</span><span>;</span></div></div><div><div><div>75</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>76</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>77</div></div><div><span>    </span><span>if</span><span> (cnt</span><span>&gt;</span><span>n</span><span>/</span><span>2</span><span>){</span></div></div><div><div><div>78</div></div><div><span>        </span><span>return</span><span> candidate;</span></div></div><div><div><div>79</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>80</div></div><div><span>    </span><span>return</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>81</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>解 1 时间复杂度：O(nlogn)，空间复杂度：O(logn)</p><p>解 2 时间复杂度：O(n)，空间复杂度：O(n)</p><p>解 3 时间复杂度：O(n)，空间复杂度：O(1)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDFqzLeXLq6MfyI4N_lndmtTWm9DMAACNxJrG8y1YVZhu8u5SmLj0wEAAwIAA3kAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>采用顺序存储法，排列为：S1={do, while, for, repeat}。查找第一个是 1，第二个是 2，第三个是 3，第四个是 4，所以计算可得，ASL=1×0.35+2×0.35+3×0.15+4×0.15=2.1</p><p>(2)</p><p>采用链式存储，使用链表，排列为 do-&gt;while-&gt;for-&gt;repeat。查找第一个是 1，第二个是 2，第三个是 3，第四个是 4，计算可得 ASL=2.1</p><p>本题第 2 问还可以采用树型存储。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDJqzMoiaOGZSiWTN8X1NCgZ2IMdfQACbhJrG8y1YVb6RCZwjakFEwEAAwIAA3kAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>CPU 时钟周期为 1/800M=1.25ns。</p><p>总线时钟周期为 1/200M=5ns。</p><p>假设传输 1s 的数据，总共有 1/5ns=200M，所以 200M×32bit=800MB/s。</p><p>(2)</p><p>当 cache 缺失时，由于 cache 块大小为 32B，且每次突发传送传送 32B，所以需要传送一次地址即可。</p><p>(3)</p><p>32B/4B=4，所以总共需要 5 个总线时钟周期。</p><p>所以 5×5ns=25ns。</p><p>第 4 问考虑到了存储体的问题，但是第 3 问没考虑到，感觉属于比较低级的错误。</p><p>传送地址 5s，启动第一个 40ns，然后启动 8 体，也就是 8×5ns，总共加起来也就是 85ns。</p><p>(4)</p><p>首先计算 100 条指令的时间花费，也就是 100×4×1.25ns=500ns。</p><p>一条指令平均需要 1.2 次访存，也就意味着总共需要 120 次访存，120 次访存也就意味着总共需要访存 120/8×40ns=600ns</p><p>cache 缺失率为 5%，也就意味着 100 条指令里有 5 条指令 cache 缺失，也就意味着需要 5×25ns=125ns 去处理 cache 缺失问题传送数据。</p><p>所以总共也就是 1225ns。</p><p>cache 缺失率为 5%，也就意味着 100 条指令里有 100×1.2=120 次访存，也就是 120×0.05=6 条指令 cache 缺失，也就意味着需要 6×85ns=510ns 去处理 cache 缺失问题传送数据。</p><p>所以总共加在一起应该是 1010s。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDNqzM87yCNB4etJ2otmkU7hMvryIQAChRJrG8y1YVZbhXp_miFE6QEAAwIAA3kAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDRqzM9USyt4r-ecZRGXGl9_HonRugAChhJrG8y1YVaqCd4UB6zvdAEAAwIAA3gAAz0E" alt="44 图" /><figcaption>44 图</figcaption></figure><p></p><p>解</p><p>(1)</p><p>按字节编址，因为 16 位定长本题采用是的 +2。</p><p>OFFSET 为 8 位，按照有符号数的表示范围是 -128 到 127，所以向后最多可以跳转 127 条指令。</p><p>(2)</p><p>本条指令 C=0，Z=1，N=1。</p><p>当 CF=0，ZF=0，NF=1 时，触发跳转，所以 200CH +2 +2×1110,0011B，也就是 200EH+1100,0110B=200E+FFC6H=1FD4H</p><p>当 CF=1，ZF=0，NF=0 时，未触发跳转，所以 200CH+2=200EH。</p><p>(3)</p><p>C=1</p><p>Z=1</p><p>N=0</p><p>(4)</p><ol>
<li>译码器</li>
<li>移位寄存器</li>
<li>加法器</li>
</ol><p>应该是指令寄存器，指令寄存器连着那个是多路选择器。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDVqzNHOrdLEZV7_7YfTNGV6B4hWPgACihJrG8y1YVY59n2iUGlBGwEAAwIAA3kAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDZqzNHjKIpPN58AAfLmIaQg7GsM92QAAosSaxvMtWFWljQxQU11XYUBAAMCAAN5AAM9BA" alt="45 2" /><figcaption>45 2</figcaption></figure><p></p><p>解：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>cobegin</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>参观者进程 i：</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>P（空位）；</span><span> // 500</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>P（出入口）；</span><span> // 1</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>进门；</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>V（出入口）；</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>参观；</span></div></div><div><div><div>9</div></div><div><span><span>    </span></span><span>P（出入口）；</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>出门；</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>V（出入口）；</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>V（空位）；</span></div></div><div><div><div>13</div></div><div><span><span>  </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore empty</span><span>=</span><span>500</span><span>;</span></div></div><div><div><div>2</div></div><div><span>semaphore mutex</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span>cobegin</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>参观者进程 i:</span></div></div><div><div><div>6</div></div><div><span><span>  </span></span><span>{</span></div></div><div><div><div>7</div></div><div><span>    </span><span>P</span><span>(empty);</span></div></div><div><div><div>8</div></div><div><span>    </span><span>P</span><span>(mutex);</span></div></div><div><div><div>9</div></div><div><span><span>    </span></span><span>进门;</span></div></div><div><div><div>10</div></div><div><span>    </span><span>V</span><span>(mutex);</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>参观;</span></div></div><div><div><div>12</div></div><div><span>    </span><span>P</span><span>(mutex);</span></div></div><div><div><div>13</div></div><div><span><span>    </span></span><span>出门;</span></div></div><div><div><div>14</div></div><div><span>    </span><span>V</span><span>(mutex);</span></div></div><div><div><div>15</div></div><div><span>    </span><span>V</span><span>(empty);</span></div></div><div><div><div>16</div></div><div><span><span>  </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDdqzNMUmdwSESFHqUMjycdZzW_l-wACjBJrG8y1YVY9OMUqzGpbWAEAAwIAA3kAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>由于页内偏移量为 12 位，所以页大小为 4KB。</p><p>页号为 20 位，所以最多 2^20 个页表，每个个表项需要 4B，所以页表最大占用 4MB。</p><p>(2)</p><p>页目录号：LA/2^22</p><p>页表索引：（LA%2^22）/2^12</p><p>(3)</p><p>代码起始逻辑地址为 0000,8000H，所以页号是 8。</p><p>由于一个页表项大小为 4B，所以物理地址 1 为 0020,0000H+8×4=0020,0000H+20H=0020,0020H。</p><p>物理地址 2 为 0020,0024H。</p><p>物理地址 3 为 0090,0000H+1000H=0090,1000H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBDhqzNV8M9bKS_RAL6WaMrdBM3FEmQACjxJrG8y1YVYhTJuzicAQzgEAAwIAA3kAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>首先考虑 S0 口的两个网络，很显然聚合起来是 153.14.5.0/24。</p><p>然后考虑 E0，</p><p>根据最长前缀匹配原则，访问 194.17.20.128/25 和 194.17.20.0/25 并不冲突，所以对于前者填其本身即可。</p><p>考虑 S1：</p><p>20=0001,0100B</p><p>21=0001,0101B</p><p>显然其前 23 位是一样的，所以应该是 194.17.20.0/23</p><p>综上所述，表项为：</p><p>153.14.5.0/24 153.14.3.2 S0</p><p>194.17.20.128/25 / E0</p><p>194.17.20.0/23 194.17.24.2 S1</p><p>(2)</p><p>根据最长前缀匹配原则，194.17.20.200 跟 194.17.20.128/25 匹配，所以应该从 E0 转发。</p><p>(3)</p><p>BGP 协议</p><p>TCP。</p></section><section><h3>408 2014 真题 2 刷<a href="#408-2014-真题-2-刷"><span>#</span></a></h3><ul>
<li>147</li>
<li>第 44 题 -1，应该把通式写出来</li>
<li>第 45 题 -1，load 指令问题，这里的 load 指的是数组，而不是代码</li>
<li>第 46 题 -1，最终的文件长度块大小没 -4B</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBD1qzRkBOEJpt1a_8FWeNBu-ena-JQACpA9rG8y1aVY4o8vqsKAdsAEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 C。</p><p>记当前为 1，那么也就是 n×n+n/2×n+…，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBD5qzRl05zX01IxUJCngoheBXiUy8gACpg9rG8y1aVaZ2DMtvs9zxQEAAwIAA3kAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 B。</p><p>属于模拟应该是 B。</p><p>草稿太乱了，不放上来了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGxqzg86s_eQU4riXiNrWtru-JxXCgACnhVrG7fmcVbVFxhqK72wNwEAAwIAA3kAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 A。</p><p>按照之前说的技巧，假设已经有一个元素了，然后 rear 指针回退一格，也就是有一个元素的时候，end1 指向 0，end2 指向 1，出队，也就是 end2 指向 0，所以初始为空的时候，end1==end2。</p><p>当队伍满的时候，这类题采用空一位的做法，不应该是 mod M-1，应该是 mod M</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBG1qzg_NKh3XfAb_V9XdL46e2MFMQwACoRVrG7fmcVYyiej8LySAewEAAwIAA3kAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 D。</p><p>本质上这道题求的是中序遍历，所以对该二叉树中序遍历，也就是：</p><p>d,e,b,x,a,c，所以左右线索分别指向 b 和 a，也就是 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBG5qzhApJAABV4NBEfQLcdK5BUWTlM0AAqQVaxu35nFWryr3ISiRDbABAAMCAAN4AAM9BA" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题采用特值法排除是最快的，反例如图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBttq0OavhnHoTc-cQkUH4ZGaXGwXtQACuRRrG6jniFY0_HYWCzyf-AEAAwIAA3kAAz0E" alt="5 解" /><figcaption>5 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBG9qzhE_GbFT1-DUymM8qr94poXD8QACpxVrG7fmcVbJFope3gXeggEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 D。</p><p>这类题最简单的做法是观察，注意到 D 的 110 是 1100 的前缀。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHBqzhFzWPK1bb2RDkxCD7OxCiCgcwACqBVrG7fmcVaUeQ5u2WqbTQEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 D。</p><p>这类题最好的办法就是逐个模拟。</p><p>对于 A，3,1 之后，对于 2 之前需要完成 4，所以舍去。</p><p>对于 B，和 A 类似。</p><p>对于 C。3,1,4,2 之后如果取 5 的话，则需要完成 6，舍去。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHFqzhHsKkJiO1kD45bswVKjw70L4AACqxVrG7fmcVZtMPcfzoBfvwEAAwIAA3kAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A 和 C，不管寻址寻了多久，存储空间都是消耗那么多。</p><p>对于 B 是提前固定的，显然不会受到影响。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHJqzhIoUszXbGsJv0J3oAS7oFXc_gACrBVrG7fmcVYHal7vsnC2gAEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 D。</p><p>一棵 4 阶 B 树，至少拥有 4/2 向上取整 -1 个的结点，也就是 1，要让关键字节点个数最多，也就是让单个结点内含有的关键字数量越少。</p><p>一个结点内至少含有 1 个关键字，所以这道题应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHNqzhLKMN2Fh_cXacGW98uEIMghHgACrxVrG7fmcVYq73vg8RiRUgEAAwIAA3kAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 B。</p><p>观察到 9 和 1，所以 d 不可能是 1。</p><p>观察到 9 和 4，所以 d 不可能是 2。</p><p>观察到 9,13,20；2,7,23；4,8,15，所以可能是 3。</p><p>观察到 9,7，所以不可能是 4。</p><p>观察到 9,8，所以不可能是 5。</p><p>综上所述，应该是 3。</p><p>这类题也没什么有技巧的，都是模拟。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBD9qzbjMVLhqVc32m-rjmTihQOidHQAC1RBrG8y1aVaM6OWaOuNDhwEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，可以选择 2 和 9 分别作为轴。</p><p>对于 B，可以选择 2 和 9 分别作为轴。</p><p>对于 C，只能选出来 9 当轴。</p><p>对于 D，可以选择 5 和 9 当轴。</p><p>对于这类题，一定要优先想边界。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEBqzbnEXAq8P21CrHhcVJOU_SVk0wAC1hBrG8y1aVYoU-IaHxzHqwEAAwIAA3kAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 D。</p><p>假设 P 原本执行的指令数量是 N，CPI 是 X，主频为 M，那么也就是 NX/M=20。根据题目所说的公式，0.7N×1.2X/N，也就是 0.7×1.2×20=16.8。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEFqzbqxF5xsC0Nsgcjq-7x8baF8_AAC1xBrG8y1aVbk61W-b9QnhQEAAwIAA3kAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 C。</p><p>这道题应该按照十进制考虑，8 位定点补码运算的范围是 -128-127，那么显然 x-y =128 会溢出，所以应该选 C。</p><p>本题应该选。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEJqzbrs3oAxlGglx7KfAAGy_CloGtIAAtgQaxvMtWlWqoWICPqJWhQBAAMCAAN5AAM9BA" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 A。</p><p>CC90,0000H=1｜100,1100,1｜001,0000,0000,0000,0000,0000B.</p><p>B0C0,0000H=1｜011,0000,1｜100,0000,0000,0000,0000,0000B.</p><p>首先看符号位，f1 和 f2 的符号位都是 1，也就是都是负数，所以 x 和 y 符号相同。</p><p>观察阶码，x 阶码显然大于 y 的阶码，所以 x 的次数显然大于 y 的次数，由于是负数，所以次数越大的数越小，所以 y 更大，也就是 x &lt; y。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBENqzbuf7F2kR9PmGIIaORAt4bpRYgAC3RBrG8y1aVb6cakE8pl4cAEAAwIAA3kAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 A。</p><p>本题属于比较阴的题目，DRAM 芯片的地址引脚和数据引脚，而不是问的是存储器。</p><p>对于 DRAM，没有特殊说明默认采用地址复用技术，所以总共 4M=2^22，也就是 11 根地址线。</p><p>数据总线显然是 8 根，所以总共 19 根。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBERqzbxtAaGYzdpsCrx_OOYdiOBVBgAC3hBrG8y1aVYIAUG6s0Kp6wEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 D。</p><p>指令 cache 和数据 cache 分离，是因为要减少访存冲突，也就是流水线冲突。</p><p>从流水线的角度思考，一般是五段式流水线，取指令，分析指令，执行指令，访存，写回。如果指令和数据 cache 没有分离，那么取指令和访存冲突。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEVqzb_Qt3WWkcTxmP7hqnPzaMPlxAAC3xBrG8y1aVbv033cvIbGeAEAAwIAA3kAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 A。</p><p>16 个通用寄存器占 4 位，操作码字段占 8 位，由于 store 指令需要指令从谁存到谁，需要 2 个寄存器位，也就是 32-8-4-4=16。</p><p>16 位的偏移应该是 A，因为 offset 的计算公式是当前指令 + “1”+offset×x 编址数</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEZqzb_ks5Fk--Oz-Zw6tZWAXfA-ZgAC4BBrG8y1aVZauiVUqfywRwEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 C。</p><p>采用微程序控制器，共有 32 条指令，由于每条微指令平均由 4 条微指令组成，所以总共有 4×32=128 条微指令。</p><p>由于还有公共的 2 条微指令，所以总共有 130 条微指令，也就是需要 8 位才能存储。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEhqzcKjKT16_4vkKT4aPXsg5rcHfwAC5hBrG8y1aVbM39Zt9krALQEAAwIAA3kAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 C。</p><p>由于地址/数据线有 32 根，所以一次最多传送 4B 的数据，由于每个时钟周期内传送 2 次数据，所以 1s 内可以传输 66M×2=132M 次数据，所以 132M×4B=528MB/s，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBElqzcMQkwsHgAwPqnPOelBkyjSHDwAC6BBrG8y1aVYDFNwc7VM4JwEAAwIAA3kAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 C，属于背书题。</p><p>对于 A 和 B 是并行和串行的概念，现代一般采用串行，因为并行很容易导致信号干扰。</p><p>对于 D，同步传输、异步传输、半同步传输</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEpqzcQD3cmS8M4TJInHNN7jqc7csQAC7BBrG8y1aVbaSk1IAAH3VAgBAAMCAAN4AAM9BA" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 D。</p><p>统一编址情况下，CPU 可以使用一样的访存指令访问 IO 接口，比如 Load 和 Use。</p><p>控制寄存器，状态寄存器和数据寄存器。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBEtqzcRck5pcK3-Y9OrLuLtaIJXW6QAC7RBrG8y1aVavaX7hCapq1QEAAwIAA3kAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 B。</p><p>延迟 50ns，但是这 100ns 都是在这 400ns 里的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBExqzcRt4zT2F64SjYUjSmKHfQgywAAC7hBrG8y1aVbd2KL-_jssRwEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A 是绝对公平的算法，所以不会导致饥饿现象。</p><p>对于 B，静态优先数优先，假设来了非常多高优先级的进程，低优先级的进程始终得不到满足，所以排除。</p><p>对于 C 和 D，无论是抢占式短作业还是非抢占式短作业都会导致饥饿现象。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBE1qzchH8e5bTGuIuiEzoSCq8MJCzAAC9RBrG8y1aVbqmtIN86OXsQEAAwIAA3kAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 B。</p><p>先求会导致死锁的最大个数，也就是 2+3+4=9，所以不会导致死锁的是该个数 +1，也就是 10。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBE5qzciQwya61V4O_97Qm19MW9ietQAC9hBrG8y1aVa9mvKxCTF2hAEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题属于背书题，应该选 D。</p><p>对于 A，trap 在用户态运行，让操作系统进入内核态执行系统调用。</p><p>对于 B，可以考虑 jmp。</p><p>对于 C，可以考虑递归函数调用。</p><p>对于 D，关中断必须在内核态执行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBE9qzc2awdXbKDhVO-fOwKbxQy_7mQACARFrG8y1aVZn0if8mdzGPgEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A，读磁盘操作完成的意思是 IO 完成，操作系统需要让其从阻塞态变成就绪态，所以 A 必然是需要执行的。</p><p>对于 B 显然是错误的，除非故意这么做，一般来讲操作系统不改变其优先级或者增加进程优先级。</p><p>对于 C，如果该进程前方还有其他进程正在执行，此时进程还在就绪态，所以不需要分配内存。</p><p>对于 D 和 B 类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFBqzc57Beq0HYfBDpsy7pxZAoyKgAACAhFrG8y1aVbiPw6tFYKG9gEAAwIAA3kAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 A。</p><p>10GB 的磁盘分区，簇大小为 4KB，也就是总共有 10GB/4KB = 10×2^18 个簇，需要 10 ×2^15B 的存储空间，也就是 10×2^15B/4KB=80 个簇。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFFqzc9hJjFrRcKB490LZwo7JY2bvAACBRFrG8y1aVaC-MevpEO_8gEAAwIAA3gAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 1，增大 TLB 容量可以使 TLB 命中提升，显然正确。</p><p>对于 2，页表常驻内存可以让页表本身不会缺失，所以可以，对于这种情况可以考虑二级页表。</p><p>对于 3，增大交换区的意思是让磁盘和内存的交换空间变大，交换空间变大并不意味着速度可以变快，只是空间变大了。</p><p>所以应该选 1 和 3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFJqzdDcn9PA17mwb_E8wlRrI4mU4QACCRFrG8y1aVadfIpLTGyF9AEAAwIAA3kAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 B。</p><p>这道题的本质是考察 open 和 read 的区别，本题题设意思是 open 之后，操作系统需要做什么。</p><p>对于 ABD，open 需要文件名作为参数，需要将文件控制块读入内存中，然后在系统文件打开表中登记，read 的作用是根据文件描述符去磁盘中读具体的内容到内存里，然后返回用户进程文件的数据缓冲区。</p><p>所以 A 错误，B 正确，D 错误。</p><p>对于 C，打开文件的时候不需要修改文件控制块的读写权限，与之无关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFNqzdG3LEKLVF76zbP69aMu2fjOqgACCxFrG8y1aVYJ2CXg7xF91wEAAwIAA3kAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 A，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFRqzdHYpalNpviYdqpfEzJyqpROeQACDBFrG8y1aVaNC8p_6KC1qwEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，管道是半双工的，所以不能实现双向数据传输。</p><p>对于 B，管道的容量不受磁盘容量的大小限制，应该是受内存大小的限制。</p><p>对于 C 和 D，考虑类似读者写者问题，假设一个管道内有读进程，那么可以允许其他读进程进入。</p><p>这类题需要深度辨析管道和管程的区别。</p><p>管程属于语法范围，作用是管理 PV 操作，但是其和 PV 操作有区别，管程的 P 操作如果在没有资源的时候，并不会 -1，而是等待。</p><p>此外还可以注意，管程只允许一个读进程或者一个写进程进入（因为操作管程必须是互斥的），但是进入管程后（意思是在管程外）可以有多个读进程同时操作里面的东西，也就是说过通道需要互斥，但是里面的东西可以同时访问。</p><p>这个通道指的是管程，这个里面的东西指的是管程外。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFVqzdNDJ8bseZY4iC1xmi1ffFs9wwACGBFrG8y1aVYRQfOSGlO_ZAEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题属于背书题，应该选 D。</p><p>对于 ABC 属于多级页表的缺点，引入多级页表之后需要额外进行多次地址转换，同时缺页中断可能性也会增加，由于要管理页表的页表，所以页表项的个数会变多，不过不会改变页表项本身占的字节数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFZqzdP24PMAAccYiR8NdmWzCwPthQMAAhsRaxvMtWlWrUN-dmVd5jQBAAMCAAN4AAM9BA" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题属于背书题，应该选 C。</p><p>OSI 参考模型从下至上应该是物理层 - 数据链路层 - 网络层 - 传输层 - 会话层 - 表示层 - 应用层。为会话层提供服务的应该是传输层。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFdqzdRmzG1RGkqDNvigMaRm_PVcGQACHRFrG8y1aVYjqcvIIu142AEAAwIAA3kAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 B。</p><p>a1 向 c1 发送数据帧，经过交换机，交换机通过自学习功能先登记 a1 和端口 1，然后查表发现没有，所以发广播询问，得到 3 的回应后记录目的地址 c1 和端口 3。由于这个过程是广播，所以应该从除了 1 之外的所有端口发送，也就是 2,3</p><p>c1 向 a1 发送确认帧，查转发表发现有对应的项，所以直接单播传输即可，也就是 1。</p><p>综上应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFhqzdUjiEwI7H4K0TUBfhL9_oaBvQACHhFrG8y1aVZWlmJCFVhPsgEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题属于背书题，应该选 D。</p><p>数据传输速率的意思是发送时延，发送时延显然和 ABC 相关，D 和 RTT 相关，属于传播时延。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFlqzdVRtRXmSUici4uzIqZI1iaAlwACIBFrG8y1aVaFCJ0NDnI1YgEAAwIAA3kAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 C。</p><p>首先计算发送一个数据帧的时间，也就是 1000B/100Mbps=8000bit/100Mbps=8×10^-5s=0.08ms，记为 Td，忽略 Ta。</p><p>而 RTT=100ms</p><p>所以最大发送窗口公式应该是：</p><p>NTd/(Td+RTT)≥1，就算可得 N≥1251。而 N 最大是 1000，所以意味着数据率不可能打满。</p><p>所以发送 1000×1000B 之后，就需要等待第一个帧回到手后才可以发送下一个 1000×1000B。发送 1000×1000B 所需要的时间是 80ms，RTT 是 100ms，所以第一个帧的回应应该是 100ms，也就意味着每间隔 100ms 才可以发送 1000×1000B。</p><p>1s 内总共有 10 个 100ms，所以总共可以发送 10×1000×1000B 的数据，也就是 80Mbps。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFpqzdg4jMeiYLgr45PeiWVsxNm9kgACKRFrG8y1aVaGllFRcVIwmAEAAwIAA3kAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 B。</p><p>码片的计算应该是按照向量乘法计算，A 的码片是 1111，C 受到的第一片是 2020，相乘单位化得到 1，第二片是 0，-2，0，-2，相乘单位化得到 -1，第三篇是 0202，相乘单位化得到 1。</p><p>由于是 1,-1,1，译码得到 101，也就是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFtqzdj5AwEQQqia5WiFBVQfH8F94QACKxFrG8y1aVaMxMdkmfpydgEAAwIAA3kAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 A。</p><p>甲在发生超时的时候拥塞窗口为 8KB，也就意味着新的拥塞窗口是 4KB。</p><p>所以 t 时刻的发送窗口是 min{1, 10}，t+1 时刻前者是 2，t+2 时刻前者是 4，t+3 时刻前者是 5，直到 t+8 时前者是 10，而当 t+9 时，前者是 11，但是后者接收窗口最大为 10。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBFxqzdmSc_U0CbWHYnYWByOYHsXksAACLBFrG8y1aVYnxuxSK-SkUQEAAwIAA3gAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 B，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBF1qzdmpnTNzbnxXWn1H5V3s_psxHQACLRFrG8y1aVar7Rxz6_isNAEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 D，属于背书题。</p><p>PPP 协议是局域网接入广域网的协议，所以可能会用到，对于 D 是邮件传输协议，不可能使用到。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBF5qzdrlZ4cZpIefJDEzcn_F1a3CvwACLhFrG8y1aVbwc9I3uxXrYwEAAwIAA3kAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>设置一个全局变量 WPL</li>
<li>对该树进行先序遍历，如果结点为空，那么返回</li>
<li>如果该结点为叶结点，那么结算，WPL+=深度×权值</li>
<li>如果该结点不是叶节点，那么递归的遍历其左子树和右子树</li>
</ol><p>(2)</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>struct</span><span> </span><span>TNode</span><span>{</span></div></div><div><div><div>2</div></div><div><span>  </span><span>int</span><span> </span><span>weight</span><span>;</span></div></div><div><div><div>3</div></div><div><span>  </span><span>TNode</span><span>*</span><span> </span><span>left</span><span>;</span></div></div><div><div><div>4</div></div><div><span>  </span><span>TNode</span><span>*</span><span> </span><span>right</span><span>;</span></div></div><div><div><div>5</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>(3)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>WPL</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>void</span><span> </span><span>getWPL</span><span>(</span><span>TNode</span><span>*</span><span><span> </span><span>T</span><span>,</span></span><span>int</span><span><span> </span><span>depth</span><span>){</span></span></div></div><div><div><div>4</div></div><div><span>  </span><span>if</span><span>(</span><span>T</span><span>==</span><span>nullptr</span><span>){</span></div></div><div><div><div>5</div></div><div><span>    </span><span>return</span><span>;</span></div></div><div><div><div>6</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>7</div></div><div><span>  </span><span>if</span><span>(</span><span>T</span><span>-&gt;</span><span>left</span><span>==</span><span>nullptr</span><span>&amp;&amp;</span><span>T</span><span>-&gt;</span><span>right</span><span>==</span><span>nullptr</span><span>){</span></div></div><div><div><div>8</div></div><div><span>    </span><span>WPL</span><span>+=</span><span>T</span><span>-&gt;</span><span>weight</span><span>*</span><span>depth</span><span>;</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>10</div></div><div><span>  </span><span>getWPL</span><span>(</span><span>T</span><span>-&gt;</span><span>left</span><span>,</span><span>depth</span><span>+</span><span>1</span><span>);</span></div></div><div><div><div>11</div></div><div><span>  </span><span>getWPL</span><span>(</span><span>T</span><span>-&gt;</span><span>right</span><span>,</span><span>depth</span><span>+</span><span>1</span><span>);</span></div></div><div><div><div>12</div></div><div><span>}</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>int</span><span> </span><span>solve</span><span>(</span><span>TNode</span><span>*</span><span><span> </span><span>T</span><span>){</span></span></div></div><div><div><div>15</div></div><div><span>  </span><span>getWPL</span><span>(</span><span>T</span><span>,</span><span>0</span><span>);</span></div></div><div><div><div>16</div></div><div><span>  </span><span>return</span><span> </span><span>WPL</span><span>;</span></div></div><div><div><div>17</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBF9qzdxY0FAYN8NIXAzdvb6vWqh4ggACMxFrG8y1aVagSf4LIiDfRgEAAwIAA3kAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>图。</p><p>(2)</p><p>略。</p><p>(3)</p><p>R1 到达 192.1.1.0/24，花费 1，路径：R1-192.1.1.0/24</p><p>R1 到达 192.1.6.0/24，花费 4，路径：R1-R2-192.1.6.0/24</p><p>R1 到达 192.1.5.0/24，花费 3，路径：R1-R3-192.1.5.0/24</p><p>R1 到达 192.1.7.0/24，花费 8，路径：R1-R2-R4-192.1.7.0/24</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGBqzdxzU0xo4VJkMNVpLCmmZMAiVwACNBFrG8y1aVb20rxemcjTdwEAAwIAA3kAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>R1 到 192.1.1.0/24 通过 E0 口；到 192.1.5.0/24 通过 L1 口，到达其他两个通过 L0 口，所以需要路由聚合 192.1.6.0 和 192.1.7.0/24。</p><p>6 展开是 0000,0110B，7 展开是 0000,0111B，所以所以聚合完应该是 192.1.6.0/23</p><p>所以，最终的表项应该是：</p><p>192.1.1.0/24 / E0</p><p>192.1.5.0/24 10.1.1.10 L1</p><p>192.1.6.0/23 10.1.1.2 L0</p><p>(2)</p><p>L0</p><p>61</p><p>(3)</p><p>Prefix: 0.0.0.0/0</p><p>Metric：10</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGFqzdyJjH7dJzHo7O3oguX1vSR45wACNRFrG8y1aVZaXV8Pu59g_wEAAwIAA3kAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>字节。</p><p>因为地址变号 1 和地址编号 2 之间差 4H，而编号 1 的机器代码占 4B，4/4=1，所以编址单位为字节。</p><p>(2)</p><p>4B。</p><p>因为 R2 种存储的是 i 的信息，i 左移两位也就是×4，所以也就是 4B。</p><p>(3)</p><p>OFFSET 应该是 -6。</p><p>bne 目标地址公式应该是：0804,8114H+4H+OFFSET×4。</p><p>占位符</p><p>这一步没写，最后应该指出 (PC)+4H+OFFSET×4。</p><p>(4)</p><p>绘图如下：</p>

<table><thead><tr><th>指令</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th><th>14</th><th>15</th><th>16</th><th>17</th><th>18</th><th>19</th><th>20</th><th>21</th><th>22</th><th>23</th><th>24</th><th>25</th><th>26</th><th>27</th></tr></thead><tbody><tr><td>1. sll</td><td>IF</td><td>ID</td><td>EX</td><td>MEM</td><td>WB</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>2. add</td><td></td><td>IF</td><td>s</td><td>s</td><td>s</td><td>ID</td><td>EX</td><td>MEM</td><td>WB</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>3. load</td><td></td><td></td><td></td><td></td><td></td><td>IF</td><td>s</td><td>s</td><td>s</td><td>ID</td><td>EX</td><td>MEM</td><td>WB</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>4. add</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>IF</td><td>s</td><td>s</td><td>s</td><td>ID</td><td>EX</td><td>MEM</td><td>WB</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>5. add</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>IF</td><td>ID</td><td>EX</td><td>MEM</td><td>WB</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>6. bne</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>IF</td><td>s</td><td>s</td><td>s</td><td>ID</td><td>EX</td><td>MEM</td><td>WB</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>分支气泡</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>nop</td><td>nop</td><td>nop</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>下轮 1</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>IF</td><td>ID</td><td>EX</td><td>MEM</td><td>WB</td></tr></tbody></table><p>可以注意，指令 6 从 EX 开始阻塞 3 个单位，恰巧使得编号 1 解决了数据冲突。</p><p>根据图分析，数据相关：编号 2,3,4,6；控制冒险：6。</p><p>根据图所示，指令 1 对 R2 的访问在时钟 5 的时候就写回了，下一次访问 R2 是 15，在此期间并没有再写 R2，所以不会因为数据阻塞。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGJqzdyjU1KaJ-FAdOK_Ze4-I7I42QACNhFrG8y1aVbJ9-DwdOVcSAEAAwIAA3kAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>1000</p><p>(2)</p><p>cache 16 行，和主存交换块大小 32B，也就是 16×32B=512B。</p><p>本题问的是指令 cache 的命中率，由于机器代码已经调入主存但不在 cache 内，所以需要进行一次调入。而整个指令总共有 08048100H-080408114H，也就是 18H=24B，可以存储在 512B 内，所以只会发生 1 次 cache 缺失，也就是刚调入的时候的第 1 条指令。</p><p>所以总共运行 6000 次只缺失 1 次，也就是 5999/6000=99.98%</p><p>(3)</p><p>add RI, RI, R5 可能会发生溢出。</p><p>loop: s11 R4, R2, 2 可能会导致缺页。</p><p>load 指令会导致缺页（这里的缺页指的是缺数据，而不是命令）</p><p>对于数组 A 的访问，只需要读取 1 个磁盘调入页表；</p><p>由于 TLB 第一次不命中，需要调入，又由于所有数组元素都在一页，所以第一次的时候访问 TLB 不命中，第二次重新访问，也就是 1001 次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGNqzdy1xitqurSeBvDd4IszLPvCrwACNxFrG8y1aVbq_wceCXBTnAEAAwIAA3kAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>采用连续分配方式，最短是将 29 个记录读入，然后向前移动一个单位，然后写入本身。需要访问 59 个磁盘。</p><p>F 文件控制块的长度会发生改变，起始位置也会发生改变。</p><p>(2)</p><p>采用链式分配，读入前 29 个，然后写入第 30 个之后，修改第 29 个的指针，所以总计 31 次。</p><p>每个存储块大小为 1KB，4 字节存放链接指针，4B=32bit，也就是 2^32 个磁盘块，所以最大长度应该是 2^32KB，也就是 4TB。</p><p>最大长度应该是 2^32×(1024-4)B=4080GB。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBGRqzdzEOrtevENwkzF-WBXNMBqJXAACOBFrG8y1aVZ3GdXZcZeWeQEAAwIAA3kAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>func 生产者_i(){</span></div></div><div><div><div>2</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>生产；</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>P（空位）；</span><span> // 1000</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>P（mutex）；</span><span> // 1</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>访问缓冲区；</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>V（mutex）；</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>V（生产）；</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>10</div></div><div><span>}</span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span>func 消费者_j(){</span></div></div><div><div><div>13</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>P（锁）；</span><span> // 1</span></div></div><div><div><div>15</div></div><div><span>    </span><span>// 执行 10 次</span></div></div><div><div><div>16</div></div><div><span><span>    </span></span><span>P（生产）；</span></div></div><div><div><div>17</div></div><div><span><span>    </span></span><span>P（mutex）；</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>访问缓冲区；</span></div></div><div><div><div>19</div></div><div><span><span>    </span></span><span>V（mutex）；</span></div></div><div><div><div>20</div></div><div><span><span>    </span></span><span>V（空位）；</span></div></div><div><div><div>21</div></div><div><span><span>    </span></span><span>V（锁）；</span></div></div><div><div><div>22</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore mutex</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>2</div></div><div><span>semaphore empty</span><span>=</span><span>1000</span><span>;</span></div></div><div><div><div>3</div></div><div><span>semaphore product</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div><span>semaphore key</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>func </span><span>producer_i</span><span>(){</span></div></div><div><div><div>7</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>8</div></div><div><span>    </span><span>produce</span><span>();</span></div></div><div><div><div>9</div></div><div><span>    </span><span>P</span><span>(empty);</span></div></div><div><div><div>10</div></div><div><span>    </span><span>P</span><span>(mutex);</span></div></div><div><div><div>11</div></div><div><span>    </span><span>putin</span><span>();</span></div></div><div><div><div>12</div></div><div><span>    </span><span>V</span><span>(mutex);</span></div></div><div><div><div>13</div></div><div><span>    </span><span>V</span><span>(product);</span></div></div><div><div><div>14</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span>}</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>func </span><span>consumer_j</span><span>(){</span></div></div><div><div><div>18</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>19</div></div><div><span>    </span><span>P</span><span>(key);</span></div></div><div><div><div>20</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>10</span><span>;i</span><span>++</span><span>){</span></div></div><div><div><div>21</div></div><div><span>      </span><span>P</span><span>(product);</span></div></div><div><div><div>22</div></div><div><span>      </span><span>P</span><span>(mutex);</span></div></div><div><div><div>23</div></div><div><span>      </span><span>get</span><span>();</span></div></div><div><div><div>24</div></div><div><span>      </span><span>V</span><span>(mutex);</span></div></div><div><div><div>25</div></div><div><span>      </span><span>V</span><span>(empty);</span></div></div><div><div><div>26</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>27</div></div><div><span>    </span><span>V</span><span>(key);</span></div></div><div><div><div>28</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>29</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h3>408 2015 真题 2 刷<a href="#408-2015-真题-2-刷"><span>#</span></a></h3><ul>
<li>136 分，这份卷子 1 刷的时候 147，错了第 8 题和计组的有一题没分析直接写的答案</li>
<li>这份的 2 刷选择题是很久之前做的，然后一直没对答案，又犯老毛病了，然后本来标记的要检查的题因为迁移到 codebuddy 没了，但是我觉得是次要原因，本来第一次做 147 的题第二次怎么就只有这个分。</li>
<li>第 6 题：分析对了选错了。</li>
<li>第 10 题：堆的比较问题</li>
<li>第 15 题：忽略了 cache 位。</li>
<li>第 27 题：低级错误，漏看了最后一个数字。</li>
<li>第 36 题：低级错误，要么错误看成正确，要么 CSMA/CD 协议看成 CA。</li>
<li>第 44 题 -4：第 2 问属于低级错误，想当然认为是 write，以及看图说话又想当然了</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHRqzhh0k1rKZjjO8X6IutKq0DapUAACwhVrG7fmcVYV9C4tsJG-SAEAAwIAA3kAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 A。</p><p>函数调用压栈是在底端，调用所以栈底应该是最先运行的，所以应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBI9qzyctIL3nk794CO9bV352-EhI3gAC6RJrG7fmeVboh7WWuenBHgEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 B。</p><p>纯模拟题，没什么好说的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJBqzyqZSNBVhJ8UugaDbxVwpgfc7AAC-BJrG7fmeVbKKghLHL06KAEAAwIAA3kAAz0E" alt="2 解" /><figcaption>2 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJFqzyqzAAFpCVQBLqHVXFmrPQABtTsvAAL7Emsbt-Z5VtCugG1IogYRAQADAgADeQADPQQ" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 D。</p><p>纯模拟题，模拟如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJJqzytgu8jwxkNyqtZ3r463QmiVnQACARNrG7fmeVbFOr65bezdiAEAAwIAA3kAAz0E" alt="3 解" /><figcaption>3 解</figcaption></figure><p></p><p>第 4 题棍母。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJRqzyveeXbu-GubZiPxJ1jl5L0unAACBRNrG7fmeVb8DqrwHN_j_AEAAwIAA3kAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 D。</p><p>绘制出对应的图，然后逐个模拟即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJVqzyxgruKpOpYX5pFrg_CW8Am7gwACChNrG7fmeVbsrTN_mHMb3QEAAwIAA3cAAz0E" alt="5 解" /><figcaption>5 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJZqzyx4js2E_sn7B1TY4jPq3PRZ4QACCxNrG7fmeVaBOzz_DM36uQEAAwIAA3kAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 D。</p><p>这道题也是纯模拟题。</p><p>Kruskal 是选边，首先选择最短的边，也就是 V1-V4，然后可以选择 V1-V3 或者 V2-V3。</p><p>Prim 算法是选结点，假设从 V1 开始选择，那么下一个加入集合的应该是 V4，再然后是 V3，V3 可以通过 V1-V3 或者 V3-V4，所以这道题应该选 V3-V4。</p><p>订：</p><p>克鲁斯卡尔第一次选 V1-V4，然后可以选择 V1-V3，V3-V4，V2-V3</p><p>Prim 算法从 V4 开始，第一次是 V1-V4，然后可以是 V1-V3 或者 V3-V4</p><p>分析对了选错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJdqzy1ofPyoVbLpqOP591ihu2-PBAACEBNrG7fmeVaMjLwfY0kJtAEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 A。</p><p>这道题也是纯模拟题，注意别模拟错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJhqzy5BP-Cj5oIqzSOoZR4n20Ip8QACFRNrG7fmeVa9OCSun0gcGwEAAwIAA3kAAz0E" alt="7 解" /><figcaption>7 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJlqzy5Xx-r5lBy6CQchzvTNDpiZEwACFhNrG7fmeVY7BlNlkbq-QgEAAwIAA3kAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 C。</p><p>KMP 算法的手算，算出来模式串是 011223。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJpqzy_Jj5EecJmvCRfi5Fv_XMuIMgACJBNrG7fmeVamBH6YfOJAOQEAAwIAA3kAAz0E" alt="8 解" /><figcaption>8 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJtqzzZhfROzxwOzCrhWhWFmKnADwAACNRNrG7fmeVaSEdJWhnoQmQEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题需要注意是移动次数还是比较次数，对于移动次数。</p><p>考虑 A，如果是直接插入排序，1,2,3,4,5,6,7，那么完全不需要移动。</p><p>考虑 B，如果是冒泡排序，1,2,3,4,5,6,7 也完全不需要移动。</p><p>考虑 C，基数排序每轮都要把对应的数放到对应的桶里，所以无关。</p><p>考虑 D，如果快排初始序列已经接近排序完成，那么移动次数会远高于乱序。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJxqzzh6-vDyMPzwD7xQfB7_OAf2nQACQBNrG7fmeVZF0kkfCVwYlwEAAwIAA3kAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 B。</p><p>这道题也是模拟，模拟如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJ1qzzknZ7yxb3c1scNfg3WRgJjldwACQxNrG7fmeVbinRG54Rna5wEAAwIAA3cAAz0E" alt="10 解" /><figcaption>10 解</figcaption></figure><p></p><p>订：中间那个得比较两次</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJ5qzzlClu1x1RoXl7QxGBU8x5n9QQACRBNrG7fmeVbgiNBc_njEewEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 A，属于背书题。希尔排序默认采用的是直接插入排序。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBJ9qzzllcSn-w2j62pK5jNRRtFLRogACSxNrG7fmeVbTVm-5wdPQiwEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题，计算机硬件可以直接运行的是机器语言程序，对于 x86 的 CPU 而言，微程序指令硬件也可以直接运行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKBqzzoSxgKA7XsIDrN-_D20AgMsewACThNrG7fmeVarhjMtO_vTrQEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 B，</p><p>对于补码要尽可能小，所以也就是负权位放一个 1，然后正权要尽可能的小，所以可以安排为 1000,0011B，也就是 -128+3=-125。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKJqzzuGrK79-8XupPvOP7UNKWI9ZQACVBNrG7fmeVbKCh_rYeOySAEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，考虑极端情况，阶码分别取 1111,1110B 和 0000,0001B，小对大，也就是跨越范围是 253，完全没超过。</p><p>对于 2，右归的时候数字向右移动导致阶码应该增大。阶码增大有可能导致上溢。</p><p>对于 3，左规的时候数字向左移动导致阶码应该减少。可能引起下溢变成 0。</p><p>对于 4，考虑溢出的是 0，结果不会溢出。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKNqz0AEdQw2PwrW_jCVcElLLdXmIAACYRNrG7fmeVYy7SZD8frabwEAAwIAA3kAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 D。</p><p>主存块大小为 4 个字，一个字 32bit，所以块内地址应该占 16B，也就是 4 位，采用直接映射，也就是 tag 号占 28 位。</p><p>cache 本身的有效位占 1 位，采用回写法脏位占 1 位。</p><p>数据总共是 4×32bit=128bit。</p><p>所以一个 cache 行占 28+2+128=158 位。</p><p>存放 4K 个字的 cache 总计 4K/4=1K 的主存块，所以也就是 158K。</p><p>订：</p><p>存放 4K 字的数据 cache，也就是 4K/4=1K 个 cache 行，也就是需要 10 位。由于块内地址是 4B×4=16B，所以占 4 位。也就是 tag 号占 32-10-4=18 位。</p><p>后续的分析都是一样的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKRqz0E7on5Yy8RaGva_cVnDo1i0LAACZBNrG7fmeVYWqZoW6o0JqAEAAwIAA3kAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 B。</p><p>假设 TLB 和 cache 都命中，那么只需要访存写回一次（因为是直写法）。所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKVqz0F5ky6aWEHEt7jMJdnIgK4bhQACZRNrG7fmeVan0D9bWNY8VAEAAwIAA3gAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题属于背书题，显然 C 和 D 应该排除。SRAM 是静态的，DRAM 是动态的，SDRAM 为同步 DRAM，本质上也要刷新。</p><p>所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKZqz0HQbtpgTI-v-U4WoNMmlKa8kwACZhNrG7fmeVbZcnJZ7Xn7kwEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 D。</p><p>按照四体交叉，本题可以绘图如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKdqz0Ifhy97ln6llbL60IljtoT0HgACaRNrG7fmeVZz_oqAvGgm-AEAAwIAA3kAAz0E" alt="18 解" /><figcaption>18 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKhqz0K09qqOF3L2ElOQTwznEwFlVQACbBNrG7fmeVZ51FY0r4SzmQEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 C。</p><p>本题属于背书题，对于 A 和 B，有 3 类，不互锁，半互锁和全互锁；对于 C，同步信号必须得由设备总线提供。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKlqz0MKCS0anYp9EvULqFO8KIbd0QACbRNrG7fmeVYaMJU9NFzKMwEAAwIAA3kAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 B。</p><p>寻寻道时间 8ms，转速 7200rpm=120rps，转半圈需要花的时间是 0.5/120=0.0042=4.2ms</p><p>由于每个磁道包含 1000 个扇区，访问一圈所需要的时间是 1/120，而访问 1000 中的一个也就是 1/120 整个再/1000，所以可以忽略不计。</p><p>所以这道题应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKpqz0QcGTAEdkB40hv1c0xsgwreigACchNrG7fmeVbilAnKuU3VBQEAAwIAA3kAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 B。</p><p>由于是采用中断控制方式，所以可以不需要传主存地址。</p><p>还有一类题可以分为两条链路思考。</p><p>CPU - IO 端口 - 设备本身</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKtqz0SnNwzgszHq_i6SXeWDxyRVzwACcxNrG7fmeVYiVU37vTOPDwEAAwIAA3kAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于故障会回到当前指令，例如缺页</p><p>对于 trap 是到下一条指令</p><p>对于终止程序直接都没了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBKxqz0Tfv8zpgfBnJmLEYXCqhfsQOQACeBNrG7fmeVYCsviBolh9hwEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题属于背书题，应该选 B。</p><p>PC 是硬件保存的，不需要保存 C 和 D 中的内容。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBK1qz0UQeYZ9azTe_CeB_Ja7aY8ncgACexNrG7fmeVbiFjPE1uAz-wEAAwIAA3kAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 C。取非属于库函数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBK5qz0Uu-TzJH43fTwOb4WjySwYyVAACfhNrG7fmeVZQ3t4VzEO46gEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，执行 P 操作后可能会保持就绪态，可能会从就绪态变成阻塞态。</p><p>对于 B，申请内存失败后进行页回收，内存紧收等，实在不行还可以 OOM killer。实在失败了，拿到失败信号之后纯看程序员是怎么写的，采用未处理则非法退出，采用处理则可以采用避退，降级等策略。</p><p>对于 C，启动 IO 设备会导致就绪态变成阻塞态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBK9qz0Zo86AV4Syu9agB9B6XEduI3QACkBNrG7fmeVara2L5O9biVQEAAwIAA3kAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 B。</p><p>死锁避免指的是银行家算法，死锁检测指的是资源分配图那一块。</p><p>S1 也不会限制用户申请资源的顺序，可以考虑系统资源充足的情况，此时就根本不会限制。考虑极端一点也可以考虑有两个安全分配序列，先后分给谁无所谓。至于只有一条路的是过于极端的想法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLBqz0divNafevn3-OWiKfDKTUnd8AAClRNrG7fmeVb0glMWNxeSSAEAAwIAA3kAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 B。属于纯模拟的题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLFqz0fgDZFPeaIkhINeyfK0gM1FkQACmBNrG7fmeVY6_mKecTmSLwEAAwIAA3kAAz0E" alt="27 解" /><figcaption>27 解</figcaption></figure><p></p><p>订：如下图所示</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXFq2I6ngmL_nS0Ktzhawm9pDljxtAAC_xNrG89ByVbAaK2T_CzRegEAAwIAA3cAAz0E" alt="27 订" /><figcaption>27 订</figcaption></figure><p></p><p>我估计是写的时候漏看了最后一个数字。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLJqz0f5niTlH7DVc3BR-wUU_rsmyQACmRNrG7fmeVZ2ey3XLkgdUQEAAwIAA3gAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 A，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLNqz0gVhVhBQj9UbTTpLQcvsfpMuAACmxNrG7fmeVYI6AlfM_dc2QEAAwIAA3kAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 B。</p><p>磁盘块大小为 1KB，索引指针占 4B，所以一个磁盘块内可以存储 1KB/4B=256 个索引。</p><p>直接索引有 10 个，也就意味着初始可以存 10KB 的数据。由于第一个数据在 1234B，所以只需要根据索引结点直接读入磁盘即可，也就是需要访问 1 个磁盘块。</p><p>对于 307400B 约等于第 307 个磁盘，所以应该在二级索引，也就是根据直接索引得到 1 级间接索引，根据 1 级间接索引读入 2 级间接索引，然后根据该索引读入磁盘，也就是 3 个。</p><p>所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLRqz0lX8cBDI4nMWeG3IC228JHspwACphNrG7fmeVZ87LpzVsytQQEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 C，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLVqz0lzRt1A6_-GEuz34N6glVdWHwACpxNrG7fmeVarz_9_NApqHgEAAwIAA3kAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 C。</p><p>使用位图法，假设释放的盘块号是 409612，由于 1024×8=8192，409612/8192=50.00146，也就是说按从 0 开始算，记录在第 50 个盘块，所以从 32 开始算，是第 82 号块。</p><p>409612-8192×50=12，也就是第 12 个 bit 应该在从 0 开始计算的第 1 字节里。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLZqz0mEJVcU1YbbOceli_AX7YQMtwACqBNrG7fmeVZePTUkbniqOAEAAwIAA3kAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 C。</p><p>采用 SCAN 调度，也就意味着应该是从 58 向 200 移动。移动到 200 后然后超小的移动。</p><p>大致计算可得 200-58+200-15=142+185=327，所以应该选 325。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLdqz0n5h5fYhPTyOrGoa3k_22e5dAACqRNrG7fmeVZ4MJ5ubKN6wgEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选 D，属于背书题。POP3 使用 TCP。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLhqz0oTzI3HiN9485IYOA4RY1bVLAACqxNrG7fmeVYbpqqoRTDl1wEAAwIAA3kAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 A。</p><p>首先观察编码 1，显然是非归零编码，所以 CD 排除。</p><p>对于编码 2，假设是曼彻斯特编码，可以得到题目中的。假设是差分曼彻斯特编码，跳变代表 0，不跳变代表 1。</p><p>看中间，1010100，无法匹配上。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLlqz0rGs6fZXiqEqio3jZJBTfN2vQACrBNrG7fmeVY6scyLEoXTXAEAAwIAA3kAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 B。</p><p>滑动窗口协议，假设最大可以传播 N 帧，先计算 Td，Td=1000B/128000，也就是 Td=8000/128000=8/128=1/16。</p><p>RTT=500ms，所以通过公式：NTd/(Td+RTT)≥0.8，计算可得 N≥7.2。也就是 N 至少取 8。</p><p>这里应该考虑极限情况，也就是后退 N 帧协议，而不是考虑选择重传协议。</p><p>所以根据公式，8≤2^n-1，也就是 n 应该取 4。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLpqz0z4ju5RgMuEUf4mOsiRug3q-wACuRNrG7fmeVYf269FQ4crrwEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 A，属于背书题。</p><p>订：对于 A，CSMA/CD 显然是边发送数据帧边检测是否发生冲突，显然我是把题目想成了 CSMA/CA，或者只看了前两项，正确想成错误。肯定是 B，CSMA/CA 才是无线链路。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLtqz00PjBECkJK4T8CwYSVov5IZWwACuhNrG7fmeVZIkucLIQZ4JgEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 A，属于背书题。</p><p>B 应该是广播域，C 应该是冲突域，对于 D 由于只是在数据链路层，所以没法让不同网络层协议互联。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBLxqz008wg6PB2_2G00-X4uV7xgDygACuxNrG7fmeVZ7bOO8CQgZAAEBAAMCAAN5AAM9BA" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 C。</p><p>根据最长前缀匹配原则。5 是 0101，32-27=5，也就是覆盖最后 5 位，显然包含在内，所以本题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBL1qz02VZ4C1xsn7nqGGdd0eoP3duAACvRNrG7fmeVbqHxxbdY96QgEAAwIAA3kAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 A。</p><p>0 时刻，拥塞窗口为 1，接收窗口为 16</p><p>1 时刻，拥塞窗口为 2，接收窗口为 15</p><p>2 时刻，拥塞窗口为 4，接收窗口为 13</p><p>3 时刻，拥塞窗口为 8，接收窗口为 9</p><p>4 时刻，拥塞窗口为 16，接收窗口为 1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBL5qz04GUHwqf6pATdvPxgK59PpVHgACvxNrG7fmeVbzIocEAAEDh78BAAMCAAN4AAM9BA" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 C。</p><p>题目里有 close。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBL9qz04ryFOsOZ_LfSWg_ZATOtOmJgACwBNrG7fmeVZLCQ9CWLBuYgEAAwIAA3kAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>设置两个指针，pre 和 curr，分别指向头节点和头节点的下一个结点</li>
<li>设置一个数组 hasmap[n+1]，充当哈希表使用</li>
<li>判断 curr 指向数据的绝对值是否出现在哈希表里，如果存在，那么删除当前结点，pre 不动，curr 重新定义为 pre-&gt;link</li>
<li>如果不存在在哈希表里，那么设置为存在，pre 和 curr 共同向前移动一个单位</li>
<li>重复上述步骤，直至 curr 为空</li>
</ol><p>(2)</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>struct</span><span> </span><span>LNode</span><span>{</span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>LNode</span><span>*</span><span> </span><span>link</span><span>;</span></div></div><div><div><div>4</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>(3)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>abs</span><span>(</span><span>int</span><span><span> </span><span>x</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span> (</span><span>x</span><span>&lt;</span><span>0</span><span>){</span></div></div><div><div><div>3</div></div><div><span>        </span><span>return</span><span> </span><span>-</span><span>x</span><span>;</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>5</div></div><div><span>    </span><span>return</span><span> </span><span>x</span><span>;</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>void</span><span> </span><span>solve</span><span>(</span><span>LNode</span><span>*</span><span><span> </span><span>L</span><span>,</span></span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>9</div></div><div><span>    </span><span>int</span><span> </span><span>hasmap</span><span>[</span><span>n</span><span>+</span><span>1</span><span>];</span></div></div><div><div><div>10</div></div><div><span>    </span><span>LNode</span><span>*</span><span> </span><span>pre</span><span>=</span><span>L</span><span>;</span></div></div><div><div><div>11</div></div><div><span>    </span><span>LNode</span><span>*</span><span> </span><span>curr</span><span>=</span><span>L</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>    </span><span>while</span><span>(</span><span>curr</span><span>!=</span><span>nullptr</span><span>){</span></div></div><div><div><div>14</div></div><div><span>        </span><span>if</span><span>(</span><span>hasmap</span><span>[</span><span>abs</span><span>(</span><span>curr</span><span>-&gt;</span><span>data</span><span>)]</span><span>==</span><span>1</span><span>){</span></div></div><div><div><div>15</div></div><div><span>            </span><span>LNode</span><span>*</span><span> </span><span>tmp</span><span>=</span><span>curr</span><span>;</span></div></div><div><div><div>16</div></div><div><span>            </span><span>pre</span><span>-&gt;</span><span>link</span><span>=</span><span>curr</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>17</div></div><div><span>            </span><span>delete</span><span> </span><span>tmp</span><span>;</span></div></div><div><div><div>18</div></div><div><span>            </span><span>curr</span><span>=</span><span>pre</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>19</div></div><div><span><span>        </span></span><span>}</span><span>else</span><span> {</span></div></div><div><div><div>20</div></div><div><span>            </span><span>hasmap</span><span>[</span><span>abs</span><span>(</span><span>curr</span><span>-&gt;</span><span>data</span><span>)]</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>21</div></div><div><span>            </span><span>pre</span><span>=</span><span>pre</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>22</div></div><div><span>            </span><span>curr</span><span>=</span><span>curr</span><span>-&gt;</span><span>link</span><span>;</span></div></div><div><div><div>23</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>24</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>25</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(4)</p><p>时间复杂度：O(n)</p><p>空间复杂度：O(n)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWtq2IqtIGrBgHIzfW0k4JE38IcSEAAC9BNrG89ByVY561AamSsVuAEAAwIAA3gAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>行、列下标都从 0 开始，图是无向图，所以矩阵对称：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>A</span><span>[</span><span>5</span><span>][</span><span>5</span><span>] </span><span>=</span><span> {</span></div></div><div><div><div>2</div></div><div><span><span>    </span></span><span>{</span><span>0</span><span>, </span><span>1</span><span>, </span><span>1</span><span>, </span><span>1</span><span>, </span><span>0</span><span>},</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>{</span><span>1</span><span>, </span><span>0</span><span>, </span><span>0</span><span>, </span><span>1</span><span>, </span><span>1</span><span>},</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>{</span><span>1</span><span>, </span><span>0</span><span>, </span><span>0</span><span>, </span><span>1</span><span>, </span><span>0</span><span>},</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>{</span><span>1</span><span>, </span><span>1</span><span>, </span><span>1</span><span>, </span><span>0</span><span>, </span><span>1</span><span>},</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>{</span><span>0</span><span>, </span><span>1</span><span>, </span><span>0</span><span>, </span><span>1</span><span>, </span><span>0</span><span>},</span></div></div><div><div><div>7</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>7 条边分别是 01、02、03、13、14、23、34。每行非零个数就是度数，deg(0)=3、deg(1)=3、deg(2)=2、deg(3)=4、deg(4)=2，加起来 14=2×7，对得上。</p><p>(2)</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>A</span><span>^</span><span>2</span><span>[</span><span>5</span><span>][</span><span>5</span><span>] </span><span>=</span><span> {</span></div></div><div><div><div>2</div></div><div><span><span>    </span></span><span>{</span><span>3</span><span>, </span><span>1</span><span>, </span><span>1</span><span>, </span><span>2</span><span>, </span><span>2</span><span>},</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>{</span><span>1</span><span>, </span><span>3</span><span>, </span><span>2</span><span>, </span><span>2</span><span>, </span><span>1</span><span>},</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>{</span><span>1</span><span>, </span><span>2</span><span>, </span><span>2</span><span>, </span><span>1</span><span>, </span><span>1</span><span>},</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>{</span><span>2</span><span>, </span><span>2</span><span>, </span><span>1</span><span>, </span><span>4</span><span>, </span><span>1</span><span>},</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>{</span><span>2</span><span>, </span><span>1</span><span>, </span><span>1</span><span>, </span><span>1</span><span>, </span><span>2</span><span>},</span></div></div><div><div><div>7</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>0 行 3 列的元素是 2，含义是从顶点 0 到顶点 3 长度为 2 的路径有 2 条，也就是 0-1-3 和 0-2-3。</p><p>乘的时候想清楚，<code>(A²)[i][j] = Σk A[i][k]·A[k][j]</code>，k 枚举的是中转点，所以算出来就是 i 经过一个中转点走到 j 的走法数。</p><p>A² 依然是对称的，而且对角线 <code>A²[i][i]</code> 恰好等于 deg(i)，算完拿这两条验一遍，不对称就是乘错了。</p><p>(3)</p><p><code>B^m</code> 中第 i 行第 j 列的非零元素表示：顶点 i 到顶点 j 存在长度为 m 的路径，也就是走 m 条边能够到达，元素的值就是这种路径的条数。</p><p>m 只到 n 是因为 n 个顶点的图里，两点之间只要有通路，就一定存在长度不超过 n-1 的简单通路，再长必然重复经过顶点，拆掉回路以后还是同一条通路，问不出新东西。</p><p>这题问的是「非零元素」的含义，先答存在长度为 m 的路径，再答条数。只写条数会把可达性那层意思漏掉。</p><p>还有一点，这里数的是通路，允许重复经过顶点和边，不是简单路径。上面 0 到 3 那两条刚好都是简单路径，容易让人误以为在数简单路径。</p><p>顺手记一下连通性的判法，拿 A+A²+…+A^(n-1) 去看，每一对顶点之间那一项都非零就是连通。</p><p>（这道题是 AI 做的，我觉得没必要再做一遍了）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWxq2IrGPGUxgz7tGzl7WpBjmiESygAC9RNrG89ByVZkp7GfOjOjDwEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>R0，R1，R2，R3，PC 是程序员可见的。</p><p>因为是单总线结构，假设 ALU 需要执行一个双指令数指令，那么数据会在总线上冲突，所以应该先送一个数到 T，然后再送一个数到另一侧。</p><p>(2)</p><p>ALUop 位数至少为 3</p><p>SRop 位数至少为 2</p><p>(3)</p><p>SRout 控制的部件为三态门，由于是单总线结构，所以要在某些时刻不需要 SRout 的数据。</p><p>(4)</p><p>1,2,3,5,8</p><p>(5)</p><p>7-&gt;4</p><p>6-&gt;9</p><p>(6)</p><p>为了 PC 自动 +“1”，因为是 16 位的计算机，所以是 2B，也就是 +2。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXBq2IspOxS_5hCaiCIZWKLQCQYhAAP5E2sbz0HJVoliFbsJMTNHAQADAgADeQADPQQ" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>寻址方式有 0 和 1 两种，也就是 1 位，目的操作数为通用寄存器，有 0,1,2,3 4 种，也就是 2 位，由于最多支持 3 地址指令，所以除了指令操作码剩下的部分应该是 16-3×3=7，也就是 OP 为 7 位。</p><p>所以也就是 2^7=128 条指令。</p><p>(2)</p><p>0000001 001 000 000B=0000,0010,0100,0000B=0240H</p><p>0000010 001 010 000B=0000,0100,0101,0000B=0450H</p><p>0000011 111 010 011B=0000,0111,1101,0011B=07D3H</p><p>订：</p><p>0000010 010 001 000B=0488H</p><p>0000011 011 101 010B=06EAH</p><p>(3)</p><ul>
<li>0</li>
<li>mov</li>
<li>mova</li>
<li>left</li>
<li>read</li>
<li>sub</li>
<li>mov
- write</li>
</ul><p>订：SRout</p><p>(4)</p><p>4</p><p>2</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCW1q2IrcCHub05qECizw9ieUS_ia3gAC9hNrG89ByVbntk4kU8n0IwEAAwIAA3gAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore emptyA</span><span>=</span><span>M</span><span>-</span><span>x;</span></div></div><div><div><div>2</div></div><div><span>semaphore emptyB</span><span>=</span><span>N</span><span>-</span><span>y;</span></div></div><div><div><div>3</div></div><div><span>semaphore fullA</span><span>=</span><span>x;</span></div></div><div><div><div>4</div></div><div><span>semaphore fullB</span><span>=</span><span>y;</span></div></div><div><div><div>5</div></div><div><span>semaphore mutexA</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>6</div></div><div><span>semaphore mutexB</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>func </span><span>A</span><span>(){</span></div></div><div><div><div>9</div></div><div><span>  </span><span>while</span><span>(</span><span>true</span><span>){</span></div></div><div><div><div>10</div></div><div><span>    </span><span>P</span><span>(fullA);</span></div></div><div><div><div>11</div></div><div><span>    </span><span>P</span><span>(mutexA);</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>从 A 信箱里取邮件;</span></div></div><div><div><div>13</div></div><div><span>    </span><span>V</span><span>(mutexA);</span></div></div><div><div><div>14</div></div><div><span>    </span><span>V</span><span>(emptyA);</span></div></div><div><div><div>15</div></div><div><span><span>    </span></span><span>回答问题并提出一个新的问题;</span></div></div><div><div><div>16</div></div><div><span>    </span><span>P</span><span>(emptyB);</span></div></div><div><div><div>17</div></div><div><span>    </span><span>P</span><span>(mutexB);</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>将新邮件放入 B 的信箱;</span></div></div><div><div><div>19</div></div><div><span>    </span><span>V</span><span>(mutexB);</span></div></div><div><div><div>20</div></div><div><span>    </span><span>V</span><span>(fullB);</span></div></div><div><div><div>21</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>22</div></div><div><span>}</span></div></div><div><div><div>23</div></div><div>
</div></div><div><div><div>24</div></div><div><span>func </span><span>B</span><span>(){</span></div></div><div><div><div>25</div></div><div><span>  </span><span>while</span><span>(</span><span>true</span><span>){</span></div></div><div><div><div>26</div></div><div><span>    </span><span>P</span><span>(fullB);</span></div></div><div><div><div>27</div></div><div><span>    </span><span>P</span><span>(mutexB);</span></div></div><div><div><div>28</div></div><div><span><span>    </span></span><span>从 B 信箱里取邮件;</span></div></div><div><div><div>29</div></div><div><span>    </span><span>V</span><span>(mutexB);</span></div></div><div><div><div>30</div></div><div><span>    </span><span>V</span><span>(emptyB);</span></div></div><div><div><div>31</div></div><div><span><span>    </span></span><span>回答问题并提出一个新的问题;</span></div></div><div><div><div>32</div></div><div><span>    </span><span>P</span><span>(emptyA);</span></div></div><div><div><div>33</div></div><div><span>    </span><span>P</span><span>(mutexA);</span></div></div><div><div><div>34</div></div><div><span><span>    </span></span><span>将新邮件放入 A 的信箱;</span></div></div><div><div><div>35</div></div><div><span>    </span><span>V</span><span>(mutexA);</span></div></div><div><div><div>36</div></div><div><span>    </span><span>V</span><span>(fullA);</span></div></div><div><div><div>37</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>38</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCW5q2IrtH7QD5hRBugqwbCHeqoxdJAAC9xNrG89ByVaU4B_MMTW0LgEAAwIAA3gAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>页的大小为 2^12B=4KB</p><p>页框的大小为 2^12B=4KB</p><p>进程的虚拟地址空间大小为 2^20 页</p><p>(2)</p><p>页目录项和页表项均占 4B。</p><p>先计算页目录表，页目录表需要 2^10 个，也就是 2^10×4B/4KB=1，即 1 页。</p><p>再计算页表，页表需要 2^20 个，也就是 2^20×4B/4KB=1024，即 1024 页。</p><p>所以总共是 1025 页。</p><p>(3)</p><p>访问虚拟地址 1&lt;0100&gt;,0000H=0000,0001,00｜00,0000,0000,｜0000,0000,0000B，页目录号为 4，页号为 0</p><p>访问虚拟地址 2&lt;0111&gt;,2048H=0000,0001,00｜01,0001,0010,｜0000,0100,1000B，页目录号为 4，页号为 2+32+512=546</p><p>显然一开始的时候访问的都是同一个页目录表（该地址位于内存），根据页目录号 4 得到其页表的物理地址并访问。</p><p>所以访问的是同一个二级页表。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCW9q2IsDHGO3oFhBmPvlHyz7tvRmigAC-BNrG89ByVab6krQo0dwCwEAAwIAA3kAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>考虑 111.123.15.3/24，网络号占 24 位，也就是可供分配的总共是 32-24=8 位。当前已经分配了 1,2,3,4，则还可以分配 2^8-4-2=250 个 IP 地址，也就是 111.123.15.5-111.123.15.254</p><p>DHCP 协议获取 IP 地址的过程中，发送封装 DHCP Discover 报文的 IP 分组源目的地址为：0.0.0.0，目的 IP 地址为 255.255.255.255</p><p>(2)</p><p>ff-ff-ff-ff-ff-ff</p><p>00-a1-a1-a1-a1-a1</p><p>(3)</p><p>可以访问 WWW 服务器，由于默认网关为 255.255.255.0，所以 WWW 服务器和主机 1 在同一个网络下。</p><p>不可以访问 Internet，因为默认网关是 DHCP 服务器，无法转发 IP 数据报到互联网。</p></section><section><h3>408 2016 真题 2 刷<a href="#408-2016-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为：143，1 刷为 122</li>
<li>第 44 题 -6，第一问应该是每秒钟，脑子抽了算成每分钟了，第二问应该按照时钟周期算，我按照时间算了。分析大体是没问题的</li>
<li>第 47 题 -1，显示链接分配 VS 隐式链接分配</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcpq3FmBj3bxXnLO92c_kLkdkgS4RgACeRBrG2MQ4FaHUJJ_eMjm7wEAAwIAA3cAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 D。</p><p>应该采用模拟法，随便找一个考试模拟，假设选 a，那么根据链接地址：</p><p>a-&gt;e-&gt;b-&gt;d-&gt;NULL。</p><p>很显然缺了 c，所以再次观察，c-&gt;a-&gt;e-&gt;b-&gt;d-&gt;NULL，总共五个元素齐全。</p><p>f 位于 1014H，插入单链表。f 逻辑上位于 a 和 e 之间，那么意味着 a 之后的地址应该改为 1014H，f 之后的地址应该改为 1010H，e 的地址保持不变是 1004H。</p><p>所以，aef 的链接地址分别为 1014H，1004H，1010H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCctq3FqYZxZ6-9Af5EH0grQfkX7JdQACfBBrG2MQ4FY9OY_GsMtoyAEAAwIAA3cAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 D，示意图如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcxq3GJYVvjybMB3GulZA9Nc1qOqugACjBBrG2MQ4FY96ltY3sAltQEAAwIAA3cAAz0E" alt="2 解" /><figcaption>2 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCc1q3GJvpytmka2nQhc1M8u-4DYslAACjhBrG2MQ4Fbd1_fT_zizawEAAwIAA3cAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 C。</p><p>采用模拟法如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCc5q3GMdmGJ9EpsOCLukGkRbrfuz1gACjxBrG2MQ4FazriEL2HTyhgEAAwIAA3kAAz0E" alt="3 解" /><figcaption>3 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCc9q3GM7YrkPsWy1yy_YHSrdc9z29wACkBBrG2MQ4FaBSiwt7LxJRQEAAwIAA3cAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 B。</p><p>注意本题是三对角矩阵，按照行压缩存储如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdBq3GP-P6DgcjFB2n3fcD9KSuWgQAACkRBrG2MQ4Fao79-D14iSRwEAAwIAA3kAAz0E" alt="4 解" /><figcaption>4 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdFq3GQQdozTYPFy5i2kHJHAoHmILAACkhBrG2MQ4FZ4NeMN0NlcQAEAAwIAA3kAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 C。</p><p>一棵树有 15 条边，也就是可以 16 个结点一棵树。剩下 25-16=9 个结点，所以 9+1=10，应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdJq3GULMMK7i59Bj9yOXOOYs0jWMwAClRBrG2MQ4Fa9aElXEIIyfgEAAwIAA3kAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，如果 V1 到 V5，那么下一个一定是 V4，然后 V3，V2，所以是对的。</p><p>对于 B，如果 V1 到 V3，那么下一个一定是 V2，然后后面一定是 V5，然后是 V4，所以是对的。</p><p>对于 C，如果 V1 到 V2，那么下一个一定是 V5，然后是 V4，最后是 V3，所以是对的。</p><p>对于 D，如果 V1 之后是 V2，那么之后一定是 V5，而不是 V3，所以错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdNq3GW1MwdEXoqATxHNNaol4Kl7gAAClhBrG2MQ4Fbky8F0sJ6ujAEAAwIAA3cAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 B。</p><p>拓扑排序本质上是选择一个入度为 0 的结点，然后选取这个点出去的所有结点即可（顺着抓取）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdRq3GcNsJW_6cd-Tp8iFfxNWnEEdAACnBBrG2MQ4FYAAd2pm581y3MBAAMCAAN3AAM9BA" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题直接试，而不是用计算法，太麻烦了。</p><p>一开始是 1，然后看 1 出去是什么，显然 5 是最短的，所以第二个是 5。然后看 5 出去可以是 2 和 6，然而此时最短的应该是 1 出去的 2，所以第二个应该选 2（这都是和题目一样的）。</p><p>2 出去可以是 4,3。到 3 最短是 7，到 6 最短是 9，到 4 最短是 11，所以最短应该选 3，所以 CD 排除。</p><p>最后看 AB，到 4 最短是 11，到 6 最短是 9，所以应该先是 6。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdVq3GkUMUHqWgAB-mfxx8ndNP8f13sAAg4RaxtjEOBWX8wY1cWuuJkBAAMCAAN3AAM9BA" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题属于看代码说话，分析具体代码即可。</p><p>这道题的意思是，当 k=0 的时候，跳到数组的第 3 个元素，然后比对第 3 个，第 2 个和第 1 个元素，然后 k+3。</p><p>对于 A，x 不在数组的时候，前者需要比对 n 次，后者则是 log2n</p><p>对于 B，x 接近开头的时候，是常数次，非常少，后者则是 log2n。</p><p>对于 C，x 接近数组尾的时候，前者需要比对 n 次，后者则是 log2n</p><p>对于 D，x 位于数组中间的时候，前者需要比对 n/2 次，后者则是常数次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdZq3GnpqhsId4e1R7M5xqRjor5y1QACWRFrG2MQ4Fa7fNejnVCjUAEAAwIAA3kAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 A。</p><p>B+ 树最后一条有一个专门的链表，支持顺序查找。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCddq3GoaLppEP05rqAeNaeBIsTMmbAACXxFrG2MQ4FYqpgUkIL9UcgEAAwIAA3kAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 D。</p><p>考察的是外部排序，外部排序利用归并排序。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0Fq0eN0Ex7lN2h0Q4O708TJ2jcQuQACpxBrG6jnkFYkqxM_rRESZQEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 C。</p><p>高级语言程序转换成机器语言或者转换成汇编语言的过程称之为编译。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0Jq0eSWUv2y3b9GS1aMd0hhH0gtsgACqRBrG6jnkFaJUUHi01gc8wEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 D。</p><p>short si = -32767;，由于 65536/2=32768，所以 si=1000,0000,0000,0001B。</p><p>unsigned short usi 是强制转义，所以也就是 32768+1，也就是 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0Nq0eUtW3gcWjAecoNLBfpu6rroVQACqhBrG6jnkFbA5CNXE2At8AEAAwIAA3kAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 A。</p><p>由于是小端法，所以 40H 存储的是 88H，41H 存储的是 77H，以此类推。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0Rq0eV5aTJ_F4c6tAOgrkSiYKTCpAACqxBrG6jnkFbxy__lXi-OBgEAAwIAA3kAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 C。</p><p>数据区大小为 1KB。块为 16B，一个块可以存储 4 个数据，又 1000 个数据肯定装不下整个 cache，所以只需要考虑当前即可。</p><p>由于每缺失一次就可以访问 4 个数据，又由于 a[k] 一次访问 2 次，所以 8 次里缺失 1 次，最终应该是 1/8，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0Vq0eY6oowmv4yrcPzsMHa1ERywlgACrBBrG6jnkFZ_MlGPtxM3hAEAAwIAA3kAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 C。</p><p>5FFFH-4000H=1FFFH，也就是 0001,1111,1111,1111B，所以可以看到是 2^13B，也就是 8KB。所以 64KB-8KB=56KB。</p><p>所以，56KB/(8K×4bit)=14。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0Zq0ei_Rdzmdpe5Dd1JJ1caJNW9JAACrhBrG6jnkFZH0PtdVP2xaAEAAwIAA3kAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 C。</p><p>本题问的是操作数的地址，变址寻址得到的是间址寻址的初值，间址寻址寻址一次是操作数的地址，得寻址 2 次才可以得到操作数，所以应该是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0dq0ekMVIwn5TweD8qq_d8eJ7NEhQACrxBrG6jnkFYeR-ggmXeKPAEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 B。</p><p>主存空间 4GB，也就是 2^32B，由于采用 32bit=4B 的指令字长，所以 PC 最短可以是 2^32B/4B=2^30，所以 PC 应该至少是 30，IR 应该至少是 32。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0hq0elj7nPo40ptzKG9Lq5MlX4r0gACsBBrG6jnkFa6pjj_0_tbjgEAAwIAA3kAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 B</p><p>数据冒险有 2 类，数据冲突和写后读。</p><p>本题 I2 和 I3 之间存在写后读，而对于 I3 和 I4 是读后写，只要保证先读了就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0lq0en_ghi8TKcvSTLKVNMeBvAWgAACsxBrG6jnkFbVthUlyCEpcgEAAwIAA3kAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 A。</p><p>单周期不可能采用单总线。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0pq0eofMGnHv6AnQrFYrYFT9GbGMAACtBBrG6jnkFajKBB-Dq5oTwEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题属于背书题，应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0tq0eq4b9hFsl53ufxA7urH4yguIwAC1RBrG6jnkFaVqGVbM16JjgEAAwIAA3kAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题属于背书题，缺页属于异常中的故障，其他三个都是对的，应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0xq0ervhhHMl0EhHIHa13lemPUWfAAC1hBrG6jnkFbVI1g7ReO5rQEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 1，批处理用户不允许和用户计算机交互。</p><p>对于 2，属于背书问题。</p><p>对于 3，属于背书问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB01q0eyhrHm8SmtQUuTF5wq9E0Z_gQAC2xBrG6jnkFYgYhyf7ohbvwEAAwIAA3kAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题并不是输入输出设备里缓冲区，所以并不互斥，只有当前的东西是互斥的，这个需要搞清楚。</p><p>所以，A 连续执行 2,3,4，B 得在 A 的 2 结束后执行 2，在 3 结束后执行 3，在 4 结束后执行 4，所以 B 总计开销 3+4+4=11，不过只引入了最后的 4ms，对于 3 也是同理，只引入了最后的 4ms。</p><p>所以最后应该是 2+3+4+4+4=17。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB05q0e23609fKCb_aa7e-xWmoDP_nQAC3hBrG6jnkFZ5HEtVIPT7zgEAAwIAA3kAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题首先应该往经典模型上套，使用资源分配图，可以绘制出是一个经典哲学家问题的变种。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB09q0fMHlXl5ykpFFZ-UIvveS1_McQAC-RBrG6jnkFZcFf3OmzmouwEAAwIAA3kAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题，访问位优先，所以访问位应该是 0，然后是 1，所以也就是应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Bq0fOFv5qD0HVgCbu0Y0jx2J2rQAAC-hBrG6jnkFaakUkJLIX5JgEAAwIAA3gAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 A，操作系统负责唤醒阻塞进程，而不是退出临界区的进程</p><p>对于 B，显然如此</p><p>对于 C，满足让权等待原则的在考纲里其实只有信号量方法</p><p>对于 D，如果 TSL 在关中断下执行，那么事实上永远都不会获得锁。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Fq0fdcK-OPLKNAjkDmc0fJZlJl0gACORtrG-BrkFZQxEVeK9P7IgEAAwIAA3gAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 D。</p><p>观察到短号为 2 的段长最多为 300，所以越界。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Jq0fe62Si2cDYDP5Co_KtArA6qOAACOxtrG-BrkFZan9sQXEuklgEAAwIAA3gAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 A</p><p>本题超纲，不过能做，工作集的概念是当前 t 向前 k 个单位，k 为窗口大小。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Nq0ffvuKkpYgr0Rf3Pxoj_q0zW1wACPBtrG-BrkFY0rRwWdOPt7wEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，局部变量是无所谓的。</p><p>对于同一个进程内的线程才会互斥，不同进程的不会，所以 BD 排除。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Rq0fh82X5peOV37CoC0ygWeNVjlwACPhtrG-BrkFZZVu7OG9oNugEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，SPOOLing 技术是需要将数据存储在磁盘里的，而不是内存。</p><p>对于 BC 显然。</p><p>对于 D，应该是操作系统控制的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Vq0fjI153pzhYtiN5Lmh9FtMSZzwACPxtrG-BrkFZjdGyOCduh3AEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 A。</p><p>管程还能实现进程的同步。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1Zq0fkC-bklWU9hfsMhN3XOhnqpuwACQBtrG-BrkFYd4Z1bb2-fnQEAAwIAA3gAAz0E" alt="33-41 图" /><figcaption>33-41 图</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB1dq0fkaeO8M4AABfIoskU20x4KWPA8AAkEbaxvga5BWCnuRmUTubuQBAAMCAAN5AAM9BA" alt="33-34" /><figcaption>33-34</figcaption></figure><p></p><p>第 33 题应该选 C，R1 是路由器，最高在网络层；R2 是交换机，最高在数据链路层；R3 是集线器，最高在物理层。</p><p>第 34 题应该选 C。考虑香农定理，30=10log10S/N，S/N=1000，8000log2(1+1000)≈8000×10=80000，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdpq3IwgVd0PwNCl_AXLiBMwh5-akQAC6hFrG2MQ4FZ9E1lpAuA_qwEAAwIAA3cAAz0E" alt="35-40" /><figcaption>35-40</figcaption></figure><p></p><p>第 35 题应该选 D。</p><p>第 36 题应该选 B。</p><p>由于是 100base-T 交换机，所以采用的是 100Mbps 和 64B 的最短帧。</p><p>所以 RTT 应该是 64B/100Mbps=5.12us。</p><p>也就是说，假设 H3 和 H4 距离为 x，那么最短应该是 2x/200+1.535×2=5.12，所以 x=205。</p><p>需要注意双向，所以应该再生 2 次。</p><p>第 37 题应该选 B。</p><p>由于坏消息传得慢。</p><p>第 38 题应该选 D。</p><p>R2 装了 NAT 服务，所以源 IP 地址应该是公网地址。而对于 C 的公网地址是网络地址。</p><p>第 39 题应该选 C。</p><p>对于 C，H1 和 H3 不属于同一个网络，所以 H1 想和 H3 通信，应该交付给默认网关。然而本题 H1 没有具体的默认网关路由器，所以无法通信。</p><p>第 40 题应该选 C。</p><p>本题问的是最多和最少，先考虑最少的情况：</p><p>最少的情况，域名服务器本身有缓存，所以是 0 次。</p><p>最多的情况，域名服务器向根，也就是 . 查询，得到 .com 顶级域名服务器的 IP 地址；然后根据这个 IP 地址查询 .xyz.com，得到 .xyz.com 权限域名服务器的 IP 地址；根据这个 IP 地址查询，得到 .abc.xyz.com 二级权限域名服务器的 IP 地址；根据这个 IP 地址查询，得到所需的 IP 地址。</p><p>注意，如果是最大，那么有多台权限域名服务器。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdtq3Iw_G27aNbjxd-wYovOM3I0K-gAC6xFrG2MQ4FZfDf0ey4EXvgEAAwIAA3cAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>由于一开始的时候，初始序号是 100，那么 H3 发送的第二次握手期待其发 101。</p><p>SYN=1，ACK=1</p><p>确认序号 ack=101</p><p>(2)</p><p>逐次模拟，注意这里收到的确认段指的是已经建立连接后的。</p><p>设已经建立好连接的时刻为 t1，那么：</p><p>t1 时刻，H3 的拥塞窗口为 1</p><p>t2 时刻（接收到 1 个确认段），H3 的拥塞窗口为 2，S 的接收窗口为 19</p><p>t3 时刻（接收到 2 个确认段），H3 的拥塞窗口为 4，S 的接收窗口为 19-2=17</p><p>t4 时刻（接收到 4 个确认段），H3 拥塞窗口为 8，S 的接收窗口为 17-4=13。</p><p>t4.1 时刻（接收到 1 个确认段），H3 拥塞窗口为 9，S 的接收窗口为 13-1=12。</p><p>综上所述。</p><p>H3 收到第 8 个确认段所通告的接收窗口是 12kB。</p><p>此时 H3 拥塞窗口是 9KB。</p><p>H3 的发送窗口是 min{9KB,12KB}=9KB</p><p>(3)</p><p>以及 t4 时刻继续向下模拟。</p><p>t5 时刻（接收到 8 个确认段），H3 拥塞窗口为 16，S 的接收窗口为 13-8=5。</p><p>t6 时刻（接收到 5 个确认帧），H3 拥塞窗口为 21，S 的接收窗口为 0</p><p>当 H3 的发送窗口为 0 时，也就是此前总共发送了 20KB 的数据，由于 MSS=1KB，也就是说发了序号 1024×20=20480 序号，也就是从 101 开始作为第一个数据，所以下一个数据应该是 20581。</p><p>由上述可知，总共经过了 5RTT，所以数据率也就是 20KB/5RTT=20KB/(5×0.2s)=20KB/s</p><p>(4)</p><p>从 t 时刻 H3 请求断开连接，H3 发给 S 第一个 fin，H3 进入 fintime1，S 回复 H3ack，H3 收到后进入 fintime2，S 发剩下的数据（本题为 0），然后发送 fin，进入 closewait 阶段），H3 收到后回复 ack，进入 closewait 阶段。</p><p>根据分析，S 释放连接最短的时间是 1.5RTT=300ms。</p><p>简单总结一下，这类题不难，重要的是逐个分析清楚具体步骤。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdlq3In8Cgv-Fl0n3awgYgRmQBp3rgAC4xFrG2MQ4FYUfROjh-EaowEAAwIAA3cAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>对于 k 叉正则树，显然结点的度只有 0 和 k 两种可能性。假设叶节点个数为 n，题设给了非叶节点为 m。</p><p>所以，m+n=mk+1，也就是 n=mk+1-m。</p><p>(2)</p><p>结点数最多，也就是每一层都是满的。对于高为 h 的树，每一层都是满的也就是 1+k+…+k^(h-1)=(k^h-1)/(k-1)</p><p>结点数最少，也就是每次一层只多 3 个，所以也就是 1+k+k+…+k=1+(h-1)k。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdhq3HFAGxllTAnn6wHr4Zw4k91qPQACqRFrG2MQ4FaxjFHHSexJLAEAAwIAA3cAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>采用方法 1：</p><ol>
<li>n1-n2 绝对值最小，也就意味着 n1 接近 n2，在此基础上 n1 可以小于 n2 1，以保证 S1-S2 绝对值最大</li>
<li>显然 n1=n/2，n2=n-n1</li>
<li>对数组 S 进行快排</li>
<li>设置一个变量 sum=0，遍历 S 的前 n1 个数，遍历的值记为 a，sum-a</li>
<li>遍历 S 后 n2 个数，遍历值记为 b，sum+b</li>
<li>n1，n2，sum 即为题目所要求的</li>
</ol><p>采用方法 2：</p><ol>
<li>n1-n2 绝对值最小，也就意味着 n1 接近 n2，在此基础上 n1 可以小于 n2 1，以保证 S1-S2 绝对值最大</li>
<li>求第 n1 大的数。设置一个划分初值 p，l=0，r=n-1，对 l 到 r 划分，轴采用 l，划分后更新下标 p</li>
<li>如果 p==n1，那么 p 即为第 n1 大的数</li>
<li>如果 p &lt; n1，那么应该 l=p+1，再次划分</li>
<li>如果 p &gt; n2，那么应该 r=p-1，再次划分</li>
<li>设置一个变量 sum=0，遍历 S 的前 n1 个数，遍历的值记为 a，sum-a</li>
<li>遍历 S 后 n2 个数，遍历值记为 b，sum+b</li>
<li>n1，n2，sum 即为题目所要求的</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span># include</span><span> </span><span>&lt;cstdio&gt;</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>int</span><span> </span><span>pation</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>l</span><span>,</span></span><span>int</span><span><span> </span><span>r</span><span>){</span></span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> </span><span>p</span><span>=</span><span>A</span><span>[</span><span>l</span><span>];</span></div></div><div><div><div>5</div></div><div><span>    </span><span>while</span><span>(</span><span>l</span><span>&lt;</span><span>r</span><span>){</span></div></div><div><div><div>6</div></div><div><span>        </span><span>while</span><span>(</span><span>p</span><span>&lt;=</span><span>A</span><span>[</span><span>r</span><span>]</span><span>&amp;&amp;</span><span>l</span><span>&lt;</span><span>r</span><span>){</span></div></div><div><div><div>7</div></div><div><span>            </span><span>r</span><span>--</span><span>;</span></div></div><div><div><div>8</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span>        </span><span>A</span><span>[</span><span>l</span><span>]</span><span>=</span><span>A</span><span>[</span><span>r</span><span>];</span></div></div><div><div><div>10</div></div><div><span>        </span><span>while</span><span>(</span><span>p</span><span>&gt;</span><span>A</span><span>[</span><span>l</span><span>]</span><span>&amp;&amp;</span><span>l</span><span>&lt;</span><span>r</span><span>){</span></div></div><div><div><div>11</div></div><div><span>            </span><span>l</span><span>++</span><span>;</span></div></div><div><div><div>12</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>        </span><span>A</span><span>[</span><span>r</span><span>]</span><span>=</span><span>A</span><span>[</span><span>l</span><span>];</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span>    </span><span>A</span><span>[</span><span>l</span><span>]</span><span>=</span><span>p</span><span>;</span></div></div><div><div><div>16</div></div><div><span>    </span><span>return</span><span> </span><span>l</span><span>;</span></div></div><div><div><div>17</div></div><div><span>}</span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span>void</span><span> </span><span>QSort</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>l</span><span>,</span></span><span>int</span><span><span> </span><span>r</span><span>){</span></span></div></div><div><div><div>20</div></div><div><span>    </span><span>if</span><span>(</span><span>l</span><span>&gt;=</span><span>r</span><span>){</span></div></div><div><div><div>21</div></div><div><span>        </span><span>return</span><span>;</span></div></div><div><div><div>22</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>23</div></div><div><span>    </span><span>int</span><span> </span><span>p</span><span>=</span><span>pation</span><span>(</span><span>A</span><span>,</span><span>l</span><span>,</span><span>r</span><span>);</span></div></div><div><div><div>24</div></div><div><span>    </span><span>QSort</span><span>(</span><span>A</span><span>,</span><span>l</span><span>,</span><span>p</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>25</div></div><div><span>    </span><span>QSort</span><span>(</span><span>A</span><span>,</span><span>p</span><span>+</span><span>1</span><span>,</span><span>r</span><span>);</span></div></div><div><div><div>26</div></div><div><span>}</span></div></div><div><div><div>27</div></div><div>
</div></div><div><div><div>28</div></div><div><span>void</span><span> </span><span>caculate</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>n</span><span>,</span></span><span>int</span><span><span> </span><span>n1</span><span>,</span></span><span>int</span><span><span> </span><span>n2</span><span>){</span></span></div></div><div><div><div>29</div></div><div><span>    </span><span>int</span><span> </span><span>S</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>30</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>n1</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>31</div></div><div><span>        </span><span>S</span><span>-=</span><span>A</span><span>[</span><span>i</span><span>];</span></div></div><div><div><div>32</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>33</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>n1</span><span>;</span><span>i</span><span>&lt;</span><span>n</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>34</div></div><div><span>        </span><span>S</span><span>+=</span><span>A</span><span>[</span><span>i</span><span>];</span></div></div><div><div><div>35</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>36</div></div><div><span>    </span><span>printf</span><span>(</span><span>"n1=</span><span>%d</span><span>,n2=</span><span>%d</span><span>,S=</span><span>%d</span><span>\n</span><span>"</span><span>,</span><span>n1</span><span>,</span><span>n2</span><span>,</span><span>S</span><span>);</span></div></div><div><div><div>37</div></div><div><span>}</span></div></div><div><div><div>38</div></div><div>
</div></div><div><div><div>39</div></div><div><span>void</span><span> </span><span>solve1</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>40</div></div><div><span>    </span><span>QSort</span><span>(</span><span>A</span><span>,</span><span>0</span><span>,</span><span>n</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>41</div></div><div><span>    </span><span>int</span><span> </span><span>n1</span><span>=</span><span>n</span><span>/</span><span>2</span><span>;</span></div></div><div><div><div>42</div></div><div><span>    </span><span>int</span><span> </span><span>n2</span><span>=</span><span>n</span><span>-</span><span>n1</span><span>;</span></div></div><div><div><div>43</div></div><div><span>    </span><span>caculate</span><span>(</span><span>A</span><span>,</span><span>n</span><span>,</span><span>n1</span><span>,</span><span>n2</span><span>);</span></div></div><div><div><div>44</div></div><div><span>}</span></div></div><div><div><div>45</div></div><div>
</div></div><div><div><div>46</div></div><div><span>void</span><span> </span><span>solve2</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>47</div></div><div><span>    </span><span>int</span><span> </span><span>n1</span><span>=</span><span>n</span><span>/</span><span>2</span><span>;</span></div></div><div><div><div>48</div></div><div><span>    </span><span>int</span><span> </span><span>n2</span><span>=</span><span>n</span><span>-</span><span>n1</span><span>;</span></div></div><div><div><div>49</div></div><div><span>    </span><span>int</span><span> </span><span>p</span><span>=-</span><span>1</span><span>,</span><span>l</span><span>=</span><span>0</span><span>,</span><span>r</span><span>=</span><span>n</span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>50</div></div><div><span>    </span><span>while</span><span>(</span><span>p</span><span>!=</span><span>n1</span><span>){</span></div></div><div><div><div>51</div></div><div><span>        </span><span>p</span><span>=</span><span>pation</span><span>(</span><span>A</span><span>,</span><span>l</span><span>,</span><span>r</span><span>);</span></div></div><div><div><div>52</div></div><div><span>        </span><span>if</span><span>(</span><span>p</span><span>&lt;</span><span>n1</span><span>){</span></div></div><div><div><div>53</div></div><div><span>            </span><span>l</span><span>=</span><span>p</span><span>+</span><span>1</span><span>;</span></div></div><div><div><div>54</div></div><div><span><span>        </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>55</div></div><div><span>            </span><span>r</span><span>=</span><span>p</span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>56</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>57</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>58</div></div><div><span>    </span><span>caculate</span><span>(</span><span>A</span><span>,</span><span>n</span><span>,</span><span>n1</span><span>,</span><span>n2</span><span>);</span></div></div><div><div><div>59</div></div><div><span>}</span></div></div><div><div><div>60</div></div><div>
</div></div><div><div><div>61</div></div><div><span>// 题目明确说了划分算法，所以这个方法不能用</span></div></div><div><div><div>62</div></div><div><span>// 而且题目没给数据范围，哈希表的这个 n 是有毛病的</span></div></div><div><div><div>63</div></div><div><span>// 假设数据范围正整数是 1-N</span></div></div><div><div><div>64</div></div><div><span>// 所以时间复杂度应该是 O(N)，空间复杂度为 O(N)</span></div></div><div><div><div>65</div></div><div><span>void</span><span> </span><span>solve3</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[],</span></span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>66</div></div><div><span>    </span><span>int</span><span> </span><span>hasmap</span><span>[</span><span>N</span><span>];</span></div></div><div><div><div>67</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>n</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>68</div></div><div><span>        </span><span>hasmap</span><span>[</span><span>i</span><span>]</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>69</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>70</div></div><div><span>    </span><span>int</span><span> </span><span>n1</span><span>=</span><span>n</span><span>/</span><span>2</span><span>;</span></div></div><div><div><div>71</div></div><div><span>    </span><span>int</span><span> </span><span>n2</span><span>=</span><span>n</span><span>-</span><span>n1</span><span>;</span></div></div><div><div><div>72</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>n</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>73</div></div><div><span>        </span><span>hasmap</span><span>[</span><span>A</span><span>[</span><span>i</span><span>]]</span><span>+=</span><span>1</span><span>;</span></div></div><div><div><div>74</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>75</div></div><div><span>    </span><span>int</span><span> </span><span>S</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>76</div></div><div><span>    </span><span>int</span><span> </span><span>cnt</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>77</div></div><div>
</div></div><div><div><div>78</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>N</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>79</div></div><div><span>        </span><span>while</span><span>(</span><span>hasmap</span><span>[</span><span>i</span><span>]</span><span>!=</span><span>0</span><span>){</span></div></div><div><div><div>80</div></div><div><span>            </span><span>if</span><span>(</span><span>cnt</span><span>&lt;</span><span>n1</span><span>){</span></div></div><div><div><div>81</div></div><div><span>                </span><span>S</span><span>-=</span><span>i</span><span>;</span></div></div><div><div><div>82</div></div><div><span><span>            </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>83</div></div><div><span>                </span><span>S</span><span>+=</span><span>i</span><span>;</span></div></div><div><div><div>84</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>85</div></div><div><span>            </span><span>cnt</span><span>++</span><span>;</span></div></div><div><div><div>86</div></div><div><span>            </span><span>hasmap</span><span>[</span><span>i</span><span>]</span><span>--</span><span>;</span></div></div><div><div><div>87</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>88</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>89</div></div><div><span>    </span><span>printf</span><span>(</span><span>"n1=</span><span>%d</span><span>,n2=</span><span>%d</span><span>,S=</span><span>%d</span><span>\n</span><span>"</span><span>,</span><span>n1</span><span>,</span><span>n2</span><span>,</span><span>S</span><span>);</span></div></div><div><div><div>90</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>采用法 1：</p><p>时间复杂度：O(nlogn)，空间复杂度：O(logn)</p><p>采用法 2：</p><p>时间复杂度：O(n)，空间复杂度：O(1)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCdxq3JMGoQ8lSkj8fOXC0OtUObPCWAACBxJrG2MQ4Faoc4NlJUVUxQEAAwIAA3cAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>10 位（因为需要额外的 1 位停止位）</p><p>从 D 接收启动命令到字符送入 IO 端口需要 0.5ms，也就是 60/0.0005=120000 个字符。</p><p>订：每秒，而不是每分钟，从 D 接收启动命令到字符送入 IO 端口需要 0.5ms，也就是 1/0.0005=2000 个字符。</p><p>(2)</p><p>对于一次工作，也就是 0.5ms=500us。</p><p>对于一次中断响应，也就是 10 个时钟周期~~，也就是 10/50M=0.2us。~~</p><p>对于一次中断服务程序，共 20 条指令~~，也就是 20×4/50M=1.6us，而执行前 15 条指令也就是 15×4/50M=1.2us。~~</p><p>综上所述，一次的时间也就是工作 + 请求响应 + 执行前 15 条指令~~，也就是 500+0.2+1.6=501.8，501.8×1000=501800us=0.5018s。~~</p><p>CPU 需要介入的时间是~~：1000×1.6-0.4=1599.6us=1.5996ms。~~</p><p>中断响应阶段，CPU 做的事情是：保存 PSW，保存 PC，形成中断屏蔽字地址。</p><p>订：</p><p>主频为 50MHz，也就是 1/50Mhz=20ns。</p><p>所以 0.5ms/20ns=25000 时钟周期。</p><p>响应和请求是 10 个时钟周期。</p><p>响应全过程应该是 20 条指令，也就是 80 个时钟周期，其中响应到启动是 60 个时钟周期。</p><p>所以，(25000+10+60)×1000+20=25070020 个时钟周期。</p><p>CPU 运行 (80+10)×1000=90000 个时钟周期。</p><p>关中断，保存 PSW 和 PC，形成中断源</p><p>做这类题的时候，一定是要辨析清楚指令周期和时钟周期，当然也要看清楚具体时间。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCd5q3JmYugELorx6bLbr_2y0UQjeRQACdBBrG2MQ6FbopkgDafg2-AEAAwIAA3cAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>由于虚拟地址是 32 位，页大小是 8KB=2^13，所以页号是 32-13=19 位。</p><p>由于 TLB 采用全相连映射，所以标记号等于页号=19 位。</p><p>由于物理地址是 24 位，页大小是 2^13，所以物理页号应该是 24-13=11 位，物理页内地址应该是 13 位</p><p>cache 数据区容量是 64KB，64KB/64B=1K=2^10，由于采用 2 路组相联，所以也就是 2^10/2=512，也就是 cache 位占 9 位。</p><p>所以 tag 号应该占 24-9-6=9。</p><p>综上所述：</p><ul>
<li>A：19</li>
<li>B：19</li>
<li>C：11</li>
<li>D：13</li>
<li>E：9</li>
<li>F：9</li>
<li>G：6</li>
</ul><p>(2)</p><p>4099 是主存快号，也就是说，4099=4096+3=00,0001,000｜0,0000,0011B，也就是第 3 组 cache，对应 H 的字段是 0,0000,1000B=008H</p><p>(3)</p><p>cache 缺失的时间开销小，缺页处理时间开销大。前者缺失访问主存，后者缺失访问磁盘，显然访问磁盘的时间开销远大于访问内存。</p><p>(4)</p><p>cache 缺失的时候访问内存，时间开销较小，相对可以接受。</p><p>修改页面时访问磁盘，时间开销很大，远高于访问内存。</p><p>这类题不解释，必须满分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCd1q3Jhd2pywSVFg-xfdpS7L00j62gACcxBrG2MQ6FZ3ubbs6V3ztwEAAwIAA3cAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>假设有若干个进程，分别为 a,b,c,d,e，每个进程的优先级分别为 1,2,3,4,5。</p><p>此时来了很多进程 abcd，就会导致 e 积压，始终得不到处理机，从而出现饥饿现象。</p><p>(2)</p><p>p=nice+k1×cpuTime-k2×waitTime</p><p>注意本题是优先数越小，越先执行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCd9q3JuJXTst5ykQfvsP8kKoU836IAACdRBrG2MQ6FYGrhHZ6GBi1wEAAwIAA3cAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>dir 目录文件</p><p>文件名 簇号</p><p>dir1 48</p><p>dir1 目录文件</p><p>文件名 簇号</p><p>file1 100</p><p>file2 200</p><p>(2)</p><p>FAT 占 2B=2^16bit，也就是最多 2^16 个簇，所以 FAT 最多占 2^16 ×2B=2^17B=128KB。</p><p>该文件系统支持的最大文件长度为：2^16×4KB=256MB</p><p>(3)</p><p>106 位于 100</p><p>108 位于 106</p><p>(4)</p><p>dir 目录文件已经读入内存，那么也就是读取 dir1 所在的 48 号以及 file1 所在的~~ 100 ~~和 106。</p><p>订：我知道 100 不需要被读入（因为背答案），但是我现在终于明白为什么不用读入了。因为这个系统采用的是 FAT，也就是显示链接分配，可以算出来并且直接访问，而不是隐式链接分配。</p></section><section><h3>408 2017 真题 2 刷<a href="#408-2017-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为 144，1 刷为 143</li>
<li>第 13 题再次没有考虑边界对齐</li>
<li>第 43 题 -1 第 2 问 0111B 应该是 7，而不是 8</li>
<li>第 47 题 -3，一方面是又忘记考虑乙的发送情况了，这个在答题过程中没列出来，第二方面是没有考虑乙已经发了的帧需要接收。这道题需要重点注意</li>
<li>1 刷的时候错的也基本是这几题，第 13 题，计组第 43 题 1 刷的时候错的是正数的 float 第一位应该是 0，而不是 1；计网第 47 题第 2 问也是因为没考虑乙的发送情况，不过第 3 问做对了</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_xq01gRwyB1sVSxV9yumYz4m8b23QACDBprG-BrmFYyBv1kISKrHwEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 B。</p><p>1+2+3+…+t=t(t+1)/2=n，所以 t=sqrt(n)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_1q01iT6q1p2ag_Oymb6fWcMfOQrAACDRprG-BrmFa_03O74N62WgEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 1，可以考虑计算斐波那契数列，此时递归转为迭代可以使用动态规划，所以错误。</p><p>对于 2，函数调用栈需要保存信息，以便回到当前。</p><p>对于 3，考虑入栈次序 1,2,3,4,5，那么出栈次序可以是 1,2,3,4,5，也可以是 5,4,3,2,1，非常多。</p><p>对于 4，栈是一种受限的线性表，只允许在顶端操作。</p><p>综上所述，1,3,4 错误，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_5q01m5DbBdRQABbu5EWMMgtJtKZ5oAAhIaaxvga5hWqvrOu_FJx7EBAAMCAAN4AAM9BA" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_9q01pF-T3Koq4BxdWH3rY00CsJNwACExprG-BrmFZxWVs4u1hEEQEAAwIAA3kAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 B。</p><p>考虑遍历情况，先序遍历的遍历为根左右，中序遍历为左根右，显然想要他们相同必须没有左子树，这个时候就是根右。</p><p>所以应该只有右子树。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAABatNan1vMZKZa3BscUyOwj34xMMgAAhUaaxvga5hWE8mMrwjlE0oBAAMCAAN5AAM9BA" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 B。</p><p>其实没什么好说的？根据后序遍历左右根可以很轻松得出答案。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAFq01v1MEB5EAxbcSuXgP7tNNiebAACGhprG-BrmFabgrUcvCUBFQEAAwIAA3kAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 D。</p><p>哈夫曼树的译码，其实不难，一个个个看下去就可以了。原串和切分为：</p><p>0100|011|001|001|011|11|0101</p><p>所以可以译码为：afeefgd，也就是 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAJq01zKAT_eK3jjbw8a0Sw_I2YBkQACHRprG-BrmFaoIctiDn8LZwEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 B。</p><p>属于模拟题，绘制如图：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCClq1H33EFAyMbgaRSRLfawrvVT7BgACMBJrG1-fqVa6uwb5cLIXMAEAAwIAA3kAAz0E" alt="7 解" /><figcaption>7 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCANq010kkmgp3iJC0fI-8UZu8a0ErwACHhprG-BrmFZyQTBEvwfPMgEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题属于背书题。首先排除 B 和 C。对 A 和 D 进行模拟，可知 A 是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCARq019_4QWRmkponcBJCPyIMVB-KwACIBprG-BrmFa8vereNjG4zwEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 B，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAVq01-erDEXWvoyAUxVvjuz7qOx1QACIRprG-BrmFbLAAGvcAuR3i8BAAMCAAN4AAM9BA" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 1，归并程序反而代码更长。</p><p>对于 2，归并排序需要一个 O(n) 的辅助数组，而插入排序不需要。</p><p>对于 3，归并排序执行效率是 O(nlogn)，而插入排序是 O(n^2)。</p><p>综上所述，3 是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAZq02AGkR5mraEL1DVMoZcFTsoqEwACIhprG-BrmFZzeIMWVy7_dAEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 D。</p><p>关键是开有没有利用随机访问。</p><p>对于 1，插入排序可以使用双链表，所以不需要使用随机访问。</p><p>对于 2，简单选择排序只需要记录当前排序指针即可。</p><p>对于 3，冒泡排序是前后交换，可以通过 pre 指针实现。</p><p>对于 4，希尔排序强要求随机访问。</p><p>对于 5，堆排序使用的是父亲表示法，所以肯定是要用随机访问的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAdq02Dgbm1GS_yOrcpuVq8srrQBxQACIxprG-BrmFZTAo-x5DhawAEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 C。</p><p>假设基准程序 P 总共有 N 条指令，所以，在 M1 上需要执行 N×2/1.5G，在 M2 上需要执行 N×1/1.2G。</p><p>所以也就是 8/5=1.6，所以应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAhq02Gg6cuG16SeWVk1CxCnwbGojAACJRprG-BrmFZJeHMciwP4RwEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 B。</p><p>一个 double 型的数据是 8B，由于是 4 体交叉，一个体是 1B，所以需要 2 个存储周期。</p><p>没考虑边界对齐。A=1010H，所以应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAlq02IregoqbVyAU1GDVQcgDaNXSQACJhprG-BrmFbdbk5WC2t64gEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 A。</p><p>时间局部性的意思是最近我还可以访问自己，空间局部性的意思是最近我还可以访问自己的邻居。</p><p>本题显然具备空间局部性，对于时间局部性，由于 j=0，它是一直遍历自己的，所以有时间局部性。所以应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCApq02LMjjmU-a0-JVEEHGSxcmZPmgACJxprG-BrmFZni4qSv-ek0wEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 D，属于背书问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAtq02Mf-vEtAZ3KM9m1_lEMrLoS9QACKhprG-BrmFaOoklY4AgFZAEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 A。</p><p>本题是类似哈夫曼树的解法，一个地址字段 6B，由于最大的是 3 地址指令，所以地址字段应该是 3×6B=18B。又由于 29 条指令需要 2^5=32，所以至少前面填 5bit，也就是 18+5=23，又由于是按字节编址的，所以应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCAxq02QNP8xTHF4SBEFLcB-MofauHAACKxprG-BrmFYslsIn99ppRAEAAwIAA3gAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 1，显然不可以缩短流水线功能段（因为流水线功能段本身想缩短得通过细分，而不是超标量技术）</p><p>对于 2 和 3 是正确的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCA5q02UqCNiDX-W682yCZ9UGFZ9T7wACLhprG-BrmFYsKh8iuKhoggEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 B。</p><p>A 的说法正确，主存在 CPU 外，控制存储器在 CPU 内。</p><p>B 的说法错误，控制存储器也按照地址访问（可以理解为存储微指令，访问微指令也是要地址访问的）</p><p>C 的说法正确。</p><p>D 的说法正确，注意 BIOS。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCA9q02Wy1G_FTTeQU8GNUx4w3mEjrQACMRprG-BrmFZFsBQz0qtIUwEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 A。</p><p>本题应该这么考虑，数据通路和控制通路，后者可以理解为 CU。所以生成控制信号的部件显然是 CU 内部做的事情。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBBq02Y2wo-WsIxlsVGn7OO-qzzR8QACMxprG-BrmFbtdbN_7cmXMQEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题超纲，但是问题不大，选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBFq02ZMgCchOkdftbTiHlkz0IDWpwACNBprG-BrmFbVDeDmmOJ9yAEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 D。</p><p>IO 端口也就是 IO 设备内部的寄存器，一般来讲交换数据是 IO 端口 - 主存或者 IO 端口 - 寄存器。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBJq02aCfAI0FHQ4IXf7lIZIzSCm9wACNRprG-BrmFYFEsQVxf5jFgEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 A，CPU 在一条指令结束的时候响应中断，这是背书的部分。</p><p>对于 B，CPU 在执行中断本身的时候，是开中断状态，可以理解为多级中断。</p><p>对于 C，可以考虑 IO。</p><p>对于 D 是正确陈述句，没什么好说的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBNq02uAabl_PsGjgNta9Fb55I9FrgACORprG-BrmFYTL_2lryKACgEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 D。</p><p>先来先服务也就是看谁最先到达，显然 J1 是最先到达的，排除 A 和 C。由于是短作业优先，且 t=2 的时候 J4 还没到，所以最开始运行 J3。</p><p>综上所述，应该选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBRq02vBuyUaNXmgCttqaitsrcKmVAACOhprG-BrmFb75Xmil8Z0-gEAAwIAA3gAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题属于经典背书题，应该选 C。先传参再 trap，不然 trap 之后操作系统都不知道自己要干嘛。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBVq022olnIfxUMDQpbFjGqgTpgaewACOxprG-BrmFbisBVCEnxgDwEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 B。</p><p>回收起始 60K，大小为 140KB 之后，可以观察起始为 20K，大小为 40KB 以及起始为 200K，分区大小为 200KB 的都能合并，所以总共只剩下了 3 个分区，所以 C 和 D 排除。</p><p>由于是按照最佳适应算法，要重排为最小的，所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBZq023Dall_DpqwSh6TUtkx5Sj8bAACPBprG-BrmFY0laIMh7gCGQEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 D，磁盘按簇分配。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBdq025RvnPjOUoGuZdKJub_jd9mfAACPhprG-BrmFYN7O2acmprugEAAwIAA3gAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 B，时间片用完之后，进程状态应该从执行态变成就绪态，所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBhq026Er6oiOhP-QUJFd2vghRiD-AACPxprG-BrmFayGuO1-kBSdwEAAwIAA3gAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 D。</p><p>由于多道程序系统的 CPU 和 IO 设备可以并行工作，所以 1、3、4 都是正确的。多道程序系统会让系统开销变大。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBlq1HFACb5zJL-IK0_y7QisODYYWwACBxJrG1-fqVaM4WLOQj7cGQEAAwIAA3gAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 B。</p><p>磁盘的物理格式化做的事情是确定磁盘扇区校验码以及基本的块。</p><p>然后磁盘需要进行分区。</p><p>由逻辑格式化做的事情是初始化以及建立文件系统等。</p><p>综上所述，1 错误，3 错误，所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBpq1HGkrV-LO2L4v3Neb6xJ4M-ZnwACCBJrG1-fqVbquIzOa-7TigEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 D。</p><p>由于不只是存储一个状态，需要存储所有用户的所有信息（意思是每个人可能拥有多个权限）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCBxq1HHb89tpCsBdONPDpVikMGORmAACCRJrG1-fqVZLk3WhmZ2qaQEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 B。</p><p>f1 硬链接出去是 f2，他们占用同一个内存索引结点，指向系统打开文件表的同一个区域，但是拥有独自的读写指针以及独自的用户打开表。</p><p>所以 2 和 3 是正确的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCB1q1HI4KKB8dHMNMQABEtpzMcgECrAAAgoSaxtfn6lW6_VIK7aYDVkBAAMCAAN4AAM9BA" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题属于背书题，考查 DMA 的全流程。也就是说：从题目入手，先排除 A 和 D。</p><p>第一步是初始化 DMA 控制器并启动磁盘，第二步是从磁盘传输数据到内存缓冲区，第三步是中断，第四步是执行中断服务程序，所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCB9q1HLvUB2l8YY36jc1B9j6-MeCmwACCxJrG1-fqVarEImGMP1UbwEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选 A。</p><p>OSI 参考模型总共有 7 层，从上至下分别是：物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。按照题设，物理层向上封装不需要引入额外的开销，数据链路层向上引入 20B 开销，网络层向上引入 20B 开销，传输层向上引入 20B 开销，会话层向上引入 20B 开销，表示层向上引入 20B 开销，应用层不需要引入开销，所以总共是引入了 100B 的开销。</p><p>所以，总计发送了 500B 的数据，传输效率为 400B/500B=80%。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCFq1HjZuyuAi1G1i6Apc1a_PTjvBAACHRJrG1-fqVYO8HvGF_ClAwEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 D。</p><p>30=10log10S/N，所以 S/N=1000。假设信号状态数为 x，则 2Wlog2x≥Wlog2(1+S/N)，也就是 2log2x≥log2(1+S/N)，所以 log2x≥log2(1+S/N) / 2。后者是小于 5 的，所以 x 需要大于等于 32。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCJq1HmQOBjVFQPRBja8equkRG8E3gACIRJrG1-fqVbw4RHFwqIJYgEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 B。</p><p>主机 H 发送给 AP，也就是谁收，谁发，最终发给谁，所以也就是 AP 收，主机 H 发，最终发给路由器。</p><p>也就是 9b，9a，9c，对比选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCRq1HreBbFCYLSnvafN9nCNNdnMGQACJBJrG1-fqVacMdUKi416nAEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题，0.0.0.0 只能作为源 IP 地址，不可以作为目的 IP 地址；255.255.255.255 只能作为目的 IP 地址，不可以作为源 IP 地址；127.0.0.1 既可以作为源 IP 地址，也可以作为目的 IP 地址；200.10.10.3 是一个正常的 IP 地址，既可以作为源 IP 地址，也可以作为目的 IP 地址。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCVq1HsrDKI2KPTSasdRC_II569gqwACJhJrG1-fqVYwLs_tJN9AbQEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 D。</p><p>属于背书题，RIP 由 UDP 封装，OSPF 跑在 IP 上，BGP 报文跑在 TCP 上。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCZq1HtdDlYwu1a3HIC0_8PrW7oZmwACJxJrG1-fqVZ208Q9zbhH_AEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 C。</p><p>可分配的 IP 地址，首先排除 B 和 D。题设给的是一个 B 类地址，由于划分为 128 个规模相同的子网，占 7 位，所以网络号可以占 16-7=9 位，也就是 2^9-2=510。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCdq1Hugrjxk3t7wbH04lBv3dZGb-wACKBJrG1-fqVbrPg_uNs7zvwEAAwIAA3gAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 A。</p><p>0 时刻拥塞窗口为 1，发送 1 数据。</p><p>1 时刻拥塞窗口为 2，发送 2 数据。</p><p>2 时刻拥塞窗口为 4，发送 4 数据。</p><p>3 时刻拥塞窗口为 8，发送 8 数据。</p><p>4 时刻拥塞窗口为 16，发送 16 数据。</p><p>5 时刻拥塞窗口为 32，由于乙开辟的为 64，取小也就是 32，到达题设的要求。</p><p>所以 0-1,1-2,2-3，3-4,4-5 总共消耗 5RTT，也就是 25ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCChq1HwjWO8hkbV1moA-emjA_gxelAACKRJrG1-fqVYFy18iznMfdAEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 C。</p><p>A 和 B 属于背书范畴，对于 C，数据连接不一定是端口 20。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCpq1H4cvSL1zeDl3IkD1yxbVZ3MogACMRJrG1-fqVaPokZ7rcOoigEAAwIAA3gAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>采用中序遍历的方式</li>
<li>在递归非根和非叶结点的左子树之前输出一个左括号</li>
<li>递归到自己的时候输出自己本身</li>
<li>在递归非根和非叶节点的右子树之后输出一个右括号。</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>inorder</span><span>(</span><span>struct</span><span> node </span><span>*</span><span><span>BTree</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>depth</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span>(BTree</span><span>==</span><span>NULL</span><span>){</span></div></div><div><div><div>3</div></div><div><span>        </span><span>return</span><span>;</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>5</div></div><div><span>    </span><span>if</span><span>(</span><span>!</span><span>(</span><span>BTree</span><span>-&gt;</span><span>left</span><span>==</span><span>NULL</span><span>&amp;&amp;</span><span>BTree</span><span>-&gt;</span><span>right</span><span>==</span><span>NULL</span><span> </span><span>||</span><span> depth</span><span>==</span><span>1</span><span>)){</span></div></div><div><div><div>6</div></div><div><span>        </span><span>printf</span><span>(</span><span>"("</span><span>);</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>8</div></div><div><span>    </span><span>inorder</span><span>(</span><span>BTree</span><span>-&gt;</span><span>left</span><span>, depth</span><span>+</span><span>1</span><span>);</span></div></div><div><div><div>9</div></div><div><span>    </span><span>// printf("%c",BTree-&gt;data[0]);</span></div></div><div><div><div>10</div></div><div><span>    </span><span>printf</span><span>(</span><span>"</span><span>%s</span><span>"</span><span>,</span><span>BTree</span><span>-&gt;</span><span>data</span><span>);</span></div></div><div><div><div>11</div></div><div><span>    </span><span>inorder</span><span>(</span><span>BTree</span><span>-&gt;</span><span>right</span><span>, depth</span><span>+</span><span>1</span><span>);</span></div></div><div><div><div>12</div></div><div><span>    </span><span>if</span><span>(</span><span>!</span><span>(</span><span>BTree</span><span>-&gt;</span><span>left</span><span>==</span><span>NULL</span><span>&amp;&amp;</span><span>BTree</span><span>-&gt;</span><span>right</span><span>==</span><span>NULL</span><span> </span><span>||</span><span> depth</span><span>==</span><span>1</span><span>)){</span></div></div><div><div><div>13</div></div><div><span>        </span><span>printf</span><span>(</span><span>")"</span><span>);</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span>}</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>void</span><span> </span><span>solve</span><span>(</span><span>struct</span><span> node </span><span>*</span><span><span>BTree</span><span>){</span></span></div></div><div><div><div>18</div></div><div><span>    </span><span>inorder</span><span>(BTree, </span><span>1</span><span>);</span></div></div><div><div><div>19</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCtq1ICP27kCrQlJS1TCL_7UovP9YAACNxJrG1-fqVbmozbMT_JScwEAAwIAA3gAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>使用 Prim 算法，从顶点 A 开始。</p><p>观察顶点 A，发现 A-D 边最短，所以顶点集合为「A，D」，边集合为「A-D」。</p><p>观察顶点 A 和 D，发现 D-E 最短，所以顶点集合为「A，D，E」，边集合为「A-D，D-E」。</p><p>观察顶点 A，D，E，发现 C-E 最短，所以顶点集合为「A，D，E，C」，边集合为「A-D，D-E，C-E」。</p><p>观察顶点 A，C，D，E，发现 B-C 最短，所以顶点集合为「A，B，C，D，E」，边集合为「A-D，D-E，C-E，B-C」。</p><p>(2)</p><p>唯一。</p><p>(3)</p><p>权值唯一。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCCxq1IFArpySZ_5CzY2TRWC8PmhwGwACOBJrG1-fqVbGdN07QXzIkQEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>当 n=0 时，根据无符号数的计算规则，0-1=0+2^32-1=2^32-1，也就是 FFFF,FFFFH。所有的 32 位无符号整数均小于等于这个数，所以会出现死循环。</p><p>不会。</p><p>因为 int 型变量 0-1=-1，0&lt;=-1 显然不成立，跳出循环。</p><p>(2)</p><p>相等。</p><p>f1(23)=0000,0000,1111,1111,1111,1111,1111,1111B=00FF,FFFFH</p><p>对于 f2，其符号位为 0，1111,1111,1111,1111,1111,1111B=1.111,1111,1111,1111,1111×2^23。所以阶码为 23+127=150=128+22=128+16+6=1001,0110B。所以也就是 0100,1011,0111,1111,1111,1111,1111,1111B=4B8F,FFFFH。</p><p>4B7F,FFFFH.</p><p>(3)</p><p>float 型的尾数发生溢出，导致精度丢失。</p><p>(4)</p><p>int 型整数的表示范围为 -2^31~2^31-1，f(31)=2^32-1 超出表示范围，值为 FFFF,FFFFH，解释为 -1。</p><p>23。</p><p>(5)</p><p>7F80,0000H=0111,1111,1000,0000,0000,0000,0000,0000B，由于阶码全 1 且其他位均为 0，所以为正无穷。</p><p>126</p><p>23</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCC1q1IOkwY-vZ3cKPeSKg7nLawNArgACPBJrG1-fqVbu9KTUIbwepAEAAwIAA3kAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>CISC，因为指令字长不等。</p><p>(2)</p><p>0040,107FH+1H-0040,1020H=0040,1080H-0040,1020H=0000,0060H=0110,0000B，也就是 32+64=96B。</p><p>(3)</p><p>0-1=FFFF,FFFFH，执行 0000,0000H-FFFF,FFFFH=0000,0000H+0000,0001H=0000,0001H。</p><p>这里应该解释一下 CF 怎么算的，CF=进位异或减法标志（1）=1</p><p>CF 标志位为 1。</p><p>(4)</p><p>不可以。对 float 型使用 shl 指令会破坏其格式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCC5q1IY3O--mO631tb3v3oveTWtvaQACPxJrG1-fqVYqBe6UPjuKXwEAAwIAA3gAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>页内偏移量为 12 位，所以页的大小为 2^12B=4KB。由于 f1 机器指令为 96B，显然可以被 1 页装下，所以占 1 页。</p><p>(2)</p><p>第一条指令的逻辑地址为 0040,1020H=0000,0000,01｜00,0000,0001｜,0000,0010,0000B。也就是访问页目录表的第 1 项和页表的第 1 项。</p><p>(3)</p><p>执行 scanf 的过程中，首先系统检查输入缓冲区，发现为空，执行系统调用，从用户态进入内核态，操作系统将进程由运行态变为阻塞态，等待用户输入。</p><p>待用户输入后，操作系统先将键盘缓冲区上的内容冲到内核缓冲区，然后再冲入用户缓冲区，然后操作系统将进程从阻塞态变为就绪态。</p><p>待再一次分配到处理机，进程从就绪态变为运行态之后，继续 scanf 函数，发现用户缓冲区有内容，系统调用结束，操作系统从内核态变成用户态，scanf 结束。</p><p>所以，P 的状态由运行态变为阻塞态，从阻塞态变为就绪态，从就绪态变为运行态。</p><p>CPU 会进入内核态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCC9q1IfBhIpqhjxJG8D_8WUsgt8CAwACRBJrG1-fqVaOqK4bBP_1AAEBAAMCAAN5AAM9BA" alt="46" /><figcaption>46</figcaption></figure><p></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore mutexX</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>2</div></div><div><span>semaphore mutexY1</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>3</div></div><div><span>semaphore mutexY2</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>4</div></div><div><span>semaphore mutexZ</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>thread1{</span></div></div><div><div><div>7</div></div><div><span>  </span><span>P</span><span>(mutexX)</span></div></div><div><div><div>8</div></div><div><span>  </span><span>P</span><span>(mutexY1);</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>cnum w;</span></div></div><div><div><div>10</div></div><div><span><span>  </span></span><span>w</span><span>=</span><span>add</span><span>(x,y);</span></div></div><div><div><div>11</div></div><div><span>  </span><span>V</span><span>(mutexY1);</span></div></div><div><div><div>12</div></div><div><span>  </span><span>V</span><span>(mutexX);</span></div></div><div><div><div>13</div></div><div><span>}</span></div></div><div><div><div>14</div></div><div>
</div></div><div><div><div>15</div></div><div><span>thread2{</span></div></div><div><div><div>16</div></div><div><span>  </span><span>P</span><span>(mutexY2);</span></div></div><div><div><div>17</div></div><div><span>  </span><span>P</span><span>(mutexZ);</span></div></div><div><div><div>18</div></div><div><span><span>  </span></span><span>cnum w;</span></div></div><div><div><div>19</div></div><div><span><span>  </span></span><span>w</span><span>=</span><span>add</span><span>(y,z);</span></div></div><div><div><div>20</div></div><div><span>  </span><span>V</span><span>(mutexZ);</span></div></div><div><div><div>21</div></div><div><span>  </span><span>V</span><span>(mutexY2);</span></div></div><div><div><div>22</div></div><div><span>}</span></div></div><div><div><div>23</div></div><div>
</div></div><div><div><div>24</div></div><div><span>thread3{</span></div></div><div><div><div>25</div></div><div><span>  </span><span>P</span><span>(mutexY1);</span></div></div><div><div><div>26</div></div><div><span>  </span><span>P</span><span>(mutexY2);</span></div></div><div><div><div>27</div></div><div><span>  </span><span>P</span><span>(mutexZ);</span></div></div><div><div><div>28</div></div><div><span><span>  </span></span><span>cnum w;</span></div></div><div><div><div>29</div></div><div><span>  </span><span>w</span><span>.</span><span>a</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>30</div></div><div><span>  </span><span>w</span><span>.</span><span>b</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>31</div></div><div><span><span>  </span></span><span>z</span><span>=</span><span>add</span><span>(z,w);</span></div></div><div><div><div>32</div></div><div><span><span>  </span></span><span>y</span><span>=</span><span>add</span><span>(y,w);</span></div></div><div><div><div>33</div></div><div><span>  </span><span>V</span><span>(mutexZ);</span></div></div><div><div><div>34</div></div><div><span>  </span><span>V</span><span>(mutexY2);</span></div></div><div><div><div>35</div></div><div><span>  </span><span>V</span><span>(mutexY1);</span></div></div><div><div><div>36</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>本题为类读者写者问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDBq1Ii-GPik2qdVq31a-n4VsrhDuAACRhJrG1-fqVZoBXpqlI6r5wEAAwIAA3gAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>GBN 协议有累计确认，R3,3 的意思是乙方发送的序号是 3，希望甲方发送 3，那也就意味着乙已经收到了 0，1，2 这三帧。</p><p>所以，甲可以断定乙正确收到了 3 个帧，分别为 S0,0，S1,0，S2,0。</p><p>(2)</p><p>由于数据帧的发送和确认序号字段均为 3bit，所以总窗口是 8，也就是发送窗口为 7，接收窗口为 1。</p><p>假设甲从 t0 时刻的待发送序号为 0,1,2,3,…，那么在 t0 到 t1 时刻，甲已经成功发送并确保了 0,1,2 这三个帧，已经发送但没确保 3,4 这个帧乙是否成功接收。</p><p>所以甲理论还可以发送 3,4,5,6,7,0,1 这 7 个帧，不过 3,4 已经发送了，所以只能发送 5,6,7,0,1 这 5 个帧。</p><p>由于乙发了 R3,3 这个帧，意味着甲收到了 3 这个帧，期待乙发送 4 这个帧，所以第一个帧应该是 S5,4，最后一个帧应该是 S1,4。</p><p>由于乙发送的是 0,1,3，没有发送 2 这个帧，所以对于 3 这个帧应该直接丢弃，因此甲还是期待乙发送 2 这个帧，也就是 S5,2，S1,2。</p><p>(3)</p><p>分析该图，甲已经发送了 0,1,2,3,4 这 5 个帧，确认了乙的 0,1 帧，乙已经发送了 0,1,2 这 3 个帧，确认了甲的 0,1 帧。</p><p>由于 S2,0 超时，所以得重发 2,3,4 这 3 个帧，重发的第 1 帧应该是 S2,2。</p><p>应该是 S2,3，因为 R2,2 已经发了。</p><p>(4)</p><p>帧长为 1000B，所以一段 1000B/100Mbps=8000bit/100Mbps=80us。RTT=0.96ms=960ms。</p><p>所以，7×80/(80+80+960)=50%。</p></section><section><h3>408 2018 真题 2 刷<a href="#408-2018-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为：148</li>
<li>第 43 题 -1，第 1 问理解错误。</li>
<li>第 44 题 -1 TLB 采用全相联，而我写成直接映射</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDlq1POs3r07OhCf-DqQGHfrkwIviQACjBNrG1-fqVaHNvjbYnAzhgEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题方法是模拟，S1 操作数依次是 5,8,3,2，其中 2 在栈顶。所以第一次是弹出来 2 和 3，并且计算 3+2=5，然后放回栈里，此时栈里应该是 5,8,5。第二次弹出来是 5 和 8，计算 8-5，得到 3，然后放回栈里，此时栈应该是 5,3。第三次弹出来是 3 和 5，计算 5×3=15。</p><p>所以最后答案应该是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDpq1PS1MNwi_pulRb2Le3TfMJcmSQACjRNrG1-fqVYIeHYqhg4ScgEAAwIAA3kAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题也是模拟，</p><p>对于 A，1 和 2 出队并输出元素，3,4 出队并入栈，5,6 出队并输出，4,3 出栈。</p><p>对于 B，1 出队入栈，2,3,4,5,6 出队输出，1 出栈输出。</p><p>对于 C，1,2 出队入栈，3,4,5,6 出队输出，矛盾。</p><p>对于 D，1,2,3,4,5,6 入栈，6,5,4,3,2,1，出栈输出。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDtq1PTdAfM8PobAhAssA6c0hA37iwACjhNrG1-fqVbqgqa383fXhQEAAwIAA3kAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 A。</p><p>这类题也算模拟，套公式不如手动计算。m1,1 放在 0，m1,2 放在 1，以此类推，m1,12 放在 11，所以 m2,2 放在 12，m2,3 放在 13，以此类推 m2,12 放在 22，所以 m3,3 放在 23。</p><p>所以，m1,1 放在 0，m2,2 放在 12，m3,3 放在 23，中间差值是 12,11，以此类推，后续是 10,9 等。</p><p>所以 m4,4 应该是 33，m5,5 应该是 42，m6,6 应该是 42+8=50。</p><p>所以应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDxq1PV_7aWA2bAvTZ5T6T95b4VDSQACjxNrG1-fqValPCABGHE_GQEAAwIAA3kAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 A。</p><p>每个分页节点都有 2 个子节点，意味着没有度为 1 的结点。所以由 n0+n1+n2=n1+2n2+1，可得 n0=n2+1，由于 n0=k，所以 n2=k-1，所以总结点数为 2k-1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCD1q1PaQpqgBQXR6lX8y5nfCLKODBAACkBNrG1-fqVY48UwsQsIimAEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 A。</p><p>这道题有两种做法，一种是构造哈夫曼树，另一种是瞪眼法，出现次数少的编码较长，出现次数多的编码较短。</p><p>所以，由于 e 出现了 10 次，所以直接可以排除掉 B。由于 C 中 00 是 0011 的前缀，所以排除。</p><p>只剩下 A 和 D 可以选择，观察 D 选项 b 出现 3 次但是却拥有短哈夫曼编码，所以排除。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCD5q1PcyEXNevPR2Dwha91-rS7gzVQACkhNrG1-fqVbl9Olo2pxQ7gEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 C。</p><p>根据中序遍历，本题顺序从小到大应该是：x1,x3,x5,x4,x2，所以 A，B，D 可以排除。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCD9q1Pd6-0mnk30gUp1P9VG6LWB8FAAClBNrG1-fqVZXVyPUsLeSpgEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 D。</p><p>这种题一个个代入就好了，对于 D，拿走了 5 之后想要拿 2，但是拿 2 之前得拿 1，所以不是拓扑排序。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEBq1PfDXmDodLNNwnH8GyPc2fYI1wAClRNrG1-fqVaA9ynWzqn4SgEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 B。</p><p>三阶 B 树一个结点至少拥有 3/2 向上取整 -1=1 个关键字，所以高度为 5 的 3 阶 B 树至少有 1+2+4+8+16=31 个关键字。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEJq1PhjRgVn9_wbdGaGOJPHZQAB4ZoAApkTaxtfn6lWvp3ksQXjj-gBAAMCAAN4AAM9BA" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 C。</p><p>纯模拟方案，22%7=1，43%7=1，15%7=1，所以查找成功的总长度应该是：</p><p>1+2+3=6，所以 6/3=2。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEFq1Pg6y9c8AstzHwfrmjljCqDgpgACmBNrG1-fqVb9hLdkvKRjIwEAAwIAA3kAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 D。</p><p>这类题采用观察法，第一趟排序结果第一个关键字为 1，所以 1 和 8 必然要互换，所以第一次应该间隔是 5。第二趟 排序结果第二个关键字是 2，也就是说 2 和 3 要换，所以增量应该是 3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCENq1PmzAjJZ9M_k42e1Yk3OH27d2gACnBNrG1-fqVYdIxZyo2Y86QEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 A。</p><p>采用纯模拟法，构造大根堆，如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGtq1djfIqEoTCUGtM7SKsfVxeM2iAACBhJrG1-fsVYnB5cp3NnT7wEAAwIAA3cAAz0E" alt="11 解" /><figcaption>11 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCERq1Pn-AuFJlrSY4lsEtxjPy9JyjwACnRNrG1-fqVZoREkcccQligEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，二进制规则确实运算简单，不需要考虑过多的进位；</p><p>对于 2，两个稳态的物理器件容易，是因为不需要考虑范围，高是 1，低是 0；</p><p>对于 3，使用逻辑门电路实现算术运算也是正确的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEVq1PpGkSvIMn2ydmrIPrUwvTylWgACnhNrG1-fqVYLIRi1-NwuTwEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 C。</p><p>首先排除 A 和 D，因为题设中的 y 是 16 进制。</p><p>-y 的补码是 FFFF,FFBEH+0000,0001H=FFFF,FFBFH。</p><p>所以 x-y=FFFF,FFDFH+FFFF,FFBFH=FFFF,FF9EH。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEZq1Ptuy2jtx9SiODQm50P1X_G_yAACoBNrG1-fqVbUydzJ_gh3AAEBAAMCAAN4AAM9BA" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 A。</p><p>按照单精度浮点数的表示，符号位为 0，阶码为 0000,0001，尾数全为 0 的数是最小的。阶码为 1，也就意味着 1-127=-126，所以最小的规格化正数是：1.0×2^-126。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEdq1P2IafDrt4SNHXTZ56FFCVxvlQACoRNrG1-fqVY05hM7FDFzRQEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 A。</p><p>32bit 的数需要 32/8=4 个字节，也就是 8 个 4 位二进制数表示，两个一组。</p><p>-64 的机器数是：FFFF,FFC0H，2 个一组的小段法，也就是先读入 C0H，也就是应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEhq1P4Sad_8WJGTdCLiVeduC-0OyAACoxNrG1-fqVYveoxXzzYPRgEAAwIAA3kAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题因该选 B。</p><p>逻辑右移指的是补 0，算术右移指的是按照符号位。</p><p>所以，原始的数 1101,1000B 逻辑右移一位，也就是 0110,1100B，算术右移一位也就是 1110,1100B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCElq1P6buEAURpTKoqujAAFFbOwvA8MAAqQTaxtfn6lWpAZciCGLv3YBAAMCAAN4AAM9BA" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 2K×1 位的引脚，显然是 2^11，一般来讲要让 r 接近 c，如果不能接近，那么行应该短一些，所以一那个该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEpq1P739PkHNN8Osznvd_5PaucqIQACpRNrG1-fqVahqC_-luiPowEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 B。</p><p>2100H-2000H=0100H。0100H=2^8=256，256/8=32，所以应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCEtq1P9er1MiP7fNCSW6hkGk3YjV9QACphNrG1-fqVYcDiY0ktCZdwEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 A。</p><p>考虑无符号数的情况，显然 CF 应该是 0，因为是够减的。对于有符号数的情况，负数减一个负数必然是够减的，所以 OF 也应该是 0。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCExq1QABQm2-801E4_oj8kWoWRI1HC4AAqcTaxtfn6lWuZLTS7xjnOIBAAMCAAN4AAM9BA" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 D。</p><p>选最长的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCE1q1QABc2_iwGu0bgoeEWNU9MHmSMkAAqkTaxtfn6lWXcVNjHkJebgBAAMCAAN4AAM9BA" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 B。采用总线复用显然是降低数据传输率的方法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCE5q1QS93_Xm1bpFMRvKDsaZtYSU2wACsBNrG1-fqVb1Rf9XBRGR2QEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，按照本身的优先级排序。</p><p>对于 B，通用寄存器是操作系统保护的。</p><p>对于 C 是一个正确的描述。</p><p>对于 D，只有处于开中断的时候，才会执行中断服务程序。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCE9q1QU5slC8mrv3m3L3OVQRaOCF1AACshNrG1-fqVanXKCnnk4wjAEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>对于 1，多任务操作系统至少需要并行，并发是其更高级的方式。</p><p>对于 2，多任务操作系统需要实现对共享资源的保护。</p><p>对于 3，但 CPU 环境就可以跑并发了，可以考虑 RR。</p><p>本题应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFBq1QYWoWmyUQ3M94x4NWTX7OJUXAACsxNrG1-fqVY-yCKHtYGHggEAAwIAA3kAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 D。</p><p>由于 P2 的优先级最高，所以其周转时间应该是 24us。由于求的是系统周转时间，所以 P1 和 P3 等待的时间应该完整计入。</p><p>由于 P2 运行完之后是 P3，P3 首先等待 18us（此时 P1 等待时间剩下 12us），上处理机 1us，总计运行 36us，总和也就是 24+18+1+36=79us。</p><p>P1 在 P3 运行完之后等待 30us，上处理机 1us，总计运行 12us，总和也就是 79+30+1+12=122us。</p><p>所以，24+79+122=225，225/3=75us。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFFq1QYwkXlXX3apPPPheEyQ2BSpfwACtBNrG1-fqVZ4urM0hziaJwEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 B。</p><p>thread1 按照 1,2,3 记录，thread2 按照 4,5,6 记录。</p><p>显然，值为 2 的序列为：1,2,3,4,5,6；4,5,6,1,2,3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFJq1QZBpiWbZK3jZOW6ExsuZTtkjQACtRNrG1-fqVaKv_40j0eY7QEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 A。</p><p>先计算仍需分配的资源，仍需分配 2,2,1，系统中还剩下 4-2-1=1 个资源，所以不存在安全序列。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGFq1RDRfO62LwABnfzj7d4lnITKwPAAAsYTaxtfn6lWp5DKPRMc6B0BAAMCAAN4AAM9BA" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 1，可以理解为进程 P 想申请打印机，那么可能从运行态转为阻塞态。</p><p>对于 2，可以理解为 read 指令，那么显然需要。</p><p>对于 3，可以理解为抢占式优先级，显然是运行态转换为就绪态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGBq1RCk3gaVt0CwQshNYOMdnTQ7uwACxRNrG1-fqVbVcDRUxcfRWwEAAwIAA3gAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 D。</p><p>管程本身就带有互斥机制，所以 A 是错的。对于 B，作用反了，x.signal 才是唤醒，对于 C，x 本身是条件变量，而不是信号量。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCF9q1RCJ3QKdV6NMnLsJ7d0yU6kWUgACxBNrG1-fqVYeegGMI2KL7AEAAwIAA3gAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 D，起始没什么好分析的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCF5q1Q-I3caN_BHvKMKKLrLQB0ISMwACwxNrG1-fqVan7VCVQXHkEwEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 A，先来先服务是完全根据进程进入系统的时间来排序的。</p><p>对于 B，最短寻道往往会出现饥饿现象，并且往往会出现往左了之后一直向左。</p><p>对于 C 和 D，循环扫描粘着现象更严重。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCF1q1Q4blWQJLerIi2Y0Y_LH04mvEgACwhNrG1-fqVbQetg221OVKwEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，提前读的意思是提前把数据从磁盘读入内存，以供进程读取，显然是可以省时间的。</p><p>对于 2，为文件分配连续的簇，意思是假设文件存储在磁盘里，并且该文件占据多个磁盘块，那么在寻道的时候可以减少寻道时延。</p><p>对于 3，延迟写的意思是说在把数据写入磁盘之前，先把数据写入到缓冲区，以便在需要的时候再写入磁盘。</p><p>对于 4，显然是对的，磁盘高速缓冲类比 cache 机制。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFxq1Q4C7Rw_y-RVeUuPiFVAUbeB_QACwRNrG1-fqVYg2Pf-OhxxQgEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题属于背书问题，应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFtq1Q3oKF8RDum3iIbilsDVmUN_ZQACwBNrG1-fqVZKrVu2gI7XqQEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题属于背书问题，应该选 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFpq1Q3URK5CzwK_2CZUSFuVH2x4zAACvxNrG1-fqVabhH7es-ZalAEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 C，属于背书问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFlq1Q0kZ_8XdHclEVsyEBVStN3s-QACvhNrG1-fqVaaTk1fdNFyXgEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 D。</p><p>属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFhq1Qwdg_aZMqo4QlaZef14-I4Q8gACvBNrG1-fqVZsXY6nzyeVvgEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 D。</p><p>假设一个数据帧长度为 xbit，那么传播耗时 x/3000，所以可以列出式子：（x/3000）/（x/3000+0.4）=0.4，解得 x=800。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFZq1Qulh4W-POnO7acGENGrq0WdGAACuRNrG1-fqVY3HjhviKDH_gEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 D。</p><p>H1 的目的 mac 地址应该是路由器的，所以是 51，H2 收到的源 mac 地址也应该是路由器的，所以是 61。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFVq1QrOm6TtidJrN5RBKNtcA1abJAACuBNrG1-fqVZmvksiM3obIgEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 C。</p><p>观察，展开 32,40,48,56 为二进制，分别为：0010,0000B，0010,1000B，0011,0000B，0011,1000B。</p><p>显然，这些数字的前三位是一样的，所以应该是 16+3=19 位的子网掩码，所以应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFRq1QpLLeLlzWM-qslv80KeOpFoBAACtxNrG1-fqVbUh45qn2S4YAEAAwIAA3gAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 B。</p><p>分用指的是到了目的地址后，根据目的端口号把原有的数据分开来给对应的东西。</p><p>复用指的是根据源端口号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCFNq1QoWCx6x27y8K023XwkP4xEwjQACthNrG1-fqVbJ4tcuZeMf8AEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 D，属于背书题，SMTP 协议直接传输的只能是阿斯科编码，需要使用 MINE 协议扩展才能传输其他东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGJq1RG5v5IQ8Z1mF8g6Pkl6ISWY9wACxxNrG1-fqVZe_Guhi-wTeAEAAwIAA3gAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>设置一个数组模拟哈希表 hasmap[n+1]</li>
<li>遍历数组，如果 A[i]&lt;=n&amp;&amp;A[i]&gt;0，那么 hasmap[A[i]]=1</li>
<li>遍历 hasmap，如果 hasmap[i]==0，那么返回 i</li>
<li>如果遍历完了，那么返回 n+1</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>solve</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>n</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> </span><span>hasmap</span><span>[n</span><span>+</span><span>1</span><span>];</span></div></div><div><div><div>3</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>n</span><span>+</span><span>1</span><span>;i</span><span>++</span><span>){</span></div></div><div><div><div>4</div></div><div><span>        </span><span>hasmap</span><span>[i]</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>6</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>n;i</span><span>++</span><span>){</span></div></div><div><div><div>7</div></div><div><span>        </span><span>if</span><span>(</span><span>A</span><span>[i]</span><span>&lt;=</span><span>n</span><span>&amp;&amp;</span><span>A</span><span>[i]</span><span>&gt;</span><span>0</span><span>){</span></div></div><div><div><div>8</div></div><div><span>            </span><span>hasmap</span><span>[</span><span>A</span><span>[i]]</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>9</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>1</span><span>;i</span><span>&lt;</span><span>n</span><span>+</span><span>1</span><span>;i</span><span>++</span><span>){</span></div></div><div><div><div>12</div></div><div><span>        </span><span>if</span><span>(</span><span>hasmap</span><span>[i]</span><span>==</span><span>0</span><span>){</span></div></div><div><div><div>13</div></div><div><span>            </span><span>return</span><span> i;</span></div></div><div><div><div>14</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>16</div></div><div><span>    </span><span>return</span><span> n</span><span>+</span><span>1</span><span>;</span></div></div><div><div><div>17</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>时间复杂度：O(n)</p><p>空间复杂度：O(n)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGNq1RJhhrKLeZ5iqBf8Z3WlFgt27wACyBNrG1-fqVbxUug6zX4t5gEAAwIAA3kAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>如图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGpq1czmXvMXMxMBksETvoBWXHZ5gQAC4RFrG1-fsVZyj_yeOmtx6QEAAwIAA3cAAz0E" alt="42 解 1" /><figcaption>42 解 1</figcaption></figure><p></p><p>16</p><p>(2)</p><p>邻接矩阵。</p><p>Prim 算法。</p><p>(3)</p><p>采用第一种方式可以收到分组。</p><p>采用第二种方式不可以收到分组。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGRq1RKOqi0Vt9J7WhHTgBWkc_XNYQACyRNrG1-fqVYXerUmm_wkXAEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>假设执行 1s，则总共传输 2MB 的数据。</p><p>一条指令耗时：4/500M，一次输入输出 10 条指令，则消耗 40/500M，也就是至少 80ns 查一次。</p><p>订：</p><span><span><span>满载时间=4 B2×106 B/s=2×10−6 s=2 μs\text{满载时间} = \frac{4\ \text{B}}{2 \times 10^6\ \text{B/s}} = 2 \times 10^{-6}\ \text{s} = 2\ \mu\text{s}</span><span><span><span></span><span><span>满载时间</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span><span></span><span>×</span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span></span></span></span></span><span> </span><span><span>B/s</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>4</span><span> </span><span><span>B</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span></span><span>×</span><span></span></span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span><span>−</span><span>6</span></span></span></span></span></span></span></span></span><span> </span><span><span>s</span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span> </span><span>μ</span><span><span>s</span></span></span></span></span></span><p>而 IO 接口为 32bit=4B，传输 2MB 至少最要 2MB/4B=0.5M 次中断。</p><p>也就是 1s 内总共执行 40/500M×0.5M=4%，也就是需要消耗 4% 的时间。</p><p>(2)</p><p>假设执行 1s，则总共传输 40MB 的数据。</p><p>设备 B 一次中断时间为 400/500M。</p><p>IO 接口为 4B，传输 40MB 至少需要 40MB/4B=10M 次中断。</p><p>也就是 1s 内总共执行 400/500M×10M=8s，矛盾。</p><p>所以不可以使用中断 IO 方式。</p><p>(3)</p><p>假设执行 1s，则总共传输 40MB 的数据。</p><p>设备 B 一次 DMA 的时间为 500/500M。</p><p>一次传输 1000B，传输 40MB 至少需要 40MB/1000B=40K 次中断。</p><p>也就是 1s 内总共执行 500/500M×40K=4%。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGVq1RKgufKUelaFNbIemCFvf2JTHgACyhNrG1-fqVbMR-LjngX3FwEAAwIAA3gAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>28 位。</p><p>(2)</p><p>直接映射。</p><p>订：全相联映射</p><p>SRAM。</p><p>(3)</p><p>2 路组相联。</p><p>脏位 1 位。</p><p>LRU 替换位 1 位。</p><p>一行 cache 是数据+tag+ 有效位 + 脏位+LRU 替换位，也就是 2^5×8+20+1+1+1=279。由于总共有 8 组 cache，一组 2 个，所以是 16 个 cache 行，也就是 16×279=4464bit。</p><p>Cache 有效位的作用是：当进程切换的时候，原来的 cache 失效，所以需要有效位来确保当前进程是用的 cache 是自己的数据。</p><p>(4)</p><p>0008,C040H 按照虚页号切也就是 tag 位为 0008CH，对比 TLB，发现 0008CH 的有效位为 1，且对应实页号为 0040H，所以得到物理地址 004,0040H。</p><p>物理地址 004,0040H=0000,0000,0100,0000,0000,｜010｜0,0000B，也就是在第 2 组 cache，tag 号为 00400H。由于有效位为 0，所以未命中 cache。</p><p>由于虚拟地址给的后 8 位不会变，所以解析后 8 位即可，也就是 60H=011｜0,0000B，对应的是第 3 组 cache。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGZq1RKyQNj42lwwVjs3Epk_eUtikwACyxNrG1-fqVZPMD1bJc8MVAEAAwIAA3gAAz0E" alt="44 图" /><figcaption>44 图</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGdq1RLQ2GDKIq-Kzpgs7JaDSfMFegACzBNrG1-fqVav1JMus0Q8yQEAAwIAA3kAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>页目录号为：00,0000,0110B。</p><p>页号为：00,0000,0110B。</p><p>页内偏移量为：0000,0000,1000B。</p><p>拼接起来也就是 0000,0001,1000,0000,0110,0000,0000,1000B=0180,6008H</p><p>(2)</p><p>物理地址。</p><p>进程切换时，PDBR 内容发生变化。一个进程对应一张独立的页目录表。</p><p>线程切换时，PDBR 内容不发生变化。线程依托于进程，没有自己独自的物理地址空间。</p><p>(3)</p><p>近期访问位，近期修改位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGhq1RLkvapvD5KXKUB-PJVslC0AAYsAAs0Taxtfn6lWhIYEqOV9risBAAMCAAN4AAM9BA" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>一个簇大小为 4KB，所以一个簇内可以存储 4KB/64B=64 个文件索引节点。</p><p>所以，最大文件长度应该是 (8+64+64^2+64^3)×4KB。</p><p>(2)</p><p>用 1M 个簇存放文件节点，也就意味着 1M×4KB/64B=2^26 个。</p><p>用 512 个簇存放文件数据，也就意味着 512M×4KB/5600B=2^41/5600&gt;2^41/2^13=2^28 个。</p><p>所以，最多可以存放 2^26 个。</p><p>(3)</p><p>6KB/4KB=1，也就意味着其最大数据放在第 2 个簇里（按 1 开始）。</p><p>40KB/4KB=10，也就意味着其最大数据存放在第 10 个簇里。</p><p>由于第 2 个簇是在直接地址项，第 10 个簇在第一级地址项，读取磁盘的次数不一样。</p><p>所以获取 F1 和 F2 最后一个簇号所需要的时间不同。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCGlq1RL0DB0wecITpXkxX-oSET508QACzhNrG1-fqVY8c0Lwj05kkwEAAwIAA3kAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>由于是均分，所以销售部被分配到的应该是 192.168.1.1-192.168.1.125，技术部被分到的应该是 192.168.1.129-192.168.1.253。</p><p>销售部希望的广播地址是：192.168.1.127。</p><p>技术部希望的希望地址是：192.168.1.128。</p><p>若为每个主机分配一个 IP 地址，那么技术部子网还可以连接从 209-253，也就是 253-209+1=45 台。</p><p>(2)</p><p>由题设可知，数据长度是 1480B，由于技术部子网的 MTU 为 800B，尝试发 780B 的数据。然而 780/8 不可被整除，所以第一段数据应该是 776B，776/8=97。剩下的数据 1480-776=704B。</p><p>所以，最大一个 IP 封片封装的是 776B。</p><p>至少需要 2 个分片。</p><p>第一个分片的偏移量是 0，第二个分片的偏移量是 97。</p></section><section><h3>408 2019 真题 2 刷<a href="#408-2019-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为：145，1 刷为 144，错的选择题为 24</li>
<li>第 5 题：对关键路径的理解错误</li>
<li>第 26 题：对于 4，FAT 表兼具了已使用管理和未使用管理，可以理解为静态链表，也就是显示链接分配。</li>
<li>第 42 题：-1，队满的时候应该采用牺牲一个节点的方式。</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCG1q1fj_ySZgH3yq29BWnQ7GmgcKKAACBBZrG8YqsVaMftrtk-xLmQEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 B。</p><p>自增然后按照平方比较，所以应该运行根号 n 次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCG5q1fqMSPK6nuCB7jQhI2MoiKSKHQACChZrG8YqsVaoeuSXGHJpswEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 B，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCG9q1fqt076COcbfYSsITrKtN3AtxgACCxZrG8YqsVbWrflm3FVwZgEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 C。</p><p>哈夫曼树不存在度为 1 的结点，根据公式 n0+n1+n2=n1+2n2+1，也就是 n0=n2+1，由于 n1=0，n0+n1+n2=115，所以 2n2+1=115，也就是 2n2=114，n2=114/2=57，所以 n0=57+1=58。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHBq1f7ZhLJgviwAATy2fD-DpUTQBA0AAhgWaxvGKrFW5VyM-3oZZIwBAAMCAAN4AAM9BA" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 1，v 是 T1 叶节点，那么可以构造两个树如下图，所以 A 是对的，都有可能。</p><p>对于 3 可以构造出来肯定是错的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXJq2JiF0YH9nsbfnJswGs_3MmnhmwACCxRrG89ByVbc5eV8Xx0_EwEAAwIAA3kAAz0E" alt="4 解" /><figcaption>4 解</figcaption></figure><p></p><p>所以，1 是对的，3 是错的，可以排除掉 BD。</p><p>对于 2，如果不是叶节点，那么删去后再插入必然是叶节点，所以 2 是错的。</p><p>综上，只有 1 是对的，也就是 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHFq1f-2gH7R5EyL_i56hQyXwHYIlwACGRZrG8YqsVZLcJWnTSwUfAEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题采用模拟的做法，如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZFq2fFJ0wVnhBsyAjWfiwjAMrU8_wACmhJrG89B0VZHPEk8379qGQEAAwIAA3kAAz0E" alt="5 解" /><figcaption>5 解</figcaption></figure><p></p><p>订：好像这类题学的有点问题，必须得再学一遍。</p><p>总结一下，在 AOE 网中，必须得区分定点和有向边。</p><p>定点的左上角指的是最早发生时间，右上角指的是最迟发生时间，指的是对所有边来讲，这个点必须从什么时候开始起步<strong>第一个</strong>事件（因为可能这个点有多个出度）</p><p>对于有向边活动时间，最早开始时间直接严格等于起点 i 的最早发生时间，最迟开始时间等于指向结点的最晚开始时间 - 持续时间。</p><p>切记不可以读特定的结点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXNq2Jizeh38DvloYtIAAZl-jSNgrbcAAgwUaxvPQclW4gL77gWq4cQBAAMCAAN4AAM9BA" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 A。</p><p>构造如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXRq2JlxvL7s3Tf9lwQK7g07akit5gACDhRrG89ByVbzgYBMa5mxWwEAAwIAA3cAAz0E" alt="6 解" /><figcaption>6 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXVq2JmEJSHlD3Sk9c76KxcAAaUCTmAAAg8UaxvPQclWXqWuDRJ10OUBAAMCAAN4AAM9BA" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，数据的规模如果非常大，那么可以采用快排等排序算法，但如果数据量很小，有的时候不如采用其他算法。</p><p>对于 2，如果数据采用链式存储，那么用不了快排。</p><p>对于 3，对于一些结构体排序而言，这是必须考虑的。</p><p>对于 4，如果数据的初始状态就是接近有序的，那么使用快排效率会很差。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXZq2Jni5ArfPS9ju0Pq1t1D4yzmnwACEBRrG89ByVY_7lXQH0eBmQEAAwIAA3kAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 C。</p><p>首先计算所有数的模 7。</p><p>87,40,30,6,11,22,98,20</p><p>3,5,2,6,4,1,0,6</p><p>由于采用线性探测法解决冲突，可以构造出哈希表，填满 0-7。</p><p>而散列函数是 0-6，所以应该是 9+8+7+6+5+4+3=42，42/7=6。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXdq2Ju1qhrhnFOIJi47vR7gAAE6pI4AAjYUaxvPQclWZn4CruWpo74BAAMCAAN5AAM9BA" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 B。</p><p>如下图所示，应该是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXhq2JxQjKYF4KNMPudffkvaBxNS1AACNxRrG89ByVb4PgabmEN7SgEAAwIAA3kAAz0E" alt="9 解" /><figcaption>9 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXlq2JxpQj8G8NldUJrXvaqp38y0BAACOBRrG89ByVbvQd_-JlwkpAEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，最大可以选 72，中间可以选 28</p><p>对于 B，最小可以选 2，最大可以选 72</p><p>对于 C，最小可以选 2，大的那一侧可以选 28</p><p>对于 D，小的一侧可以选 12，大的一侧可以选 32，但是由于不包含边界，所以至少得 3 个数是最终位置，错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXpq2J3m52ow3qo8Ag5dS6-leNWwNgACOhRrG89ByVZM-UTt7UJF-wEAAwIAA3kAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 B。</p><p>120 个初始段，也就是 119%11=9,11-9=2。</p><p>所以也就是补充 2 个。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHJq1f_O_iZnU8rSDxkbwZjeQ2MZPQACGhZrG8YqsVayYxeBaNJnXQEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 C。对于 C，数据在指令中可以以很多种方式给出，典型的寻址方式就有 10 种。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHNq1gABDnTD7AOw2zX5LWNyIrwB6kYAAhsWaxvGKrFWIi-HwmSOVywBAAMCAAN4AAM9BA" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 A。</p><p>unsigned short usi=65535，也就是 FFFF,FFFFH。</p><p>转译为 short，也就是 -1。0</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXtq2J5xEyZLNeJWpx5Y6oxAkhB5cwACOxRrG89ByVZU4zofw5hNcwEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，显然是对的。地址转换是硬件做的事情，所以是 CPU 检测到的。</p><p>对于 B，缺页处理需要由操作系统提供的缺页程序来完成，这里辨析一下，缺 cache 的时候是纯硬件。因为前者是要把外存里的数据搬到内存里。缺页本身是异常，但是需要通过 IO 来搬数据。</p><p>对于 C，如 B 所说。</p><p>对于 D 是错误的，缺页一定是回到当前指令重新执行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYFq2eCKIR7-fLWI7pQrCO_QjxGuywACYBJrG89B0VZvdcgmq6MhIAEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 D。</p><p>首先先基址寻址找到操作数的起始地址，也就是 F000,0000H+FFFF,FF12H=EFFF,FF12H。</p><p>由于采用打断法，所以最低有效字节应该是 00H，也就是 EFFF,FF15H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYJq2eEhnUebqQAB2JZLA3qd0AeQCFYAAmESaxvPQdFWj3hEsPMRQ9ABAAMCAAN4AAM9BA" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 D，考虑使用同步方式，可能是多个时钟脉冲才执行一条指令。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYNq2eFj26e76GZzZItPIBzndiOAhgACYhJrG89B0VZAVsiflihNfQEAAwIAA3kAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 1，显然使用了 R，那么也就意味着使用了通用寄存器组。</p><p>对于 2，由于实现了加法，那么肯定使用了 ALU。</p><p>对于 3，由于 M 访存了，所以肯定使用到了存储器。</p><p>对于 4，译码在执行之前，所以错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYRq2eG0b1ylER1V4PiK4ZIq9qkBwwACZBJrG89B0VYMWSSy6_SjcQEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 C。</p><p>默认不采用数据转发和 load-use 处理，所以也就是需要 nop 3 次。</p><p>大部分情况下需要处理的都是写后读。</p><p>分析全流程，对于 I1 和 I2 之间没有冲突，I2 和 I3 之间存在冲突，I3 和 I4 之间存在冲突，所以排除 B 和 D。</p><p>现在观察 A 和 C 两个间隔的，也就是 I1，I3；I2，I4 有没有冲突。</p><p>对于 I1 和 I3，由于 I1 和 I3 只间隔 1 个段，所以本来要 nop 3 次，现在只需要 nop 2 次，然而还是要 nop 的，所以存在冲突。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYVq2ePKtNXhouny0Vzv-00GPc1wIQACbBJrG89B0VbClEqwupcbpAEAAwIAA3kAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 B。</p><p>采用 3 通道存储器总线，也就意味着有 3 条通道，所以总带宽应该是 1333M×3×64bit/8=32GB/s。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYZq2eSShjVK2AI15s-QVov-vidafwACexJrG89B0VYk4ggrnU2u_AEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，格式化容量比非格式化容量小，因为磁盘格式化的时候要划道，会导致损耗。</p><p>对于 B，属于背书。</p><p>对于 C，磁盘存储器的最小读写单位为一个簇。</p><p>对于 D，属于背书。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYdq2eWUugKKc1jYO-9Vcf_g47llUAACgBJrG89B0VbuiU2kxIFhdgEAAwIAA3kAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 A。</p><p>CPU 主频为 1GHz，数据缓冲寄存器为 32bit=4B。</p><p>由于数据传输率为 50000B/s，假设传输 1s，也就是总共传输 50000B，50000B/4B=12500 次中断，也就是总共需要 12500×1000/1G=0.0125s，也就是 0.0125×100%=1.25%。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYhq2ebac4opBXJOFWTW9p4ZxQ4qSgACgRJrG89B0VZ_JHJVTbln0gEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 D。</p><p>再次辨析一下 DMA 全流程，首先是 CPU 发起 DMA 请求，DMA 控制器接收到请求后从内存里搬，等到搬完一块数据后请求中断。</p><p>其中有几个区别，如果采用周期挪用，那么是争夺总线使用，DMA 每次准备好一个数据缓冲区的数据就要发一次请求，适用于中高速的设备；如果采用停止 CPU 访问，那么是传一整个块期间，CPU 都不能访问内存，适用于适用于极高速外设（如高速磁盘、千网/万兆网卡）；对于交替访问，将一个 CPU 时间周期严格分成两部分，前半部分给 CPU 后半部分给 DMA，适用于 CPU 工作周期比主存存取周期长 的系统，硬件实现较复杂。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYlq2eimlJ_dQKEzUz15C9g5Zs7GVQACghJrG89B0VbJDYsn8ovBfwEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 A，动内核，自然需要操作系统，所以正确。</p><p>对于 B，操作系统分配一个内核进程，然后其他线程都依托于这上面（用户线程）。</p><p>对于 C，显然是对的，不需要操作系统介入</p><p>对于 D，显然正确，用户线程可以在不支持内核级线程的操作系统实现</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYpq2ejw0vSyMrJvD6O3xUpVRZy9vAACgxJrG89B0Vaw3EE0MjwFRgEAAwIAA3kAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 C。</p><p>进程唤醒的意思是：进程从阻塞态到就绪态。</p><p>对于 1，IO 结束后，操作系统会将进程从阻塞态挂到就绪态，显然如此。</p><p>对于 2，某个进程退出临界区后，意味着其用完了临界资源，所以会导致从阻塞态变成就绪态。</p><p>对于 3，当前进程时间片用完，会导致进程从运行态转变为就绪态，所以排除 3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYtq2ev3myKdBt25P9sWpRBq-iimuAACjhJrG89B0Vbt4gbbSvGbCwEAAwIAA3kAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 1，执行系统调用的过程属于内核态。</p><p>对于 2，IO 采用必须要进入内核态。</p><p>对于 3，可以理解为 mac 和 windows 有没有为应用程序提供了统一的接口，显然是没有的，所以 3 是错的。</p><p>对于 4，属于背书。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYxq2exNg67giUm94jvUAAGz1dyp3DgAAo8SaxvPQdFW8KwJemE20VkBAAMCAAN5AAM9BA" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 C。</p><p>注意功能，本题功能是管理空闲磁盘块。</p><p>对于 1，位图显然是管理空闲磁盘块的。</p><p>对于 2，索引节点指的是还可以创造多少个文件。</p><p>对于 3，空闲磁盘块链指的是链式分配下有哪些空闲磁盘块。</p><p>对于 4，文件分配表指的是文件分配，也就是已经使用了哪些，而不是未使用。</p><p>对于 4，FAT 表兼具了已使用管理和未使用管理，可以理解为静态链表，也就是显示链接分配。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCY1q2ezhmuzQkXYaJN01IZyxo7XfAgACkhJrG89B0VbI4lPUQ12NoAEAAwIAA3kAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 C。</p><p>注意这道题问的是平均等待时间，采用模拟法，考虑 P1，P1 时间是 30ms，执行完一个时间片后开始等待。此时 P2 上处理机运行一个时间片，然后 P1 和 P2 分别剩下 20ms，10ms，由于第二个队列是短进程优先，所以第二个进程继续运行 10ms，然后 P1 运行剩下的 20ms。</p><p>所以，P1 总共等待 10+10ms，P2 总共等待 10ms。总计等待 30ms，也就是平均等待时间是 15ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCY5q2e1S49DFL4-5-13DfZ_fpfdUmgAClBJrG89B0VacKL9khoLYlwEAAwIAA3kAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题考察的是共享段表。</p><p>对于 A，物理只存一份这是对的。</p><p>对于 B，段 S 在 P1 和 P2 中就是逻辑段，逻辑段自由分配，所以错误。</p><p>对于 C，显然是共享的。</p><p>对于 D，是分配那块的只是，是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCY9q2e2vuaTq4H_ggZWNM7d_IDx79gAClRJrG89B0VbdmdGP78BlSgEAAwIAA3kAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 C。</p><p>如图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZBq2e4xB4U3_HR67A1cqlG94WoRvAAClhJrG89B0VZbcFXW1G7GNgEAAwIAA3kAAz0E" alt="29 解" /><figcaption>29 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCH9q1hJ2dasunDoLH8363eWUc7uWhgACVRZrG8YqsVaau6c6nIp5LAEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 3，银行家算法并不可以判断系统是否处于死锁，只能判断系统是否处于不安全的状态。即便是不安全的状态，也不一定发生死锁。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCH5q1hEIdQ1HkInq8hhM8EDuxa0i2gACUxZrG8YqsVYBPjZ9wUBAKAEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 A。</p><p>2050,1225H=0010,0000,01｜01,0000,0001｜,0010,0010,0101B.</p><p>所以页目录号分别是 00,1000,0001B=081H，页号应该是 01,0000,0001B=101H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCH1q1hCgdsEUoDZCPr4qTh2a1MlrbwACUhZrG8YqsVaCHFt7QWnbSQEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 C，属于背书题。</p><p>对于 A，首次适应算法反而是利用的时候最佳的。</p><p>对于 B，最坏适应算法最后会导致大的进程无法装入。</p><p>对于 C，最佳适应算法会留下难以利用的内存碎片。</p><p>对于 D，每次都从上次结束的地方开始向后，是一种优化，但是实践下来没有首次适应算法好。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHxq1hBcqLPZMeYWojwjUf9uIsIPJwACUBZrG8YqsVZjGT1HnwtfRgEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选 C。</p><p>OSI 参考模型自下而上应该是物理层，数据链路层，网络层，传输层，会话层，表示层，应用层。绘画层的功能是会话管理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHtq1g8NaA7Hq7YEkbCn5DcIwJogHgACTBZrG8YqsVaa_1JTaIDcPgEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题，应该选双绞线。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHpq1g66ErcakYGNBn3u9ai9aTUewQACPBZrG8YqsVZNSD1MOfCVdgEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于滑动窗口协议，3bit 的编号发送窗口 + 接收窗口是 8，所以 8-5=3，也就是 3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHlq1gyRFEP1CQq59wURnhmSK12dLAACNBZrG8YqsVbSkd7AJ_KptQEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 B。</p><p>首先题印错了，应该是 100Mb/s。</p><p>本题问的是最短单向传播时延，先算 RTT，RTT=128×8/10^8=2^10/10^8=10.24us。</p><p>问的是单向传播时延，所以应该是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHhq1guvJCyHmYWkobF7sXhSBcAUngACMxZrG8YqsVbhTke6N9gneAEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 B。</p><p>将 101.200.16.0/20 分成 5 个子网，采用类似哈夫曼树的分法，也就是 0,10,110,1110,1111，所以也就是最后 8 bit，也就是 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHdq1gs777K5SCAG6JyawLPQBDQHdwACMhZrG8YqsVZUC-9LbWmydQEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 C。</p><p>快重传，在收到三个冗余 ack 的时候立刻发送，三个冗余 ack 的意思是总共收到 4 个 ack，所以是 t3 时刻立刻发送。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHZq1grXalFzRCTmlhbwHovUkGjRuwACMBZrG8YqsVYLR88mhQ0yCwEAAwIAA3gAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 D。</p><p>第一次握手的时候，甲发送的是 2018；</p><p>第二次握手的时候，乙发送的是 2046,2019；</p><p>第三次握手的时候，甲发送的是 2019,2047。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHVq1gqtq2eDhec69YCmFMU485YgowACLxZrG8YqsVbxflt3-WIbPwEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 B，在 CS 模式中，客户应该通过服务器通信。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCHRq1gZPQ2xfdiA4MHxODTLSzjU0sAACIhZrG8YqsVbcTefd7T72RgEAAwIAA3gAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>计算出链表的长度 n</li>
<li>找到第 n/2 个节点，将第 n/2-1 个结点的尾指针指向空，设置一个新的头节点 L2，L2 指向第 n/2 个节点</li>
<li>逆置 L2</li>
<li>将 L2 的结点摘下按照题设要求接入 L</li>
<li>如果 L1 遍历完，L2 仍不空，则将 L2 剩余结点拼接在 L 后。</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>typedef</span><span> </span><span>struct</span><span> </span><span>node</span><span>{</span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>struct</span><span> </span><span>node</span><span> </span><span>*</span><span>next</span><span>;</span></div></div><div><div><div>4</div></div><div><span>} </span><span>NODE</span><span>;</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>int</span><span> </span><span>get_length</span><span>(</span><span>NODE</span><span> </span><span>*</span><span><span>L</span><span>){</span></span></div></div><div><div><div>7</div></div><div><span>    </span><span>int</span><span> </span><span>len</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>8</div></div><div><span>    </span><span>NODE</span><span> </span><span>*</span><span>tmp</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>9</div></div><div><span>    </span><span>while</span><span>(</span><span>tmp</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>){</span></div></div><div><div><div>10</div></div><div><span>        </span><span>len</span><span>++</span><span>;</span></div></div><div><div><div>11</div></div><div><span>        </span><span>tmp</span><span> </span><span>=</span><span> </span><span>tmp</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>    </span><span>return</span><span> </span><span>len</span><span>;</span></div></div><div><div><div>14</div></div><div><span>}</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>void</span><span> </span><span>reverse</span><span>(</span><span>NODE</span><span> </span><span>*</span><span><span>L</span><span>){</span></span></div></div><div><div><div>17</div></div><div><span>    </span><span>NODE</span><span> </span><span>*</span><span>curr</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>18</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>nullptr</span><span>;</span><span> // 断开旧连接，防止自己指自己成环</span></div></div><div><div><div>19</div></div><div><span>    </span><span>while</span><span>(</span><span>curr</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>){</span></div></div><div><div><div>20</div></div><div><span>        </span><span>NODE</span><span> </span><span>*</span><span>tmp</span><span> </span><span>=</span><span> </span><span>curr</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>21</div></div><div><span>        </span><span>curr</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>22</div></div><div><span>        </span><span>L</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>curr</span><span>;</span></div></div><div><div><div>23</div></div><div><span>        </span><span>curr</span><span> </span><span>=</span><span> </span><span>tmp</span><span>;</span></div></div><div><div><div>24</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>25</div></div><div><span>}</span></div></div><div><div><div>26</div></div><div>
</div></div><div><div><div>27</div></div><div><span>void</span><span> </span><span>solve</span><span>(</span><span>NODE</span><span> </span><span>*</span><span><span>L</span><span>){</span></span></div></div><div><div><div>28</div></div><div><span>    </span><span>int</span><span> </span><span>len</span><span> </span><span>=</span><span> </span><span>get_length</span><span>(</span><span>L</span><span>);</span></div></div><div><div><div>29</div></div><div><span>    </span><span>if</span><span>(</span><span>len</span><span> </span><span>&lt;=</span><span> </span><span>2</span><span>){</span></div></div><div><div><div>30</div></div><div><span>        </span><span>return</span><span>;</span></div></div><div><div><div>31</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>32</div></div><div><span>    </span><span>NODE</span><span> </span><span>*</span><span>pre</span><span> </span><span>=</span><span> </span><span>L</span><span>, </span><span>*</span><span>curr</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>33</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span> </span><span>=</span><span> </span><span>0</span><span>; </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>len</span><span> </span><span>/</span><span> </span><span>2</span><span>; </span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>34</div></div><div><span>        </span><span>pre</span><span> </span><span>=</span><span> </span><span>pre</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>35</div></div><div><span>        </span><span>curr</span><span> </span><span>=</span><span> </span><span>curr</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>36</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>37</div></div><div><span>    </span><span>pre</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>nullptr</span><span>;</span></div></div><div><div><div>38</div></div><div>
</div></div><div><div><div>39</div></div><div><span>    </span><span>NODE</span><span> </span><span>*</span><span>L2</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>NODE</span><span>;</span></div></div><div><div><div>40</div></div><div><span>    </span><span>L2</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>curr</span><span>;</span></div></div><div><div><div>41</div></div><div><span>    </span><span>reverse</span><span>(</span><span>L2</span><span>);</span></div></div><div><div><div>42</div></div><div>
</div></div><div><div><div>43</div></div><div><span>    </span><span>pre</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>44</div></div><div><span>    </span><span>curr</span><span> </span><span>=</span><span> </span><span>pre</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>45</div></div><div><span>    </span><span>while</span><span>(</span><span>curr</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>){</span></div></div><div><div><div>46</div></div><div><span>        </span><span>NODE</span><span> </span><span>*</span><span>tmp</span><span> </span><span>=</span><span> </span><span>L2</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>47</div></div><div><span>        </span><span>L2</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>tmp</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>48</div></div><div>
</div></div><div><div><div>49</div></div><div><span>        </span><span>pre</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>tmp</span><span>;</span></div></div><div><div><div>50</div></div><div><span>        </span><span>tmp</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>curr</span><span>;</span></div></div><div><div><div>51</div></div><div><span>        </span><span>curr</span><span> </span><span>=</span><span> </span><span>curr</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>52</div></div><div><span>        </span><span>pre</span><span> </span><span>=</span><span> </span><span>pre</span><span>-&gt;</span><span>next</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>53</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>54</div></div><div>
</div></div><div><div><div>55</div></div><div><span>    </span><span>if</span><span>(</span><span>L2</span><span>-&gt;</span><span>next</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>){</span></div></div><div><div><div>56</div></div><div><span>        </span><span>pre</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>L2</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>57</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>58</div></div><div>
</div></div><div><div><div>59</div></div><div><span>    </span><span>delete</span><span> </span><span>L2</span><span>;</span></div></div><div><div><div>60</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>时间复杂度：O(n)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeZq3aOZMshcpuliGDjWOFJDUKi8ygACsRJrG2MQ8FZGMFG6hRFBrgEAAwIAA3cAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>链式存储结构，因为需要动态增长空间。</p><p>(2)</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 判断队空</span></div></div><div><div><div>2</div></div><div><span>bool</span><span> </span><span>isempty</span><span><span>(</span><span>S</span><span>,</span><span>f</span><span>,</span><span>r</span><span>){</span></span></div></div><div><div><div>3</div></div><div><span>  </span><span>if</span><span>(f</span><span>==</span><span>r){</span></div></div><div><div><div>4</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>6</div></div><div><span>  </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>7</div></div><div><span>}</span></div></div><div><div><div>8</div></div><div><span>// 判断队满</span></div></div><div><div><div>9</div></div><div><span>bool</span><span> </span><span>isfull</span><span><span>(</span><span>S</span><span>,</span><span>f</span><span>,</span><span>r</span><span>){</span></span></div></div><div><div><div>10</div></div><div><span>  </span><span>return</span><span> </span><span>!</span><span>isempty</span><span>(S,f,r)</span><span>&amp;&amp;</span><span>r</span><span>-&gt;</span><span>next</span><span>==</span><span>f;</span></div></div><div><div><div>11</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>订：判断队满错了，本题应该采用牺牲一个结点，所以不需要有非队空。</p><p>(4)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>rudui</span><span><span>(</span><span>S</span><span>,</span><span>f</span><span>,</span><span>r，data</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>  </span><span>if</span><span>(</span><span>isfull</span><span>(S,f,r)){</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>创建一个新的结点 a;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>a</span><span>-&gt;</span><span>data</span><span>=</span><span>data;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>a</span><span>-&gt;</span><span>next</span><span>=</span><span>f;</span></div></div><div><div><div>6</div></div><div><span>    </span><span>r</span><span>-&gt;</span><span>next</span><span>=</span><span>a;</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>r</span><span>=</span><span>a;</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>9</div></div><div><span><span>    </span></span><span>r</span><span>=</span><span>r</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>10</div></div><div><span>    </span><span>r</span><span>-&gt;</span><span>data</span><span>=</span><span>data;</span></div></div><div><div><div>11</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>}</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>void</span><span> </span><span>chudui</span><span><span>(</span><span>S</span><span>,</span><span>f</span><span>,</span><span>r</span><span>){</span></span></div></div><div><div><div>15</div></div><div><span>  </span><span>if</span><span>(</span><span>isempty</span><span>(S,f,r)){</span></div></div><div><div><div>16</div></div><div><span>    </span><span>return</span><span>;</span></div></div><div><div><div>17</div></div><div><span><span>  </span></span><span>}</span><span>else</span><span>{</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>f</span><span>=</span><span>f</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>19</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>20</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>2,3,4 需要绘图的部分如下图所示</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCedq3abyJGdr6R4sftfzpcOg67wRnQACtBJrG2MQ8FZjTZmh1O3cAgEAAwIAA3kAAz0E" alt="42 解" /><figcaption>42 解</figcaption></figure><p></p><p>这类题按照我的习惯依旧是先画出已经入队一个的状态，然后删一个，rear 指针回退一格，所以应该先做第 3 题，而不是第 2 题。</p><p>因为要充分利用空间，所以应该采用循环单链表。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeFq3ZsU6eSeSjoOXoF9w2fEy30sywACoRJrG2MQ8FZ0sk_Xr5Dq0AEAAwIAA3cAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore mutex</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>A</span><span>[n];</span><span> // 初值均为 0</span></div></div><div><div><div>3</div></div><div><span>int</span><span> m;</span></div></div><div><div><div>4</div></div><div><span>func </span><span>philosopher_i</span><span>(){</span></div></div><div><div><div>5</div></div><div><span>  </span><span>while</span><span>(</span><span>1</span><span>){</span></div></div><div><div><div>6</div></div><div><span>    </span><span>P</span><span>(mutex);</span></div></div><div><div><div>7</div></div><div><span>    </span><span>if</span><span>(m</span><span>&gt;=</span><span>1</span><span> </span><span>&amp;&amp;</span><span> </span><span>A</span><span>[i</span><span>-</span><span>1</span><span>]</span><span>==</span><span>0</span><span> </span><span>&amp;&amp;</span><span> </span><span>A</span><span>[i</span><span>%</span><span>n]</span><span>==</span><span>0</span><span>){</span></div></div><div><div><div>8</div></div><div><span><span>      </span></span><span>m</span><span>-=</span><span>1</span><span>;</span></div></div><div><div><div>9</div></div><div><span>      </span><span>A</span><span>[i</span><span>-</span><span>1</span><span>]</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>10</div></div><div><span>      </span><span>A</span><span>[i</span><span>%</span><span>n]</span><span>=</span><span>1</span><span>;</span></div></div><div><div><div>11</div></div><div><span>      </span><span>break</span><span>;</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>    </span><span>V</span><span>(mutex);</span></div></div><div><div><div>14</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span>  </span><span>V</span><span>(mutex);</span></div></div><div><div><div>16</div></div><div><span><span>  </span></span><span>进餐();</span></div></div><div><div><div>17</div></div><div><span>  </span><span>P</span><span>(mutex);</span></div></div><div><div><div>18</div></div><div><span><span>  </span></span><span>m</span><span>+=</span><span>1</span><span>;</span></div></div><div><div><div>19</div></div><div><span>  </span><span>A</span><span>[i</span><span>-</span><span>1</span><span>]</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>20</div></div><div><span>  </span><span>A</span><span>[i</span><span>%</span><span>n]</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>21</div></div><div><span>  </span><span>V</span><span>(mutex);</span></div></div><div><div><div>22</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeBq3ZfKiSt7jNxNs8tNufWLw7467AACnxJrG2MQ8FZg2FqSd4z8VwEAAwIAA3cAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>由题设可知，柱面（磁道）有 300 个，盘片有 10 个，扇区有 200 个。</p><p>这里的每个柱面有 10 个磁道主要是需要注意表述，虽然磁道和柱面可以相互代替这使用，但是还是得注意题设的表述。</p><p>所以，磁盘的容量为 300×10×200×512B=300000 KB</p><p>(2)</p><p>簇号分别为 100260、60005、101660、110560，分别×2，可以得到：</p><p>200520、120025、203320、221120，分别除以 2000，可以得到：</p><p>100、60、101、110（假设按照 0 号为第 1 道）</p><p>所以，按照 SSTF 算法，顺序应该是：85、100、101、110、60，按簇，也就是：</p><p>100260、101660、110560、60005</p><p>(3)</p><p>100530×2/2000=100，所以柱面号应该是 100。</p><p>100530×2-100×2000=1060。由于 1060/200=5，所以盘片号应该为 5。</p><p>1060-5×200=60，所以簇号应该为 60。</p><p>将簇号转换为物理地址是由 IO 系统的驱动程序完成的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeNq3Z4qwAX6tp9lDIKBseP5ihvduwACphJrG2MQ8FZxpBGemm6iqwEAAwIAA3cAAz0E" alt="45-46 图" /><figcaption>45-46 图</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeRq3Z5Fj5EQhGGncNGAZ9v3ZXhKHQACpxJrG2MQ8FbOMN9evXDYHgEAAwIAA3cAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>f(10)=10×f(9)=10×9×f(8)=…=10×9×8×7×6×5×4×3×2×f(1)=10×9×8×7×6×5×4×3×2×1=3628800</p><p>所以，总共调用了 10 次 f1。</p><p>return n×f1(n-1) 会递归调用 f1。</p><p>(2)</p><p>条件转移指令：</p><p><code>jle f1+35h (00401035)</code></p><p>一定跳转的指令：</p><p><code>call f1 (00401000)</code></p><p><code>jmp f1+3Ah (0040103a)</code></p><p><code>ret</code></p><p>(3)</p><p>根据第 16 行的 call 指令，第 17 行的虚拟地址应该是 160040102AH。</p><p>采用相对寻址，也就是要从 160040102AH 开始计算回退，也就是 0040,102AH-0040,1000H=0000,002AH。将  0000,002AH 按位取反并 +1，也就是 FFFF,FFD6H。</p><p>小端方式。</p><p>(4)</p><p>int 的表示范围为 -2^31-2^31-1，f(13) 的数值溢出。</p><p>将 int 改为 long long。</p><p>(5)</p><p>高 32 位不全等于第 31 位的时候，OF=1。</p><p>trap</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeNq3Z4qwAX6tp9lDIKBseP5ihvduwACphJrG2MQ8FZxpBGemm6iqwEAAwIAA3cAAz0E" alt="45-46 图" /><figcaption>45-46 图</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeVq3aIvaj3USemMBwUiKwytrbD3OwACsBJrG2MQ8FbI7VsqZtDQ7gEAAwIAA3cAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>页大小为 4KB，也就是 4KB=2^12B，也就是 12bit，所以页号是前 20bit。</p><p>第一条 push 指令的页号是 00401H，ret 指令页号也是 00401H，所以处于同一页。</p><p>指令 cache 有 64 行，采用 4 路组相联，也就是有 64/4=16=2^4，占 4bit 的 cache 组号。主存块号是 64B=2^6B，也就是占 6 位。</p><p>所以</p><p>后 6 位是块地址</p><p>中间 4 位为 cache 组号。</p><p>前 32-4-6=22 位是 tag。</p><p>读到第 16 行 call 指令的时候，对应的逻辑地址是 00401025H=0000,0000,0100,0000,0001,00|00,00|10,0101B。</p><p>所以处于第 0 组 cache。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCeJq3ZzgRuedsb3UvTj-vdm6xjMtFQACoxJrG2MQ8FZJZ4NCwOjC1wEAAwIAA3cAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>设备 1：路由器</p><p>设备 2：以太网交换机</p><p>设备 3：以太网交换机</p><p>(2)</p><p>设备 1 的 IF1，IF2，IF3 都需要配置 IP 地址，分别为：</p><p>设备 1 IF1&lt;192&gt;.168.1.254/30</p><p>设备 1 IF2&lt;192&gt;.168.1.1/26</p><p>设备 1 IF3&lt;192&gt;.168.1.65/26</p><p>(3)</p><p>NAT</p><p>(4)</p><p>H3 发送一个目的地址是 192.168.1.127 的 IP 数据报，首先辨析该数据报，127=0111,1111B。</p><p>对比子网掩码，也就是其和 H3 和 H4 属于同一个网络，所以不需要额外交付给默认网关。</p><p>由于该数据报为广播地址，所以 H3 发送 H4 肯定会收到。</p></section><section><h3>408 2020 真题 2 刷<a href="#408-2020-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为 141</li>
<li>第 4 题背书错误。</li>
<li>第 25 题，中断相关的背书，这个一定要着重注意。</li>
<li>第 41 题 -3，非最优解，问题不大，但是还是得再看</li>
<li>第 44 题 -1，背书问题，乘法器</li>
<li>第 46 题 -1，二级页表的页目录表相关计算</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCP5q1wr36vAFr1FIhejmMVYLlrV8oQACLRNrG8YquVbxb7BcreTxZQEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题有计算公式，但是比起背公式，不如模拟或者数学归纳法找规律来的速度快。</p><p>采用列优先的方式，m1,1 存储在 0，m2,1 存储在 1，m2,2 存储在 2，m3，1 存储在 3，m3,3 存储在 5，m4,1 存储在 6，m4,4 存储在 9，m5,1 存储在 10，m5,5 存储在 14，m6,1 存储在 15，m6,6 存储在 20，所以 m7,2 存储在 22。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCP9q1wxGQLSlzOIs1aGkB7nHVpUJcQACLxNrG8YquVZiGdm3UbXbHwEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 D。</p><p>这类题也是纯模拟，入栈序列为 a,b,c,d,e，按照题设模拟：</p><p>push：a</p><p>push：a，b</p><p>pop：a，输出 b</p><p>push：a，c</p><p>pop：a 输出 c</p><p>push：a，d</p><p>push：a，d，e</p><p>pop：a，d 输出 e</p><p>所以应该是 bce。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQABatcMz6OjjhKb_kKjOT_Xuhu6sR0AAjETaxvGKrlWStcZ9jMzhUsBAAMCAAN4AAM9BA" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 A。</p><p>高为 5，有 10 个结点，高为 5 也就意味着有 5 行。</p><p>假设 5 行均存满，也就是一个高为 5 的满二叉树，需要 2^5-1=31 个存储空间。</p><p>由于不能确定到这 10 个结点具体的位置，所以要考虑上述最坏情况，也就是 31。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQFq1w0v-0bo0hN9nOKkvSSGmYe9HQACMhNrG8YquVbzU7c4gG4yigEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题，T 的后根遍历=F 的中序遍历，也就是 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTNq12RAbBCEjrmdDjeJeGoXOBMCtgAClBRrG8YquVafqweIxUYZlQEAAwIAA3gAAz0E" alt="4 订" /><figcaption>4 订</figcaption></figure><p></p><p>树的后序遍历=二叉树的中序遍历。</p><p>本题问的是森林，森林的先序遍历=二叉树的先序遍历，森林的中序遍历=对应二叉树的中序遍历，所以可以直接求出二叉树的结构，然后求出其后序遍历如下图：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTRq12WTjgAB-C4yiK9EQP0oslQH13UAApoUaxvGKrlWDtnSkK4DbOEBAAMCAAN5AAM9BA" alt="4 订 2" /><figcaption>4 订 2</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQJq1w1Y3FWkSeNNRdXpPUyTUk62OgACNBNrG8YquVb3kJVPmDr3RAEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 B。</p><p>注意本题是二叉排序树，而不是其他树。</p><p>采用纯模拟法，对于 B 构造出来的树如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQNq1w3gtAn-kNCjPoUb3XcQNzqgQwACNRNrG8YquVaP8ANX1H0n3wEAAwIAA3kAAz0E" alt="5 解" /><figcaption>5 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQRq1w4CTZvySTVlxb05xfGLeahqxQACNhNrG8YquVYCHGAN5iP3yQEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题属于背书题，应该选 B。</p><p>但是我觉得这道题得回头再来思考这是为什么。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQVq1w4ln1hFG0aQlyX1DhwSxQYyjQACNxNrG8YquVaXEetZI88ycQEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 A。</p><p>使用克鲁斯卡尔算法，也就是选择权值最小的边：</p><p>b-f，b-d，a-e。</p><p>选出前三个，就可以选出来是 A 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQZq1w52wVOJzt6k-jXGwU0JPAFa4gACOBNrG8YquVZP6IVghgABMIABAAMCAAN4AAM9BA" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 C，增加关键路径长度必然会延长工期。</p><p>对于 D，缩短关键活动不一定会缩短工程周期，假设有两个相同长度的关键路径且没有任何相同的边，缩短其中一条另一条依旧是关键路径。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQdq1w7k95Wq0pZb6IYe0ZqvPFBPYQACORNrG8YquVZuF3cXj9cgEgEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 1，堆可以视为一棵完全二叉树，因为其性质是符合完全二叉树的。</p><p>对于 2，由于上一条性质以及堆的计算方式，可以采用顺序存储的方式保存堆。</p><p>对于 3，堆并非二叉排序树，以小根堆为例，小根堆是最小的值在堆顶，而次层比其大，不符合二叉排序树中序遍历为升序序列的特点。</p><p>对于 4，大根堆的次大值一定在根的下一层，如果不在下一层，那么调整堆的时候会慢慢浮上来。</p><p>所以，1,2,4 正确，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQhq1w_XGIuaWMoxBXjImzr5cu4ggAACPRNrG8YquVZ84o8tKkcHTAEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 B。</p><p>一棵 4 阶 B 树每一层除了根节点之外至少含有 4/2 向上取整 -1 =1 个关键字，至多有 4-1=3 个关键字，所以模拟如下图：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQlq1xFW56gMEwfNONtXo_IEXNEyuAACShNrG8YquVZNZXX8TVYprgEAAwIAA3kAAz0E" alt="10 解" /><figcaption>10 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQpq1xFo5NoOgeABSPoyBTiEqnffFwACSxNrG8YquVZywgKz4K3-LwEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 1，是正确的，取极端情况考虑，已经有序，直接插入排序只需要比较 n-1 次，而简单选择排序需要比较 n^2 量级次。</p><p>对于 2，直接插入排序和简单选择排序都不需要额外的空间。</p><p>对于 3，直接插入排序的移动次数通常来讲是大于简单选择排序的，因为对数组进行移动和交换的开销不同。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQtq1xHvqfnhdKxe6NMNza_GkJPR7QACThNrG8YquVY5DAt8xZY7RgEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 1 和 3 显然和机器字长相同。</p><p>对于 2，指令寄存器的大小=总容量/PC。或者从其他角度考虑，例如超长指令字。</p><p>对于 4，浮点寄存器则需要考虑任务。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQxq1xI_QdWWQxWTz0JEihu1EzP2fwACTxNrG8YquVZVSLV32QyxOgEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 A。</p><p>x 的机器数是 C800,0000H=1100,1000,0000,0000,0000,0000,0000,0000B。</p><p>按照 int 解释，也就是 -2^31+2^30+2^27=-16×2^27+8×2^27+2^27=-7×2^27，也就是 A。</p><p>按照 float 解释，也就是符号位为 1，阶码为 1001,0000B=128+16=127+17，所以次数应该是 17，也就是 -2^17，显然题目里没有这个选项。</p><p>这类题要注意是 int 还是 unsigned int，不要解释错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQ1q1xM5yIBMrgWqRUcJys1JVfbILgACVxNrG8YquVZhTzlwlkZHmgEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 D。</p><p>注意边界对齐，a 的首地址是 2020,FE00H，也就是 x1 的首地址是 2020,FE00H，x2 的首地址是 2020,FE04H。</p><p>采用小端法，x2 的 00 存储在 04，第二个 00 存储在 05，34 存储在 06，也就是 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQ5q1xOy8CPUemEc5VYojKUBLxhhjwACWBNrG8YquVa6Maw_3QjvdwEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本体应该选 D。</p><p>显然 D 是错的，TLB 和 Cache 都是由 SRAM 存储器组成。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCQ9q1xPzxZICDCEqyaK3V6ar8NLrggACWRNrG8YquVY1WXaIoZTpmgEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 A。</p><p>有 48 条指令，也就是需要 6 位存储，采用 4 种寻址方式，也就是需要 2 位存储。也就是指令总共消耗 8 位，还剩下 16-8=8。由于是直接寻址，所以寻址范围没有负数，应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRBq1xRadJg8mMfqB5v1AmNm87DABQACWhNrG8YquVa94ga3OUCu7QEAAwIAA3gAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题问的是理想情况下，在理想情况在，显然单周期 CPU 恒定 CPI=1，基本流水线 CPU 稳定后理论值为 1，超标量流水线 CPU 的 CPI&lt;1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRFq1xYeDuy3lOmOTdL5b_O657EmzwACYxNrG8YquVasqHG3xd6RiAEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A，trap 属于内部中断，也就是异常。异常分为故障，陷阱和终止。</p><p>对于 B 和 C 显然正确。</p><p>对于 D，接着 A 说，故障一般是返回当前指令，陷阱一般是到下一条指令。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRJq1xgJHRvcC1WubKQHVqZCd8p_nAACbRNrG8YquVbFDgQi1BHcIAEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题如果给了公式或者括号内的提示，那么这些是最大的，以往的经验都需要忽略。</p><p>根据公式，首先计算每秒传送次数。由于 80bit 的信息，也就是 64bit 的数据分 2 个时钟周期传送，每个时钟周期传送 2 次，可以得知在一个时钟周期内传递 2 次 16bit 的数据，也就是说每个时钟周期传送 1 次 4B 的数据。</p><p>所以 2.4G×4B=2.4G×8B=19.2GBps。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRNq1xmpufSL9mcvGnD_PkhgiKA4WQACchNrG8YquVacIx-Nh9hMGQEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题属于背书题 C。</p><p>对于 1，缺页属于内部中断，异常中的故障。</p><p>对于 2，定时器到时属于外部中断，可以理解为 RR 相关。</p><p>对于 3，网络数据包到达可以理解为 IO 相关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRRq1xoE8k2LDUOV2ryZfNSS7l8dcAACdRNrG8YquVY0QSdbybaouAEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题属于背书题。</p><p>对于 A，CPU 处于关中断状态下也可以响应不可屏蔽中断。</p><p>对于 B，得看是否处于开中断状态下，所以错误。</p><p>对于 C，一般来讲是对的。</p><p>对于 D，可以改变处理优先级，而不是响应优先级。响应优先级的决定因素是硬件，处理优先级的决定因素是软件。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRVq1xp40Ip88Z1hiN5W7JyGPC_L7QACdhNrG8YquVbWk97x8Po3JwEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，由于采用的是周期挪用，所以每准备好一次数据发一次总线请求（并非中断请求）</p><p>对于 B 属于背书题，如果不这么做会导致数据丢失。</p><p>对于 C，是周期挪用，所以 CPU 可以访问主存。</p><p>对于 D，属于 DMA 流程。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRZq1xrFYywdq2Gor069KOyXR7VChQACfRNrG8YquVZD3okC7YdxVgEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 A，显然是错误的，各个进程可以写可以读，只不过得采用类似读者写者问题或者特定的规律访问。</p><p>对于 B，系统文件打开表中只有一个 F，正确。</p><p>对于 C，用户打开表不同，例如访问权限等。</p><p>对于 D，关闭 F，得看是不是最后一个，所以错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRdq1xsohbgmuhwtFMot3RlsaCM_rAACfxNrG8YquVbAqXNWmLLz9AEAAwIAA3gAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 A，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRhq1xtEL-7NYJF3EsyQte0Td4pxagACgBNrG8YquVbSQqZI7yoTvAEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 D，属于背书题。</p><p>复盘一下硬件做的事情：关中断，保存断点（PC），中断服务程序寻址，其他都是软件做的事情。</p><p>这道题给自己算错，因为背书背错了，以为中断屏蔽字是硬件做的，中断屏蔽字本身就是一个软件的东西。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRlq1xuX4I5uiAOLDwp8yweSvD_wHQACghNrG8YquVY3XNhPxZyhvQEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 D，属于背书题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRpq1xu9V_-m1Har34lB5NkEX14AAVUAAoMTaxvGKrlWLqn1NqySZXMBAAMCAAN4AAM9BA" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 B。</p><p>首先计算 A 和 B 仍需数量，对于 P1 是 2,1，对于 P2 是 1,0，对于 P3 是 2,2。</p><p>然后计算剩余资源，得到序列是 1,0。</p><p>1,0 可以匹配到 P2，所以可分配资源变为 3,1，对比可以得到 P1。</p><p>分配给 P1 后，还剩下 5,4，显然可以支持 P3。</p><p>所以顺序应该是 P2，P1，P3。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRtq1xxYEj9C_rk-DSLOF1WW6aOCJwACjBNrG8YquVaP3uADMgcI7AEAAwIAA3gAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，缺页率越低，显然效率越高。</p><p>对于 2，当缺页时，系统需要从磁盘调数据到内存，所以磁盘读写时间越少，效率越高。</p><p>对于 3，访问页表需要访问内存，访问内存时间越短，效率越高。</p><p>对于 4，显然。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCRxq1xzWC4Xsm62pcgY2W3zCFMqUkQACjRNrG8YquVbBRTZEWCWd-gEAAwIAA3gAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 B。</p><p>虚拟地址空间是独有的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCR1q1xzvB1rNBE-6gs2eufBmcrPehAACkBNrG8YquVaJaTkW50P5_AEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 D。</p><p>属于设备无关性软件方面的知识。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCR5q1x0Uu1LtzykAAVp6iji-v51vs48AApMTaxvGKrlWPcu43IiXJFsBAAMCAAN4AAM9BA" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 B。</p><p>由于 4 字节存放索引节点，所以文件数量上限是 2^32，60B 存放文件名，所以文件名上限是 480 位里放 26 个字母的个数。</p><p>显然前者更小。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCR9q1x1tAAFBeswSviaIMsCEVeu1adMAApgTaxvGKrlWeT55NMtztLMBAAMCAAN4AAM9BA" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 C。</p><p>属于背书题，互斥机制主要是 4 点，忙则等待，有限等待，空闲让进，让权等待，可以不实现让权等待，也就是 CPU 空转。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCSBq1x29Vtt3fXD6Qk8tvYn0fFVF1wACmhNrG8YquVY6_ldQoRLwOwEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选 C，看图说话。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCSFq1x3rnfqgvSFhwnaRUDzGtCnLHAACnBNrG8YquVYLvKCgSA8TjwEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 B，虚电路只是固定的路径，但是不需要预分配太宽。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCSJq1x4SxKClCD-efxe2H8mSKKa_LAACnRNrG8YquVad16rSTIh6pgEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 C。</p><p>路由器可以隔离广播域，交换机可以隔离冲突域。</p><p>也就是说，冲突域应该是 4 个，广播域应该是 2 个。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCSNq1x47R8odBkOA_3dtxez2u8elNgACnhNrG8YquVYRVVtqKlo2OAEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 D。</p><p>采用停止等待协议传输数据，Td=1000B/10kbps=8000bit/10kbps=800ms。</p><p>所以，信道的利用率应该是 800/(800+800+400)=800/2000=40%。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCSdq1yCL-LGPfDvZkJAtR5yLAQsEWgACqhNrG8YquVZ1bSe-DVtnsQEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 A。</p><p>本题考察的是 RTS，CTS 帧，第一个是 DIFS 间隔，后续三个都是 SIFS 间隔。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCShq1yHJ3DIzKtOFl4Wy5XRKVdIwAgACqxNrG8YquVYexK9OPjuxzQEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 D。</p><p>本题问的是最长时间，最长时间也就是拥塞避免窗口小于等于 8KB 的时候。所以 8-32KB 总共消耗 32-8=24 个 RTT，也就是 48ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCSlq1yJjUUTg_kJiazDFWihfeq57EQACrBNrG8YquVb66KjN6XGMmgEAAwIAA3gAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 C。</p><p>甲在最开始建立连接的时候，TCP 连接序号是 1000，也就是说建立连接消耗一个序号，开始有数据的第一个序号是 1001。</p><p>在断开连接时，考虑的是第一个 FIN，也就是 5001，所以最后一个有数据的序号是 5000。</p><p>所以，5000-1001+1=4000。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCSpq1yMGvLzXeWYvvFHfc3u54FyvjAACrRNrG8YquVabNGgGSL31fwEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于最短时间，局域网委托本地域名服务器查询 DNS，命中缓存，查询 DNS 消耗 1RTT，获取 index 消耗 1RTT，总计 2RTT。</p><p>对于最长时间，局域网委托本地域名服务器查询 DNS，本地域名服务器委托根域名服务器查询 DNS，根域名服务器委托顶级域名服务器查询 DNS，顶级域名服务器委托权限域名服务器 1 查询 DNS，权限域名服务器查到之后直逐级返回，此时消耗 4RTT，获取 index 消耗 1RTT，总计 5RTT。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCStq1yQxexh9wbigqc8laafS4bKL2AACsBNrG8YquVbTjHbaJ7VEnwEAAwIAA3gAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>分别遍历 S1，S2，S3，每个元素为 a，b，c</li>
<li>计算具体的 D</li>
<li>如果当前的 D 小于此前最小的 D，更新</li>
<li>遍历完 3 个数组后，返回 D</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>abs</span><span>(</span><span>int</span><span><span> </span><span>x</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span>(x</span><span>&lt;</span><span>0</span><span>){</span></div></div><div><div><div>3</div></div><div><span>        </span><span>return</span><span> </span><span>-</span><span>x;</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>5</div></div><div><span>    </span><span>return</span><span> x;</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>int</span><span> </span><span>get_D</span><span>(</span><span>int</span><span><span> </span><span>a</span><span>,</span></span><span>int</span><span><span> </span><span>b</span><span>,</span></span><span>int</span><span><span> </span><span>c</span><span>){</span></span></div></div><div><div><div>9</div></div><div><span>    </span><span>return</span><span> </span><span>abs</span><span>(a</span><span>-</span><span>b)</span><span>+</span><span>abs</span><span>(b</span><span>-</span><span>c)</span><span>+</span><span>abs</span><span>(c</span><span>-</span><span>a);</span></div></div><div><div><div>10</div></div><div><span>}</span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span>int</span><span> </span><span>solve1</span><span>(</span><span>int</span><span><span> </span><span>S1</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>S2</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>S3</span></span><span>[]</span><span>,</span><span>int</span><span><span> </span><span>n1</span><span>,</span></span><span>int</span><span><span> </span><span>n2</span><span>,</span></span><span>int</span><span><span> </span><span>n3</span><span>){</span></span></div></div><div><div><div>13</div></div><div><span>    </span><span>int</span><span> min_D</span><span>=</span><span>get_D</span><span>(</span><span>S1</span><span>[</span><span>0</span><span>],</span><span>S2</span><span>[</span><span>0</span><span>],</span><span>S3</span><span>[</span><span>0</span><span>]);</span></div></div><div><div><div>14</div></div><div><span>    </span><span>int</span><span> ans_a</span><span>=</span><span>0</span><span>,ans_b</span><span>=</span><span>0</span><span>,ans_c</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>15</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i</span><span>=</span><span>0</span><span>;i</span><span>&lt;</span><span>n1;i</span><span>++</span><span>){</span></div></div><div><div><div>16</div></div><div><span>        </span><span>for</span><span>(</span><span>int</span><span> j</span><span>=</span><span>0</span><span>;j</span><span>&lt;</span><span>n2;j</span><span>++</span><span>){</span></div></div><div><div><div>17</div></div><div><span>            </span><span>for</span><span>(</span><span>int</span><span> k</span><span>=</span><span>0</span><span>;k</span><span>&lt;</span><span>n3;k</span><span>++</span><span>){</span></div></div><div><div><div>18</div></div><div><span>                </span><span>int</span><span> curr</span><span>=</span><span>get_D</span><span>(</span><span>S1</span><span>[i],</span><span>S2</span><span>[j],</span><span>S3</span><span>[k]);</span></div></div><div><div><div>19</div></div><div><span>                </span><span>if</span><span>(curr</span><span>&lt;</span><span>min_D){</span></div></div><div><div><div>20</div></div><div><span><span>                    </span></span><span>ans_a</span><span>=</span><span>i;</span></div></div><div><div><div>21</div></div><div><span><span>                    </span></span><span>ans_b</span><span>=</span><span>j;</span></div></div><div><div><div>22</div></div><div><span><span>                    </span></span><span>ans_c</span><span>=</span><span>k;</span></div></div><div><div><div>23</div></div><div><span><span>                    </span></span><span>curr</span><span>=</span><span>min_D;</span></div></div><div><div><div>24</div></div><div><span><span>                </span></span><span>}</span></div></div><div><div><div>25</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>26</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>27</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>28</div></div><div><span>    </span><span>printf</span><span>(</span><span>"</span><span>%d</span><span> </span><span>%d</span><span> </span><span>%d</span><span>"</span><span>,</span><span>S1</span><span>[ans_a],</span><span>S2</span><span>[ans_b],</span><span>S3</span><span>[ans_c]);</span></div></div><div><div><div>29</div></div><div><span>    </span><span>return</span><span> min_D;</span></div></div><div><div><div>30</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>时间复杂度：O(n^3)</p><p>空间复杂度：O(1)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCSxq1yxI2aKtF1IhGENfS7D7ArilagAC8hNrG8YquVb82vKI9TKDTQEAAwIAA3gAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>哈夫曼树。</p><p>(2)</p><ol>
<li>对于一个二进制串，遍历其每一个值，记指向当前值的指针 l1，指向树的指针一开始指向根节点，为 l2。</li>
<li>如果 a=0，那么指针指向左孩子</li>
<li>如果 a=1，那么指针指向右孩子</li>
<li>如果当前结点为叶节点，那么解析，l2 指针返回根节点</li>
<li>l1 指针向后移动一位</li>
<li>重复 1-5，直到 l1 为空</li>
</ol><p>(3)</p><ul>
<li>建立一棵仅包含根节点的空二叉树（左分支代表 0，右分支代表 1）</li>
<li>逐个插入判定：依次将每个字符的二进制编码串插入到二叉树中。对于每一个编码串，从根节点出发，根据编码位（0 走左分支，1 走右分支）向下检索或创建新节点：
<ul>
<li>冲突情况 ①（当前编码是已有编码的前缀）：在向下检索的过程中，若途经了某个已经被标记为有效字符的节点，说明该已有字符是当前编码的前缀，不具有前缀特性，判定失败退出。</li>
<li>冲突情况 ②（已有编码是当前编码的前缀）：当当前编码的所有位处理完毕到达终点节点时，若该终点节点已经被标记过字符，或者该节点已经存在子分支（即该节点是非叶子节点），说明当前编码是已有其他编码的前缀，不具有前缀特性，判定失败退出。</li>
<li>无冲突：若未发生上述冲突，则将当前终点节点标记为该字符（作为叶子节点保存）。</li>
</ul>
</li>
<li>判定成功：若所有字符的编码均能成功插入且未触发上述任何冲突，则该字符集的编码具有前缀特性。</li>
</ul><p>用构造的方法来判断更好，而不是采用比对前缀的方法。</p><ul>
<li>存储与字典序排序：将字符集中所有字符的二进制编码存入一个字符串数组中，并将该数组按字典序从小到大进行排序。按字典序排序后，若存在某个编码是另一个编码的前缀，则较短的前缀编码在数组中必然紧邻排在较长编码的前面。</li>
<li>逐对相邻比对判定：遍历排序后的字符串数组，依次比较每一对相邻的编码字符串 str[i] 与 str[i+1]：
<ul>
<li>冲突情况：若 str[i] 的长度小于等于 str[i+1] 的长度，且 str[i+1] 的前 len(str[i]) 位字符与 str[i] 完全相同，说明 str[i] 是 str[i+1] 的前缀，破坏了前缀特性，判定失败退出。</li>
<li>无冲突：若当前相邻的一对编码不满足前缀关系，则指针后移，继续检查下一对相邻编码。</li>
</ul>
</li>
<li>判定成功：若遍历至数组末尾，所有的相邻元素均未发生前缀冲突，则该字符集的编码具有前缀特性。</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCS1q1y_4MAxZQP2KpfyKJ2NtFcg8MQACAxRrG8YquVa93qgwsm0SUQEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>乘法可以通过加减法和移位模拟实现。</p><p>(2)</p><p>判断循环是否结束；</p><p>判断是否 +1；</p><p>订：判断是否加法。</p><p>判断是否应该移位。</p><p>(3)</p><p>没有乘法指令的时候执行时间最长，有乘法阵列器的时候执行时间最短。</p><p>对于没有乘法指令的情况，需要通过多个指令模拟，一般来讲需要多个指令周期。</p><p>对于使用 ALU 和移位器的情况，一般只需要一条指令即可执行完毕，时间上大约是 1 条指令。</p><p>对于乘法阵列器只需要一个流水段就可以执行完毕，可以理解为一个时钟周期内。</p><p>(4)</p><p>x=0111,1111,1111,1111,1111,1111,1111,1111B=7FFF,FFFFH.</p><p>均为：0000,0000,FFFF,FFFEH。</p><p>umul 未溢出，imul 溢出。</p><p>高 n 位均为 0 则不发生。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCS5q1zANXtg8js7epUZbZdA8Vg6YtwACBBRrG8YquVZeUkXdzO5NpgEAAwIAA3gAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>数据区容量为 32KB，也就意味着总共 32KB/64B=2^9 个 cache 行。由于采用 8 路组相联，也就是总共 2^9/8=64 组，对应 6 位。</p><p>所以，tag 号应该是 32-6-6=20 位。</p><p>LRU 应该占 3 位。</p><p>没有修改位。</p><p>(2)</p><p>主存地址位 0080,00C0H，显然是边界对齐的，所以只需要考虑一个主存块能装多少个 int 型数据。</p><p>一个主存块可以存 64/4=16 个 int 型数据，所以应该缺失 1024➗16=64 次。</p><p>(3)</p><ol>
<li>硬件将 0001,0003H 解释为 0000,0000,0000,0001,0000｜,0000,00｜00,0011B，并由于 2 进制属性，自动被切分为 tag 号：00010H，组号为 00H，块内偏移量为 03H。</li>
<li>CPU 根据地址中间 6 位组号 000000B 定位到指令 Cache 的第 0 组，并行比较第 0 组的 tag 号有没有 00010H</li>
<li>如果有且有效位为 1 且 tag 匹配，那么命中 cache，根据偏移量选取正确的数，更新 LRU 位</li>
<li>如果没有，那么 cache 缺失，CPU 暂停当前指令执行，向主存发出读请求，主存块起始地址为 0001 0000H</li>
<li>从主存中读取包含该指令的整个主存块，将该 64B 主存块写入指令 Cache 第 0 组中的任意一个空闲行（如果有的话），将该行的有效位置为 1，Tag 设为 00010H；如果没有空闲行，那么根据 LRU 规则将第 0 组的最不常用行替换掉，并将该行的有效位置为 1，Tag 设为 00010H</li>
<li>回到当前指令重新读取，CPU 重新执行访问 cache 的过程，此次命中，并根据偏移量选取数据，更新 LRU 位</li>
</ol><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCS9q1zA524-XEMi7QUKgPs6lc6qexQACBxRrG8YquVacxlFiSCKFcwEAAwIAA3gAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore S1</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>2</div></div><div><span>semaphore S2</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>3</div></div><div><span>semaphore S3</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div><span>semaphore S4</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>cobegin</span></div></div><div><div><div>7</div></div><div><span><span>  </span></span><span>process </span><span>A</span><span>(){</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>执行 A;</span></div></div><div><div><div>9</div></div><div><span>    </span><span>V</span><span>(S1);</span></div></div><div><div><div>10</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span><span>  </span></span><span>process </span><span>B</span><span>(){</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>执行 B;</span></div></div><div><div><div>13</div></div><div><span>    </span><span>V</span><span>(S2);</span></div></div><div><div><div>14</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span><span>  </span></span><span>process </span><span>C</span><span>(){</span></div></div><div><div><div>16</div></div><div><span>    </span><span>P</span><span>(S1);</span></div></div><div><div><div>17</div></div><div><span>    </span><span>P</span><span>(S2);</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>执行 C;</span></div></div><div><div><div>19</div></div><div><span>    </span><span>V</span><span>(S3);</span></div></div><div><div><div>20</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>21</div></div><div><span><span>  </span></span><span>process </span><span>D</span><span>(){</span></div></div><div><div><div>22</div></div><div><span><span>    </span></span><span>执行 D;</span></div></div><div><div><div>23</div></div><div><span>    </span><span>V</span><span>(S4);</span></div></div><div><div><div>24</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>25</div></div><div><span><span>  </span></span><span>process </span><span>E</span><span>(){</span></div></div><div><div><div>26</div></div><div><span>    </span><span>P</span><span>(S3);</span></div></div><div><div><div>27</div></div><div><span>    </span><span>P</span><span>(S4);</span></div></div><div><div><div>28</div></div><div><span><span>    </span></span><span>执行 E;</span></div></div><div><div><div>29</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>30</div></div><div><span>coend</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTBq1zBNFGf979IWmDY21rwqkRXAIAACCRRrG8YquVbW_K9UU-r8IgEAAwIAA3gAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p><code>a[0][0]</code> 的虚拟地址是 1080,0000H。由于 1024×4B=2^12B=1,0000,0000,0000B=0000,1000H。</p><p>所以，<code>a[1][0]</code> 的虚拟地址是 1080,1000H，<code>a[1][2]</code> 的虚拟地址是 1080,1008H。</p><p>由于 1080,1008H=0001,0000,10｜00,0000,0001｜,0000,0000,1000B，所以页目录号为 00,0100,0010=042H，页号为 001H。</p><p>由于页表项大小为 4B，页目录起始地址为 0020,1000H，第 42H 个页表项也就是 0020,1000H+0000,0042H×4B=0020,1000H+0001,0000,1000H=0020,1000H+0000,0108H=0020,1108H</p><p>页目录项中放的页框号为 00301H，所以页表对应的页表项物理地址应该是 0030,1008H。</p><p>订：这个上次也错了，不用看页内偏移量。页框号为 00301H，也就是页物理地址应该是 0030,1000H。又由于原始的页号是 1，所以应该对应的是 0030,1000H+0000,0004H=0030,1004H。</p><p>(2)</p><p>数组 a 在虚拟地址空间所占区域必须连续；</p><p>数组 a 在物理地址空间所占区域不一定连续。</p><p>(3)</p><p>按行遍历局部性更好。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTJq1zD0ijfHSUH-8HFc-m6Y8pW6swACCxRrG8YquVax8yFfQtyuQAEAAwIAA3gAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>在 R2 路由器配置如下。</p><p>需要配置 NAT 表。</p><p>外网 IP 地址：203.10.2.2</p><p>外网端口号：80</p><p>内网 IP 地址：192.168.1.2</p><p>内网端口号：80</p><p>R1 路由器可以通过动态学习。</p><p>(2)</p><p>H2 发送 P 的源 IP 地址是 192.168.1.2，目的地职是 203.10.2.2</p><p>经过 R3 转发后，源 IP 地址是 203.10.2.6，目的地址是 203.10.2.2</p><p>经 R2 转发后，源 IP 地址是 203.10.2.6，目的地址是 192.168.1.2</p></section><section><h3>408 2021 真题 2 刷<a href="#408-2021-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为：148</li>
<li>第 43 题 -1，主存寻址空间大小相关。</li>
<li>第 46 题 -1，背书错误，扇区划分是在物理格式化的问题。</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTVq2E-yA5BQfn19T4MGCIJW3bg4ZQACARNrG89ByVZpPwVTrb7ccwEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 D。</p><p>p 是尾指针，如果删除的不是唯一的一个元素，那么根本没有 p 的事情。</p><p>只有在删除唯一一个元素的时候，需要把 p 指向头节点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTZq2FBoWeJMeULoONztoOodIFtqEgACBBNrG89ByVb-D0fkFF8FfQEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 D。</p><p>受限队列，本题考察的两端入队 1 端出队。</p><p>采用模拟。</p><p>对于 A，右侧入队 1,2，左侧入队 3,4,5。</p><p>对于 B，右侧入队 1,2，左侧入队 3，右侧入队 4，左侧入队 5</p><p>对于 C，左侧入队 1,2，右侧入队 3，错车入队 4，右侧入队 5。</p><p>对于 D，左侧入队 1，发现无法入队 2。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTdq2FEQKjc7GQ4jXrOoYYRqmOeGUwACBRNrG89ByVbNwS6CJaxQ0AEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 B。</p><p>按行优先的方式存储，由于 0,0 存储地址是 100，33 存储地址是 220，可得 3,0 存储地址是 217。所以，一行是 217-100=117，117/3=39，一行有 39 个元素。</p><p>所以，5,0 的地址应该是 217+39×2=295，5,5 的地址应该是 295+5=300。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCThq2FGmP3Zxe42L5mM1nEPNrVgf9gACBhNrG89ByVa0zacieqkjuQEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 C。</p><p>按照题目可以构造出 T 的结构如下图：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTlq2FJL6bXdsyHtSpupT079X3PpngACCBNrG89ByVYvQjIy7uZK9QEAAwIAA3cAAz0E" alt="4 解" /><figcaption>4 解</figcaption></figure><p></p><p>根据图可知 F 树的个数是 3 个。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTxq2FZjR4bRkpaKBXIWLWCsg74LKwACHhNrG89ByVbnjWhr7ueaRgEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 B。</p><p>根据题设构造哈夫曼树即可，如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCT1q2Fq8KKR7gWoxT6BNkLMDnuGHhQACQxNrG89ByVaDCiBQV8taAAEBAAMCAAN5AAM9BA" alt="5 解" /><figcaption>5 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTpq2FMQHePp6PYZND27DK-05bIqEQACDRNrG89ByVY7r6PhczLglgEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 D。</p><p>如下图所示，插入 23 后，会导致 20 不平衡。很显然是右孩子的左子树导致的不平衡，所以采用 RL 操作。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCTtq2FY64Q07kHQ8QsrS4leOq5uuGwACHRNrG89ByVZfPzTwn218LwEAAwIAA3kAAz0E" alt="6 解" /><figcaption>6 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCT5q2FrQoXVJWOp1AVnWsgABu_kgfuUAAkQTaxvPQclWLmLazbGfo2MBAAMCAAN4AAM9BA" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 A。</p><p>采用模拟法，显然入度为 0 的结点只有 A，所以开始是 A，然后只能选 B，然后只能选 C，然后只能选 D，然后只能选 E，然后只能选 F。</p><p>所以拓扑排序只有 1 条。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCT9q2Fsy65G6HBzEJCsC3DMdXFHXdwACRRNrG89ByVZAsudonV4q2AEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于迪杰斯特拉算法，本题的要求是起点为 1。</p><p>所以对于 1，一开始是已经好了，is 数组打✅，然后先看最短的路径，1 出去的路径有 1-5,1-3,1-2，也就是 1 到 2,1 到 3，1 到 5 的最短距离分别为 26,3,6，显然可以确定 1-3 为确定的路径。</p><p>经由 3 出发，可以到 2，所以可以更新到 2 的最短路径是 25，然后应该选择 1-5 当最短的边，所以现在确定了结点 1、3 和 5。</p><p>从结点 5 走，可以到 2,3,4，显然可以更新到 2 的路径为 21，到 3 的路径依旧为 3，到 4 的路径变更为 14，到 5 的路径依旧为 6。此时选取第二天边结束，准备选取第 3 条边。</p><p>所以也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUBq2FtD8eWE8FcXRue26SwGepteogACRhNrG89ByVYqCg8yRmf-2gEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 A。</p><p>高度为 3 的 3 阶 B 树，对于 3 阶 B 树，一个结点最多有 2 个关键字，至少有 1 个关键字</p><p>由于第二程有 4 个关键字，又由于每一层都必须是满的，所以只能如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUFq2Fwl8_uGw1jJen7QqJE6ubeSbwACSxNrG89ByVZDKjte0k9eoQEAAwIAA3kAAz0E" alt="9 解" /><figcaption>9 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUJq2FxS9zckre_tynjCBZ_xPAia5wACTBNrG89ByVaDelfrnY_i2wEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 C。</p><p>采用低位优先，也就是第一趟排序后应该是：151,301,372,892,93,43,485,946,146,236,327,9。所以 372 之前应该是 301，之后应该是 892。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUNq2Fzl-id_W6VobTC1qrmOlRvwlQACUBNrG89ByVaCC5Y26MGj4AEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 B。</p><p>采用纯模拟法如下，注意堆应该是一棵完全二叉树。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCURq2F2HC1b0ynD-L4w43tU_JUnJqQACVBNrG89ByVZoG5Hz6tEN4AEAAwIAA3kAAz0E" alt="11 解" /><figcaption>11 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUVq2F2aKgqblTYj6sP5Y5GYqQPJGAACVRNrG89ByVZ4PbqiYWzttQEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 D。</p><p>P=10^15，而千万亿=10^15，所以 B 和 C 本质是一个意思。亿亿是 10^16。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUZq2F4Px91rQbuOxNWa_nD48XPa9QACWhNrG89ByVZjUoY3PFhbMgEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 D。</p><p>采用纯模拟法，如果是无符号数，显然 <code>z&lt;y&lt;x</code>，题设没有这个选项。</p><p>如果是有符号数，那么显然 z 是最大的，因为 z 是正数。对于 x 和 y，由于 x 更接近 -1，所以 x 更大。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUdq2GACKoBGCVvmqkRiX4ou3zoxUQACYhNrG89ByVZcbO6ZfVcV5QEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 A，显然如此。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUhq2GCAjt2CQzqgT_vPyhj9A5VtiAACZRNrG89ByVYwOZ7IGjS-QAEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 C。</p><p>这类题也是经典题，先考虑位扩展，显然位扩展应该从 8 位扩展到 32 位，所以也就是位扩展需要 4。</p><p>然后考虑字扩展，RAM 区域为 00,0000H-3F,FFFFH，也就是 0011,1111,1111,1111,1111,1111B，对应 2^22 个字。</p><p>所以 2^22/512K=2^22/2^19=8。</p><p>所以也就是需要 4×8=32 个芯片。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUlq2GHVsLzyd9AjrRohSt16F8fdlgACdRNrG89ByVasyKwUomWCwgEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 A。</p><p>Cache 数据区大小为 32KB，主存块大小为 32B，采用直接映射的方式，也就是需要 32KB/32B=1K=1024，也就是需要 10 位的 cache 位，也就意味着 tag 位是 32-10-5=17 位。</p><p>由于采用回写的策略，所以需要 1 位的脏位。</p><p>cache 自带 1 位的有效位，所以总共需要 17+1+1+32×8=275。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUpq2GJl7a2AeUwAAdPH2LsVi3axkTIAAnYTaxvPQclWRFxPEXJ7BxMBAAMCAAN4AAM9BA" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 D，属于背书题。</p><p>对于 1，指令寄存器也就是 IR，程序员不可见。</p><p>对于 2，这个是在 CPU 微程序里的，程序员也不可见。</p><p>对于 3，可以理解为某些程序必须得基于寄存器偏移。</p><p>对于 4，状态/标志寄存器对程序员半透明。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUtq2GLCHtAR0DMHQir588GQGZxiMwACdxNrG89ByVa2oKKLprkUswEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 CPU 内部的组织，可以理解为控制通路和数据通路。控制通路主要是 CU，数据通路主要是 ALU 相关。</p><p>根据这个，显然可以得知数据通路包含 abcd 涉及到的所有原件。</p><p>对于 C，如果没有异常检测的电路，那么就不可能检测出来异常，例如计算越界等。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCUxq2GQ0wEefyZXel-Nbk94EiqEz1wACehNrG89ByVZSj52p7Aor0wEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 C，如果采用突发传送，那么一次握手的过程中不可能只传输一位的数据。</p><p>对于 A，总线指的是两个或多个部件之间交换数据的介质，总的来讲，是交换数据的。</p><p>对于 B，时钟频率不等于工作频率的意思是工作频率可以很慢，可以多个时钟频率过去了才执行一次设备。</p><p>对于 D 是突发的概念。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCU1q2GTn0KWND04p2F_v-W8lwfK31QACfBNrG89ByVaOjwFgjn178QEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 A。磁盘驱动器的意思就等同于磁盘。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCU5q2GUFBdASIneCWtf0GRREUHaQVQACfRNrG89ByVZcfOZlbl1e6wEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题实质性考察的是外部中断和内部中断的分类。</p><p>对于 A，系统调用属于外部中断，需要到下一条指令执行。</p><p>对于 B，缺页属于内部中断异常的故障，需要回到当前指令重新执行。</p><p>对于 C，DMA 传送结束属于外部中断。</p><p>对于 D，打印机缺纸属于外部中断。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCU9q2GWaX7nE9NC7dG4DY8s0IGQKNgACfhNrG89ByVaQuiE5Z_O1pwEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A，CPU 响应和检测中断看的是是否处于开中断状态在，和用户态内核态无关。</p><p>对于 B，CPU 只有在检测到响应中断后才能进入响应周期，这句话是对的。</p><p>对于 C，进入中断响应周期后，操作系统需要改为开中断的状态，以便别人来打断。</p><p>对于 D，CPU 检测到中断请求信号，意味着中断屏蔽字对当前的屏蔽处于 0 位，也就是不屏蔽其打断。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVBq2GZa5zwFZaUl4U0ZLwfRT8I0MwACgRNrG89ByVb5wRsYkfYaMAEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 A，trap 指令是在传送完必要的参数后，用户程序主动发起系统调用。</p><p>对于 B，IO 指令只能在内核态执行。</p><p>对于 C，数据传送指令可以解释为两类，一种是通过 IO 操作把磁盘的数据调入内存，还有一种是在通用寄存器内相互操作（当然还有非常多），有些在内核态，有些在用户态。</p><p>对于 D，设置断点指令也是有一部分在内核态，有一部分在用户态。对于在用户态的，可以理解为编程时打断点。对于内核态，可以理解为内核开发者调试操作系统内核。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVFq2GdmT-mQ5hU34Dm7OQABFB2gIAcAAoQTaxvPQclWDZK8YC1Zr24BAAMCAAN4AAM9BA" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 1 和 2 显然是正确的，对于 3 的意思是说把进程从就绪态变成执行态，这显然是错误的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVJq2Geh-MRV5VE38ij14xizcOpFYgAChRNrG89ByVb0G4mIW4iq4QEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 C。</p><p>采用排除法，RR 肯定是不需要进程阻塞队列的，所以只剩下 A 和 C，而时钟信息应该存储在进程控制快内。</p><p>综上应该选 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVNq2GgPzrAhS9EIaHOrx_rWw1TK8gAChhNrG89ByVZBJt2mz5Q5CwEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 C。</p><p>对用户进程的磁道号先进行排序，也就是 176,182,184,187,199，一开始在 184，采用最短寻道的方式，也就是：</p><p>184 到 182，总共是 2 个，182 距离 176 是 182-176=6，182 距离 187 是 187-182=5，所以下一步应该是 182 到 187，总共是 5 个。187 到 199 应该是 199-187=12 个，187 到 176 是 187-176=11 个，所以下一步应该是 187 到 176，总共是 11 个。最后只剩下一个了，也就是 176 到 199，总共是 199-176=23。</p><p>加在一起，也就是：2+5+11+23=41。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVRq2Gkk8JdEUzOdhHj5pduOz37LRAAChxNrG89ByVYPN7QTJrQQ3AEAAwIAA3gAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，中断处理结束可以理解为 IO 结束，IO 结束意味着从阻塞态变成就绪态。</p><p>对于 2，进程阻塞意味着有进程从运行态变成阻塞态。</p><p>对于 3，进程执行结束意味着有进程从执行态变成终止态。</p><p>对于 4，进程的时间片用完意味着有进程从运行态变成了就绪态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVVq2GmtfRYfzgAB38gYpKc-RemlvLAAAooTaxvPQclWjnUUl7xFBWABAAMCAAN4AAM9BA" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 C。</p><p>由于分配了两个固定页框，采用 clock 算法，也就是说应该淘汰页号为 3，然后把页框 60H 分配给页号 02。</p><p>所以地址转换之后应该是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVZq2GtwdDKpz4cH3d6OuGE0MAIl3wACkxNrG89ByVYvBn-Vw_QdhAEAAwIAA3gAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 B，属于背书问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVdq2G1p1c2hweTSbL0av5es_zD28wACnRNrG89ByVZRw1TAxmCn5AEAAwIAA3gAAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于常识题？以及硬链接软连接。file1 的快捷方式可以理解为软连接。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVlq2G4er3soCDmxNYwcXQwXQVHyzgACoBNrG89ByVZBvQnmgmlDhAEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 C。</p><p>每个进程平均需要某类临界资源 2 个，也就是说 n 个进程每个人握有一个资源的时候，也就是总计 n 个资源的时候，会导致死锁，所以只需要 n+1 即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVpq2G8Jqvc2U1wZpR0M8iicf9ojuAACpBNrG89ByVaoWJW_g9nSTQEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 C。</p><p>需要做概念辨析，系统调用指的是用户进程请求操作系统做事情，而不是操作系统自己做事情。</p><p>意思也就是说，页置换和进程调度都是操作系统自己做的事情。</p><p>而创建新进程是用户要求操作系统做的事情。</p><p>生成随机数属于库函数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVtq2G-BFU4Yt7w0TOmIYqJHklaDjgACphNrG89ByVYH4ELN-QQAAYkBAAMCAAN4AAM9BA" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 TCP/IP 参考模型中，从下到上应该是网络接口层，网络层，传输层，应用层。传输层的下一层是网络层，网络层的作用是路由选择。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCVxq2HEGKAy8Yfij08tLhjYuUebGugACqxNrG89ByVazf4yderBTewEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 A</p><p>本题是差分曼彻斯特编码，也就是在边缘跳变的时候才换数。</p><p>边缘跳变代表 0，边缘不跳变代表 1，也就是 0.1.1.1.0.0.1 第一个数未知。对比可得应该选 A。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCV1q2HHuCESWsE3n9szxR6tQEbPoJAACrRNrG89ByVYq5nhKeMq_YAEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题应该采用类似哈夫曼树的思想。</p><p>只考虑最后 8 bit，给定题目也就是 10｜00,0000B，号为 1,0，所以可以提前绘制出其树的结构，可以得出：0,10,11 一定存在，且子网掩码分别为 25,26,26，根据这个例子，A 和 C 必然是对的。</p><p>考虑另一种情况，10｜00,0000B，但是前 25 位是给定的，所以可以得到 0 是单独的，也就是说，可以得到：10,110,111，所以可以得到 D 是对的。</p><p>综上所述，B 是错误的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCV5q2HJNDQv4KVKu_RyiGP1v4L2_QAACrhNrG89ByVYwQNA1owe7HgEAAwIAA3gAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 B。</p><p>第二个分片的长度为 1560-776=784。784-776=8。</p><p>所以，第二个分片长度应该是 796，并且后续还有分片。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCV9q2HJpUAgRXvhbinshBfNc9we4twACrxNrG89ByVbbRf8GT5BRtQEAAwIAA3gAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 D。</p><p>逐个比对即可，A 加第一列得出来应该是：9,20,32,44，B 加第二列应该是…以此类推，然后选最短的，也就是 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWBq2HJ3imaNjRe2VxlbqNYgifq6SwACsBNrG89ByVYLUIiVoZl0FgEAAwIAA3gAAz0E" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 B。</p><p>客户端发送第一个 fin 之后，进入 finwait1，服务端收到后发送 ack，收到 ack 后，客户端进入 finwait2 状态，等待服务端发剩下的数据。服务端发完剩下的数据之后，给客户端发 fin，然后进入 closewait 状态，客户端收到 fin 然后发 ack，进入 timewait 状态。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWFq2HKGN43j3uQpLLFvzv89Xq6m9gACsRNrG89ByVa-SzJYQVoO9wEAAwIAA3gAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 D。</p><p>一个 UDP 首部是 8B，TCP 首部是 20B。12/20=0.6，12/(12+20)=0.375。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWJq2HKaCEsiBlie4JncQ-h8XBp0jwACshNrG89ByVZfJujhXtEHPwEAAwIAA3gAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 C。</p><p>甲在 t0 发送一个 seq 是 501，200B 的数据，并在 t1 收到一个 ack。</p><p>也就是说，这个并不是序号 501-700 的 ack，而接收窗口是 500，也就是甲可以发送 501-1000 的数据，但已经发了 501-700，所以真正还可以发送的是 701-1000。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWNq2HKsGOKD1YX_SFSljFA9tfy6FgACsxNrG89ByVasQF1SsDOWBgEAAwIAA3gAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>设置一个变量 cnt 记录度为奇数的点的个数</li>
<li>按照行遍历数组，计算出每一行的度</li>
<li>如果度为奇数，那么 cnt+1</li>
<li>重复上述过程，直到遍历完图</li>
<li>判断 cnt，如果 cnt 为 2 或者为 1，那么返回 1，否则返回 0。</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>IsExistEL</span><span>(</span><span>MGragh</span><span><span> </span><span>G</span><span>){</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> </span><span>cnt</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span>=</span><span>0</span><span>;</span><span>i</span><span>&lt;</span><span>MAXV</span><span>;</span><span>i</span><span>++</span><span>){</span></div></div><div><div><div>4</div></div><div><span>        </span><span>int</span><span> </span><span>curr_sum</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>5</div></div><div><span>        </span><span>for</span><span>(</span><span>int</span><span> </span><span>j</span><span>=</span><span>0</span><span>;</span><span>j</span><span>&lt;</span><span>MAXV</span><span>;</span><span>j</span><span>++</span><span>){</span></div></div><div><div><div>6</div></div><div><span>            </span><span>curr_sum</span><span>+=</span><span>G</span><span>.</span><span>Edge</span><span>[</span><span>i</span><span>][</span><span>j</span><span>];</span></div></div><div><div><div>7</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>8</div></div><div><span>        </span><span>if</span><span>(</span><span>curr_sum</span><span>%</span><span>2</span><span>!=</span><span>0</span><span>){</span></div></div><div><div><div>9</div></div><div><span>            </span><span>cnt</span><span>+=</span><span>1</span><span>;</span></div></div><div><div><div>10</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>    </span><span>if</span><span>(</span><span>cnt</span><span>==</span><span>0</span><span>||</span><span>cnt</span><span>==</span><span>2</span><span>){</span></div></div><div><div><div>13</div></div><div><span>        </span><span>return</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span>    </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>16</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>(3)</p><p>时间复杂度：O(n^2)</p><p>空间复杂度：O(1)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWRq2HS9vIleFcl3Cqcn-muQL5XUuAACvBNrG89ByVbmVN8DbEzfiQEAAwIAA3gAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>-10,10,11,19,25,25</p><p>由于这是一个排序算法，所以不需要考虑这个算法的具体执行过程。</p><p>(2)</p><p>n(n-1)/2</p><p>(3)</p><p>不是稳定的，因为</p><p>只需要将比较语句 <code>if(a[i]&lt;a[j])</code> 改为 <code>if(a[i]&lt;=a[j])</code></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWVq2HZiz4PDV9ijo_j0FzAKSq_asgACwRNrG89ByVb_ESg_vqDRCQEAAwIAA3gAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>ALU 宽度为 16 位，因为字长为 16 位。</p><p>可寻址主存大小为 2^20✖️2B=2^21B=2MB。</p><p>订：按字节编址，所以就是按照 B 来算。CPU 一次可以拿 2B，也可以拿 1B。按字编址这道题是 2MB，PC 至少 19 位，不过由于对齐一般而言也是取 20 位。</p><p>指令寄存器为 16 位。</p><p>MAR 为 20 位。</p><p>MDR 为 8 位。</p><p>(2)</p><p>R 型最多定义 16 个操作。</p><p>I 和 J 总共可以定义 2^6-1=63 个操作。</p><p>通用寄存器最多有 4 个。</p><p>(3)</p><p>01B2H=0000,0001,1011,0010B=000000 01 10 11 0010，由于 <code>R[rd]&lt;-R[rs] op R[rt]</code>，本题 rd 是 11，rs 是 01，rt 是 10，所以本题应该是 <code>R[3]&lt;-R[1]-R[2]</code>。</p><p>分析 01B2H，也就是 <code>R[3]&lt;-R[1]-R[2]</code>，所以由 B052H-0008H=B052H+FFF8H=B04AH，可得：R1 内为 B052H，R2 内为 0008H，R3 内为 B04AH，没发生溢出。</p><p>分析 01B3H，也就是 <code>R[3]&lt;-R[1]*R[2]</code>。所以由 B052H*0008H，也就是前者算术左移。B052H=1011,0000,0101,0010B&lt;&lt;3。由于移出的三位为 101，不全为 1，所以发生溢出，且结果为 1000,0010,1001,0000=8290H，可得：R1 内为 B052H，R2 内为 0008H，R3 内为 8290H。</p><p>(4)</p><p>符号扩展。</p><p>(5)</p><p>J 型。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWZq2HZzdVk1U2cuXuCCJTwhRAlg_wACwhNrG89ByVajrsH4q9P_3QEAAwIAA3gAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>虚拟地址为 30 位，页大小为 4KB=2^12B，也就是页内地址是 12 位，所以虚页号应该是前 30-12=18 位，页内地址是低 12 位。</p><p>(2)</p><p>由于采用 2 路组相联，共 8 组，所以需要 3bit 来存储 TLB 组号信息，也就是高 18-3=15 位为 TLB 标记，接下来 3 位是 TLB 组号。</p><p>(3)</p><p>TLB 初始为空，首先计算其模 8 后的值。</p><p>10,12,16,7,26,4,12,20，模 8 后对应：</p><p>2,4,0,7,2,4,4,4.</p><p>显然，只有 12,4,12,20 放进去的时候有可能导致 TLB 表项被替换。</p><p>进行模拟，12 放进去占第 4 组的 0 号位，LRU 位为 0，4 放进去占第 4 组的 1 号位，LRU 位更新为 1,0。访问 12，LRU 位更新为 0,1，所以访问 20 时，4 号会被淘汰。</p><p>(4)</p><p>2 位。</p><p>这类题属于非常常规的题目，我觉得一分都不能丢。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWdq2HaEOIiAaAdehwqm7tJbrktaYgACwxNrG89ByVYBXaR2kUz9GwEAAwIAA3gAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>注：本题印刷错误，while 是一个大循环，而不是直接就结束了。也就是说，方法 2 的分号得去掉。</p><p>解：</p><p>(1)</p><p>多个进程需要对同一个信号量进行访问，所以序号互斥进行。</p><p>(2)</p><p>方法 1 错误，方法 2 正确。</p><p>方法 1 在 <code>while(S&lt;=0)</code> 处死等，如果此时 s≤0，那么别的用户进程无法申请中断使 S+1。</p><p>(3)</p><p>不能。</p><p>开关中断指令需要在内核区运行，用户态不能运行该指令。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWhq2HaWtnUfcX7Z6-_yCnKmXS8rXgACxBNrG89ByVasMigCiay19QEAAwIAA3gAAz0E" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>ROM 中的引导程序、磁盘引导程序、分区引导程序、操作系统初始化程序。</p><p>(2)</p><p>物理格式化、分区、逻辑格式化、操作系统的安装</p><p>(3)</p><p>磁盘扇区划分是在分区完成的，文件根目录系统建立是在逻辑格式化完成的。</p><p>订：磁盘扇区划分是在物理格式化中完成的。</p><p>这一整道题属于纯背书的题目。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCWlq2Ham023k0m6Gaawv5mhW0HKA6AACxRNrG89ByVYlf2rJCvcO2gEAAwIAA3gAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>DNS。</p><p>从应用层到传输层，通过 UDP 协议。</p><p>从传输层到网络层，通过 IP 协议。</p><p>从网络层到数据链路层：通过 CSMD/CD 协议封装。</p><p>(2)</p><p>&lt;00-11-22-33-44-cc, 4&gt;</p><p>&lt;00-11-22-33-44-bb, 1&gt;</p><p>&lt;00-11-22-33-44-aa, 2&gt;</p><p>(3)</p><p>分析全流程，最开始的时候 H1 要向本地域名服务器申请 IP，所以 H1 想要向本地域名服务器发送帧，然而 H1 不知道本地域名服务器的 mac 地址，H1 使用 ARP 协议进行探测，源 mac 地址是自己，目的 mac 地址是 ff-ff-ff-ff-ff-ff，交换机 S 收到后，先登记此条记录，然后向除了 4 这条的所有转发，此时 H2 也收到了。</p><p>本地 DNS 服务器向 H1 单播发送 IP 地址。</p><p>此后 H1 发送 http 请求，然而 H1 不知道 R 的 mac 地址，所以使用 ARP 协议请求，H2 收到了该帧，R 单播回应。</p><p>综上所述，至少需要接收 2 个帧，都是 ARP 请求帧，目的 mac 地址是 ff-ff-ff-ff-ff-ff。</p></section><section><h3>408 2022 真题 2 刷<a href="#408-2022-真题-2-刷"><span>#</span></a></h3><ul>
<li>分数为：146</li>
<li>第 13 题低级错误，1 刷也错，非常低级，32 位补码的范围，一定要看清楚数字</li>
<li>第 43 题 -1，没写 read</li>
<li>第 44 题 -1，双面盘片没乘 2</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZlq2xLVhxJ1bP_GrbW46qWiIxVEZQACcxFrG8ST2VbV8Tj7vCtswAEAAwIAA3kAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题应该选 B。</p><p>记总共运行 t 次，也就是 1+2+…+√t，最后大致是 t。</p><p>所以，本题应该 B。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZpq2xUKyp6FEbSH95MyZgucXgu92QACdBFrG8ST2VYb5D52Q14AAbYBAAMCAAN5AAM9BA" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题应该选 D。</p><p>这类题应该采用模拟法，也就是：</p><p>对于 A，假设入栈队列是 a,b,c，那么出栈序列不可能是 c,a,b，可以判定，所以 A 的表示错误。</p><p>对于 B，同样的，假设出栈序列是 c,a,b，那么入栈队列不可能是 a,b,c，所以 B 的表述错误。</p><p>对于 C，in 假设为 a,b,c，每个元素一旦入栈就出栈，所以 out 可能和 in 相同，本选项描述错误。</p><p>对于 D，in 是 ST 的入栈队列，假设为 a,b,c，那么栈底到栈顶也就是 a,b,c，先全部入栈然后再全部出栈，则可能为倒序，所以 D 是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZtq2xlI2xkVxpZlzHYXbX2R5hxa_gACghFrG8ST2VbtyNAfKVifxgEAAwIAA3kAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 B。</p><p>这类题应该采用模拟法，中序遍历 p 在 q 前且 p 和 q 相邻。</p><p>首先分析比较简单的情况，也就是 p 是 q 的左孩子，或者 q 是 p 的右孩子。根据这个论断，那么 1 和 2 是正确的。</p><p>接下来考虑二叉排序树，也就是 a 为根，b 为 a 的左孩子，c 为 b 的右孩子，那么是符合 4 这种情况的（当然反过来，p 是 q 双亲的双亲也可以成立）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZxq2xwTsW-m9C7AAqybYSBWfWpT1wACkhFrG8ST2VY2kWJPSAx16gEAAwIAA3kAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题应该选 C。</p><p>三叉数 244 个结点，本题问的是至少，所以应该尽可能的填满。由 1+3+…+3^(h-1)=(3^h-1)/2。</p><p>代入公式，<span><span>3h−12≥244\frac{3^h-1}{2} \ge 244</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>3</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span></span></span></span></span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>≥</span><span></span></span><span><span></span><span>244</span></span></span></span>，也就是 <span><span>3h≥4893^h \ge 489</span><span><span><span></span><span><span>3</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span></span></span></span></span><span></span><span>≥</span><span></span></span><span><span></span><span>489</span></span></span></span>，也就是 <span><span>h≥5h \ge 5</span><span><span><span></span><span>h</span><span></span><span>≥</span><span></span></span><span><span></span><span>5</span></span></span></span> 多，所以 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span> 最小是 6。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZ1q2xz0i2MqTXZdVp0XZ3sNYX1qRQAClBFrG8ST2VafEyg8ZPvwygEAAwIAA3kAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>本题应该选 D。</p><p>注意这道题问的是正确的是。</p><p>对于 A，结点数后者一般小于前者，因为前者有大量的中间废结点。</p><p>对于 B，T1 的高度一般是小于 T2 的。</p><p>对于 C，由于是定长的，所以一定是相同的层。</p><p>对于 D，频次不同一个层这是显然的。这道题一刷的时候我想成频次相同也可以一个层，但是这句话的正确性并不影响 D 本身是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZ5q2x7bFlu3qOsW9Q3tFvXv4YzijAACmhFrG8ST2Va3i1wWp8WP6QEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，意思是定点数大于边那么 G 一定连通。考虑顶点数为 4，边为 1 的情况，显然不是连通的。</p><p>对于 B，意思是顶点数小于边那么 G 一定连通。考虑顶点为 5，边为 6 的情况，4 个顶点最大是 6 条边，那么最后一个是单独的，显然不连通。</p><p>对于 C，意思是顶点数等于边 -1 一定不连通。可以用二叉树反驳。</p><p>对于 D，意思是顶点数大于边 +1，那么一定不连通。这句话是正确的。顶点数=边 -1 的时候才有机会连通。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZ9q2x_cmyCZtlK6uJYPZ5reoE3wIgACnBFrG8ST2Vamfs79u1QyPAEAAwIAA3kAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本题应该选 B。</p><p>如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCehq3bvN-L6ARcZKjUYQORA_LQnqPAAC0xJrG2MQ8FalVZnGI5I5BwEAAwIAA3kAAz0E" alt="7 解" /><figcaption>7 解</figcaption></figure><p></p><p>注意这道题问的是时间余量，时间余量=一个活动的最晚开始时间 - 最早开始时间，最晚开始时间=事件的最晚开始时间 - 活动。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaBq2yEooLkGSbXyUZPUS7s92itamAACnxFrG8ST2VaGb44reMpEIgEAAwIAA3kAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题应该选 D。</p><p>如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCelq3bzzyqNjB0n6MqfY4zw9PyBfeAAC1RJrG2MQ8FZ5lwxQXh7jPgEAAwIAA3kAAz0E" alt="8 解" /><figcaption>8 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCb5q219RbMcS2x5GZyuLkvrG1keW0QACGRJrG8ST4VbqgkqNEgbdJwEAAwIAA3cAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题应该选 D。</p><p>平均查找成功 ASL 本身依赖于什么？</p><p>3 一定是正确的，如果选取了不恰当的冲突解决策略，那么 ASL 会增加。</p><p>2 也是正确的，因为假设如果采用一个偶数作为散列函数（除留余数法），那么即便选择很好的冲突解决策略，终归要解决重复。</p><p>对于 1，装填因子越大，引发冲突的概率就越大。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCb9q21-fUIQ8jQ0NTqAcgAABm8WWkSAAAhoSaxvEk-FWvb1C-LxXu3kBAAMCAAN3AAM9BA" alt="10" /><figcaption>10</figcaption></figure><p></p><p>本题应该选 A。</p><p>二路归并的操作是把两个有序表合成 1 个新的有序表。</p><p>对于 B，这是划分操作，。</p><p>对于 C 和 D 是错的操作。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcBq21-wSNFTPwoJEOkBJRJxcVP8hQACGxJrG8ST4Vaevv6lprU97gEAAwIAA3cAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，大部分元素有序是快排的劣势。</p><p>对于 2，待排序元素很少的情况下，直接插入排序的效率反而更高</p><p>对于 3，快排需要 O(logn) 的空间复杂度</p><p>对于 4，快排不稳定，直接插入排序稳定。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcFq21_AsqyzAvEED_e_LBEImgV3-AACHBJrG8ST4VagF3w8lvvqIgEAAwIAA3cAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题应该选 A。</p><p>首先计算 CPI，0.8×1+0.2×10=2.8，所以 CPI 应该是 2.8，排除 B 和 D。</p><p>然后计算执行时间，由于执行了 10000 条指令，也就是 10000×2.8/10^9=2.8e-05=28us。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaFq2yFFcyg_zrFXsA4T9CGAzIeokAACoBFrG8ST2VZ-k7-9_-3gjQEAAwIAA3kAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题应该选 D。</p><p>32 位补码标识的范围显然是 D。</p><p>一刷的时候这道题也错了，当时还想着哦我一刷错了，太低级了这个错误，结果 2 刷又错了，难绷啊。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaJq2yHfAAE5hpUT3dbfkKjBpRlAhD0AAqQRaxvEk9lWGHIFn6gbhjIBAAMCAAN5AAM9BA" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题应该选 A。</p><p>展开分析，-0.4375，首先确定符号位，显然符号位应该是 1。</p><p>然后确定阶码，由于 0.4375=0.25+0.125+0.0625=0.0111B=1.11×2^-2，所以阶码也就是 -2+127=125=0111,1101B。</p><p>所以综合也就是 1011,1110,1110,0000,0000,0000,0000,0000B=BEE0,0000H。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaNq2yLpopnDMsCt7Kf9XZPgKFiavgACpRFrG8ST2VZhRAJhjOCj4wEAAwIAA3kAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题应该选 C。</p><p>虚拟地址空间大小为 4GB=2^32B，页大小为 4KB=2^12B，也就是后 12 位，对应 16 禁止也就是后 3 个数。</p><p>所以，对于虚拟地址 0008,2840H，其页号应该是 00082H=130，也就是页框号是 018，由于存在为是 1，所以应该是 018840H，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaRq2yNbKopI5ehqI8WfA09wzwSKlwACphFrG8ST2VYHIOoXLnyCQgEAAwIAA3kAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>本题应该选 A。</p><p>cache 区数据区容量为 32KB，也就是总共有 32KB/64B=2^9 个 cache 行。由于采用 8 路组相联，所以总共 2^9/8=2^6 组。也就是组号占 6 位。</p><p>由于主存块大小为 64，所以主存块应该占 6 位，也就是 tag 号是 32-6-6=20 位。</p><p>综上所述，由于是 8 路组相联，所以比较器应该是 8 位，比较的是 tag 号，所以应该是 20 位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaVq2yPr9UuY1FiAXQgBAovpjNRIZgACqRFrG8ST2VamvOrstHjDQAEAAwIAA3kAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 A，8192×8192×8bit=8192×8192B=2^26B=64MB，由于存在 8 个，所以总共内存条容量是 8×64MB=512MB。</p><p>对于 B，由于支持突发传送，所以采用多模块交叉编址。</p><p>对于 C，DRAM 芯片没特别说明的情况下默认采用地址线复用技术，所以地址引脚应该是 13 位。</p><p>对于 D，行内缓冲器看的是一行，所以 D 是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaZq2ySPJBEGLFAFre-w04rzrlsC-AACqhFrG8ST2VZEyBrV3OV_oQEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 1 属于背书问题。</p><p>对于 2，CPU 时钟周期的改变并不会影响 ISA。</p><p>对于 3，通用寄存器个数和位数是依赖于 1 的，因为得解释这个指令的什么位置是寄存器。</p><p>对于 4，加法器的实现可以自由确定。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCadq2yTWDyLwGnZwhv7vTmaHEmvJnwACqxFrG8ST2VYKRh1YPVLEmgEAAwIAA3kAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题应该选 D。</p><p>采用类似哈夫曼树的思想，采用 16 位定长指令字格式，地址码为 6 位。由于 2 地址指令有 12 条，也就是 16-12=4，所以剩下 4bit 给后续的使用。</p><p>以地址指令有 254 条，由于 1 地址指令还有 8bit 可以使用，留下的应该是 256-254=2bit。</p><p>所以，零地址指令最多应该是 2×2^6=128 条。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCahq2yZI0UauM0ONjuOW-DeXPnZPywACrhFrG8ST2VY16HthU0VFMwEAAwIAA3kAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题应该选 A。</p><p>属于背书题，预处理 - 编译 - 汇编 - 链接。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCalq2yZssy17qVIpvedylUlS4l7sOAACrxFrG8ST2VYYxgKbQPRooQEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题应该选 C。</p><p>对于 ABD 显然正确。</p><p>对于 C，外设的准备数据时间如果小于中断处理，那么一次中断处理的开销就会非常大。按照常识考虑，键盘输入肯定比 CPU 慢很多。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCapq2ya9hVOixbmyHr1gFaJYa3lFxQACsBFrG8ST2VaVC2N9Z7FugAEAAwIAA3kAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题应该选 C，属于纯背书的题目，没什么好讲的，只不过还得再去复习一下偏的知识点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCatq2yb7RVSI9k3DMDh0wQABEqAKAAHPAAK1EWsbxJPZVmuTAf5fHBnmAQADAgADeQADPQQ" alt="23" /><figcaption>23</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 AC 显然是正确的，对于 B，考虑早期的固定分区分配。对于 D，显然是有上限的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCaxq2ycj__2YnKBufohiLEmkUiVcBAACuhFrG8ST2Vb1RKUiAbOI-wEAAwIAA3gAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>本题应该选 A，属于背书题。</p><p>对于 BD 应该产生于文件系统格式化。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCa1q2yeISRgWn-Lz0hv-CyTizLssVAACvBFrG8ST2VYMgzmldHcisQEAAwIAA3kAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>本题应该选 C。</p><p>注意一开始也算一次调度，如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCepq3b2lmK41y8P_Q0z4RI_e4_5CDgAC1xJrG2MQ8FbiBOTz7iMhKwEAAwIAA3kAAz0E" alt="25 解" /><figcaption>25 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCb1q212-aRPu4KFldyhwONx1itGRSwACFhJrG8ST4VYFAAEcD6MinSMBAAMCAAN3AAM9BA" alt="26" /><figcaption>26</figcaption></figure><p></p><p>本题应该选 B。</p><p>本题已经把尚需资源数给了，那么直接匹配就可以。匹配可以发现 P0 一定是第一个，然后收回资源，可用资源数当前为 333，发现可以覆盖 P1/P2，也就是总共有 2 个安全序列。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCa5q2yehWqneMS_dd0EihsVO50elxwACvhFrG8ST2VbNY4TLpWoUogEAAwIAA3gAAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>本题应该选 C。</p><p>用户态的时候只能执行非特权指令，这道题属于简单的逻辑辨析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbxq210axHZBEcPClcgBRBKa7NJ5hAACFRJrG8ST4VZO5LGSdD_EvAEAAwIAA3cAAz0E" alt="28" /><figcaption>28</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 1，读文件的时候也就是 IO，可能会变。</p><p>对于 2，时间片用完应该从执行态变成就绪态。</p><p>对于 3，申请外设也可以理解为 IO</p><p>对于 4，可以理解为申请到了 IO。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbtq21yTsYdSKWwHJvMylVa_l7MXcgACFBJrG8ST4Va5vd76LD5aCgEAAwIAA3cAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>本题应该选 A。</p><p>淘汰页是页表满了的时候才淘汰。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbpq21v2A-jt1BfF_dlBCt-IAAFbZCkAAhISaxvEk-FWVdE_fjvowZEBAAMCAAN5AAM9BA" alt="30" /><figcaption>30</figcaption></figure><p></p><p>本题应该选 D。</p><p>对于 A，如果采用 FIFO 算法，效果肯定相对而言没有 LRU 好。</p><p>对于 B，工作集越大，表示驻留在主存的东西越多，那么缺失的概率肯定就越小。</p><p>对于 C，进程的数量越多，显然竞争越大，换入换出的频次就越高。</p><p>对于 D，页面缓冲队列越长，意味着缺页后换回的速度越快，但是并不会影响缺页。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCblq21oXzGOhXTH5NwkY3jYV2dHERQACEBJrG8ST4VaNiixc8GAyHQEAAwIAA3cAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>本题应该选 B。</p><p>对于 1，保存断点和程序状态字是中断时硬件做的事情。</p><p>对于 2，保存通用寄存器的内容是操作系统做的事情。</p><p>对于 3，操作系统负责执行系统服务条例。</p><p>对于 4，如果执行的是中断，那么第一步是硬件做的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbhq21lRAzTXZCKjJK_fNNbIKsLlzQACDhJrG8ST4Va0TG3kFg_hOwEAAwIAA3kAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>本题应该选 A。</p><p>对于 A，驱动设备与 IO 控制方式显然有关。键盘和磁盘的驱动程序肯定不一样。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbdq21hycdmNorPrHdcELnLOPTpoSwACCxJrG8ST4VYIbNTiCh8bogEAAwIAA3cAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p>本题应该选 B。</p><p>OSI 参考模型流量控制应该是数据联络层，拥塞控制是网络层。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbZq21adr9j9TbX_zYlJE2DuAaqY3QACBBJrG8ST4VYeT8VDDP6rWwEAAwIAA3cAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>本题应该选 C。</p><p>题设没有提供任何香农定理的条件，所以不需要考虑香农定理相关的东西。</p><p>最大数据传输率也就是 2Wlog2V=2×200k×log2(4)=800kbps，也就是 C。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbVq21YUF-oLzP-YQYhlsTFT55k0UQACAxJrG8ST4VbnLMl904smKwEAAwIAA3cAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>本题应该选 B。</p><p>192 展开是 1100,0000B，72 展开是 0100,1000B。所以网络地址应该是 64。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbRq21SSsRJ5yPvCIXKBxpllRvy8OAAC_xFrG8ST4VYaNCdV1Ogn3AEAAwIAA3cAAz0E" alt="36" /><figcaption>36</figcaption></figure><p></p><p>本题应该选 D。</p><p>首先判断默认网关，显然应该是 192.168.1.62，排除 A 和 C。按照 192.168.1.62/27 配置默认网关，也就是后 8 位为 62=0011,1110B。且 32-27=5。</p><p>而本机 H 的 60 展开是 0011,1100B，也就是子网掩码是 1110,0000B，也就是 224。</p><p>综上所述，子网掩码为 255.255.255.224，默认网关为 192.168.1.62。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbNq21RTRfkggpXgruHzEw3vrJMGmAAC_hFrG8ST4VbWXkVxsqjtyQEAAwIAA3cAAz0E" alt="37" /><figcaption>37</figcaption></figure><p></p><p>本题应该选 B。</p><p>下发，也就意味着是 SDN 向流表发，也就意味着从上到下，也就是从北到南。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbJq21P7xoaNbgABFCwoSTJ1fJMBliMAAv0RaxvEk-FWkAGguRpMzvYBAAMCAAN3AAM9BA" alt="38" /><figcaption>38</figcaption></figure><p></p><p>本题应该选 C。</p><p>主机甲和乙建立 TCP 链接，最大断肠 MSS 是 1KB。当甲拥塞窗口变成 16KB 时发生超时，新的门限值边为 8。</p><p>所以，1,2,4,8，此后就是线性增长。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbFq21M8Xg5FRo-KSKvQFO1bHjXU6AAC-xFrG8ST4VbVlp4wPbAHCgEAAwIAA3cAAz0E" alt="39" /><figcaption>39</figcaption></figure><p></p><p>本题应该选 D。</p><p>客户 C 和客户 S 已经建立 TCP 连接，数据传输结束后，C 主动请求断开链接。</p><p>那么也就是 C 向 S 发 fin，S 收到 fin 后，发 ack 和 fin，S 在发出 ack 后进入 closewait 状态，而 S 得等到 C 的 ack 才可以关闭。</p><p>所以，C 至少等待 1650ms，S 至少等待 75ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCbBq20vb-sA-w0xo3dc7OHgyUutB8wAC7RFrG8ST4VbMHsMPTfyywQEAAwIAA3kAAz0E" alt="40" /><figcaption>40</figcaption></figure><p></p><p>本题应该选 B。</p><p>从 H 请求与 S 建立 TCP 连接的时刻起，建立起 TCP 需要花费 1.5RTT，捎带要求传输 html 文件，得到 html 文件总共需要 2RTT。</p><p>接下来计算图像，由于图像文件大小为 3MSS，考虑拥塞窗口为 1 的情况，所以总共又需要 2RTT 的时间才可以接收到所有的图像。</p><p>综上所述，应该是 4RTT=40ms。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCa9q2yfVT43BYu9X0WxiPReq31PS0QACvxFrG8ST2Va0VN6dgU0_JAEAAwIAA3kAAz0E" alt="41" /><figcaption>41</figcaption></figure><p></p><p>解：</p><p>(1)</p><ol>
<li>设置三个全局变量，分别为 bool 型变量 flag，初值为 true，int 型变量 pre，初值为 -3，int 型变量 curr，初值为 -2</li>
<li>采用中序遍历的方法，如果是空节点，那么返回</li>
<li>递归的遍历左子树</li>
<li>判断 pre 是否&gt;=curr，如果成立，那么 flag=false</li>
<li>更新 pre=curr</li>
<li>递归的遍历右子树</li>
<li>主函数调用 isBST，传入参数 T，i=0</li>
<li>返回 flag 的值</li>
</ol><p>(2)</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>const</span><span> </span><span>int</span><span> </span><span>MAX_SIZE</span><span>=</span><span>114514</span><span>;</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>typedef</span><span> </span><span>struct</span><span>{</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> </span><span>SqBiTNode</span><span>[</span><span>MAX_SIZE</span><span>];</span></div></div><div><div><div>5</div></div><div><span>    </span><span>int</span><span> </span><span>ElemNum</span><span>;</span></div></div><div><div><div>6</div></div><div><span>}</span><span>SqBiTree</span><span>;</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>int</span><span> </span><span>pre</span><span>=-</span><span>3</span><span>,</span><span>curr</span><span>=-</span><span>2</span><span>;</span></div></div><div><div><div>9</div></div><div><span>bool</span><span> </span><span>flag</span><span>=</span><span>true</span><span>;</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>void</span><span> </span><span>isBST</span><span>(</span><span>SqBiTree</span><span> </span><span>*</span><span><span>T</span><span>,</span></span><span>int</span><span><span> </span><span>i</span><span>){</span></span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>// 如果是空节点，那么返回。</span></div></div><div><div><div>13</div></div><div><span>    </span><span>if</span><span>(</span><span>i</span><span>&gt;=</span><span>T</span><span>-&gt;</span><span>ElemNum</span><span> </span><span>||</span><span> </span><span>T</span><span>-&gt;</span><span>SqBiTNode</span><span>[</span><span>i</span><span>]</span><span>==-</span><span>1</span><span>){</span></div></div><div><div><div>14</div></div><div><span>        </span><span>return</span><span>;</span></div></div><div><div><div>15</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>16</div></div><div><span>    </span><span>isBST</span><span>(</span><span>T</span><span>,(</span><span>i</span><span>+</span><span>1</span><span>)</span><span>*</span><span>2</span><span>-</span><span>1</span><span>);</span></div></div><div><div><div>17</div></div><div><span>    </span><span>curr</span><span>=</span><span>T</span><span>-&gt;</span><span>SqBiTNode</span><span>[</span><span>i</span><span>];</span></div></div><div><div><div>18</div></div><div><span>    </span><span>if</span><span>(</span><span>pre</span><span>&gt;=</span><span>curr</span><span>){</span></div></div><div><div><div>19</div></div><div><span>        </span><span>flag</span><span>=</span><span>false</span><span>;</span></div></div><div><div><div>20</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>21</div></div><div><span>    </span><span>pre</span><span>=</span><span>curr</span><span>;</span></div></div><div><div><div>22</div></div><div><span>    </span><span>isBST</span><span>(</span><span>T</span><span>,(</span><span>i</span><span>+</span><span>1</span><span>)</span><span>*</span><span>2</span><span>);</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div><div><div><div>24</div></div><div>
</div></div><div><div><div>25</div></div><div><span>bool</span><span> </span><span>solve</span><span>(</span><span>SqBiTree</span><span> </span><span>*</span><span><span>T</span><span>){</span></span></div></div><div><div><div>26</div></div><div><span>    </span><span>isBST</span><span>(</span><span>T</span><span>,</span><span>0</span><span>);</span></div></div><div><div><div>27</div></div><div><span>    </span><span>return</span><span> </span><span>flag</span><span>;</span></div></div><div><div><div>28</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfJq3wF89FGTMM3rd5yXe2XpG5jHGAACJRhrG3KB-VZGaOII0KX38AEAAwIAA3cAAz0E" alt="42" /><figcaption>42</figcaption></figure><p></p><p>解：</p><p>法 1</p><p>(1)</p><ol>
<li>采用简单选择排序的思想，设置两个指针 i 和 j，i 指向未排序的第一个元素，j 初值指向 i</li>
<li>取 curr_min=M[j] 为当前最小值的预备数，取 curr_min_index=j，向后遍历，遇到比其更小的则更新该数，并更新最小指针</li>
<li>待一趟遍历完后，交换 M[i] 和 M[curr_min_index]，i+=1</li>
<li>总计重复 1-3 10 次</li>
<li>输出前十个数即为 M 最小的 10 个数</li>
</ol><p>(2)</p><p>时间复杂度：O(n)</p><p>空间复杂度：O(1)</p><p>法 2</p><p>(1)</p><ol>
<li>采用堆的思想，构建大根堆，初值取 k=n/2，</li>
<li>比较 M[k], M[k<em>2], M[k</em>2+1]，比较出最大值，如果最大值为 M[k]，则不做处理，如果最大值为 M[k<em>2]，则交换 M[k] 和 M[k</em>2]，如果最大值为 M[k<em>2+1]，则交换 M[k] 和 M[k</em>2+1]</li>
<li>k-=1</li>
<li>重复 1-3，直到 k&lt;0</li>
<li>设置一个指针 i，初值为 0，输出第一个数，随后交换 M[0] 和 M[n-1-i]，i+=1</li>
<li>设置一个指针 k 初值为 0，比较 M[k], M[k<em>2], M[k</em>2+1]，比较出最大值，如果最大值为 M[k]，则不做处理，如果最大值为 M[k<em>2]，则交换 M[k] 和 M[k</em>2]，如果最大值为 M[k<em>2+1]，则交换 M[k] 和 M[k</em>2+1]</li>
<li>k+=1</li>
<li>重复 5-7，直到 i&gt;=10</li>
<li>输出的前十个数即为 M 最小的 10 个数</li>
</ol><p>(2)</p><p>时间复杂度：O(n)</p><p>空间复杂度：O(1)</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfdq3xQ7l75adjAO4PvaG0YFKYigeAACVhhrG3KB-VbPr-HkR-WXYAEAAwIAA3cAAz0E" alt="43" /><figcaption>43</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>SF=F</p><p>A+B 时，OF=F <span><span>overlineBoverline{B}</span><span><span><span></span><span>o</span><span>v</span><span>er</span><span>l</span><span>in</span><span>e</span><span><span>B</span></span></span></span></span> <span><span>overlineAoverline{A}</span><span><span><span></span><span>o</span><span>v</span><span>er</span><span>l</span><span>in</span><span>e</span><span><span>A</span></span></span></span></span> + <span><span>overlineFoverline{F}</span><span><span><span></span><span>o</span><span>v</span><span>er</span><span>l</span><span>in</span><span>e</span><span><span>F</span></span></span></span></span> A B</p><p>A-B 时，OF=<span><span>overlineFoverline{F}</span><span><span><span></span><span>o</span><span>v</span><span>er</span><span>l</span><span>in</span><span>e</span><span><span>F</span></span></span></span></span> A <span><span>overlineBoverline{B}</span><span><span><span></span><span>o</span><span>v</span><span>er</span><span>l</span><span>in</span><span>e</span><span><span>B</span></span></span></span></span> + F <span><span>overlineAoverline{A}</span><span><span><span></span><span>o</span><span>v</span><span>er</span><span>l</span><span>in</span><span>e</span><span><span>A</span></span></span></span></span> B</p><p>(2)</p><ol>
<li>单内部总线，无法同时传输 2 个数据</li>
<li>有时不需要立刻使用到该数据</li>
</ol><p>(3)</p><p>16</p><p>IR</p><p>地址译码器</p><p>(4)</p><p>MARin</p><p>订：缺了一个 read</p><p>MDRin，MDRout，IRin</p><p>7 个</p><p>(5)</p><p>CU</p><p>FR，IR</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfZq3xK80UVQXQwKBPpiyDG3uSJIwAACUxhrG3KB-VaO7uI9f84BGgEAAwIAA3cAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>磁道（柱面）、盘片、扇区</p><p>20000 个磁道，由于 2^14&lt;20000&lt;2^15，所以需要 15 位。</p><p>盘片有 4 个，所以占 2 位</p><p>订：双面盘，8 个，所以占 3 位</p><p>磁道有 500 个，由于 2^8&lt;500&lt;2^9，所以需要 9 位</p><p>(2)</p><p>寻道时延 5ms</p><p>旋转时延：7200rpm=120rps，转半圈需要 0.5/120=0.00417s=4.17ms</p><p>处理时延：转 1 个磁道需要 1/(120✖️500)=0.0166667ms=0.0167ms</p><p>所以，平均时间=5+4.17+0.0167=9.1867ms</p><p>(3)</p><p>一个扇区的读写也就是 512/8=64 次</p><p>可以。</p><p>DMA 对总线优先权比 CPU 高，因为数据不传输就会丢失。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfVq3xEQGMjJKdZ7AQPK0UE-68xpsAACURhrG3KB-VbT7y_C7w7g-wEAAwIAA3cAAz0E" alt="45" /><figcaption>45</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>文件名 索引结点号</p><p>course 2</p><p>doc 10</p><p>(2)</p><p>x=30</p><p>(3)</p><p>course 文件目录已在内存，意味着 course1 的 inode 已经在内存了。所以根据 course1 的 inode 访问磁盘，并读入，总共需要读 2 个磁盘块。</p><p>(4)</p><p>由于磁盘块是 4KB，地址项占 4B，所以一个磁盘块内可以存放 4KB/4B=1024 个地址项。</p><p>直接地址项 10 个，也就意味着直接地址最大到 40KB，1 级地址最大到 1024✖️4KB=4MB，也不够，2 级地址最大到 1024✖️1024✖️4KB=4GB，够了。</p><p>所以也就是要取 1 和 2 级间接索引。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfNq3wt9PYZgvZbw9lcw4eWGgqLBZgACQBhrG3KB-VZlY_wAAecF7dIBAAMCAAN3AAM9BA" alt="46" /><figcaption>46</figcaption></figure><p></p><p>解：</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 注意线程内天然的有序性</span></div></div><div><div><div>2</div></div><div><span>semaphore S1</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>3</div></div><div><span>semaphore S2</span><span>=</span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div><span>func </span><span>T1</span><span>(){</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>A;</span></div></div><div><div><div>6</div></div><div><span>  </span><span>signal</span><span>(S1);</span></div></div><div><div><div>7</div></div><div><span>  </span><span>wait</span><span>(S2);</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>E;</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>F;</span></div></div><div><div><div>10</div></div><div><span>}</span></div></div><div><div><div>11</div></div><div><span>func </span><span>T2</span><span>(){</span></div></div><div><div><div>12</div></div><div><span><span>  </span></span><span>B;</span></div></div><div><div><div>13</div></div><div><span>  </span><span>wait</span><span>(S1);</span></div></div><div><div><div>14</div></div><div><span><span>  </span></span><span>C;</span></div></div><div><div><div>15</div></div><div><span>  </span><span>signal</span><span>(S2);</span></div></div><div><div><div>16</div></div><div><span><span>  </span></span><span>D;</span></div></div><div><div><div>17</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfRq3w8EzctYaDErh0OMGcApDoN1mQACTxhrG3KB-VaOlsBeQO6KbgEAAwIAA3cAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>解：</p><p>(1)</p><p>设备 1&lt;100baset&gt; 以太网交换机</p><p>设备 2&lt;100baset&gt; 集线器</p><p>(2)</p><p>假设最远距离是 x，则由于 RTT=64B✖️8/100Mbps=5.12us。所以，2x/(2✖️10^8)=(5.12-2✖️1.51)✖️10^-6，解得 x=210m</p><p>(3)</p><p>DHCP Discovery 报文</p><p>可以</p><p>ff-ff-ff-ff-ff-ff</p><p>(4)</p><p>地址 1&lt;00-11-11-11-11-e1&gt;</p><p>地址 2&lt;00-11-11-11-11-c1&gt;</p><p>地址 3&lt;00-11-11-11-11-d1&gt;</p></section><section><h3>408 近年真题 1 刷（23-26）<a href="#408-近年真题-1-刷23-26"><span>#</span></a></h3><ul>
<li>完成时间：20261028</li>
<li>分数：
<ul>
<li>选择题：-6</li>
<li>计组：-2</li>
<li>计网：-2</li>
</ul>
</li>
<li>时间：115+25=140</li>
</ul><p>选择题检查出来一个，大题检查出来置换选择排序第一步错了。</p><p>值得注意的是，这次错的俩选择题好像三刷的时候也错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfhq4bNw8n75DYMMuWDvt4jsgI7tfAACXhVrGyANEFdRuV7Juwpu6AEAAwIAA3cAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>错选为 C，本题构建完哈夫曼树之后不会算了。结果用成了长度除以个数去算。</p><p>事实上应该算出来哈夫曼距离后，除以 3+4+5+6+8+10</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCflq4bPnDNkXqPXJNWZjJ_ctQQ7FGgACXxVrGyANEFfQh4ZSfZpSrgEAAwIAA3cAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>属于低级错误了。又是 CF 的问题。-20 先转义再计算，显然 -20 转义成无符号数是一个很大的数，一个很小的无符号数 - 一个很大的无符号数，显然 CF=1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfpq4bP--bemgALtVJll79S2Nfv4IAACYBVrGyANEFc9jMYJ_533ZAEAAwIAA3kAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>语文阅读理解。完成 “后”。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCftq4bRFdUecnlKQ5EIeHxN05ZdtaAACYhVrGyANEFcliO4dn8tVqAEAAwIAA3cAAz0E" alt="44" /><figcaption>44</figcaption></figure><p></p><p>低级错误 -2，第 2 问分析错误。本题第 2 问要求分析的是第 2 条，我写成了第 7 条。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfxq4bSuFR7klC4Iyrkw-djTaJ920QACZBVrGyANEFficWODfcfL9gEAAwIAA3cAAz0E" alt="47" /><figcaption>47</figcaption></figure><p></p><p>第 4 问，没考虑建立 TCP 连接。</p></section></section>
<section><h2>408 做题总结<a href="#408-做题总结"><span>#</span></a></h2><p>检查篇</p><ol>
<li>语文阅读理解</li>
<li>题目要求分析 A，我分析 B</li>
<li>A 推 B 可以，B 推 A 可不可以？</li>
<li>计网需不需要考虑建立 TCP 连接</li>
</ol></section>
<section><h2>DS-4.1f-1017 408 算法真题分析<a href="#ds-41f-1017-408-算法真题分析"><span>#</span></a></h2><blockquote><p>我觉得还是有必要看一下的，尤其是树和图那块。树只用看看简单题怎么做就好了，图只用看看岛屿和 bfs 单元路径查找。</p></blockquote><p>上面那段是原来的想法，后来还是按真题重新排了一遍。下面收的是 09-25 的 17 套，算法设计题一年一道，就是要求用 C/C++ 写函数的那些。</p><p>先说题号，算法题不是每年都在 41 题。09-12 连续四年在 42 题，16 年在 43 题，那年 41 被计网大题占了，42 是正则 k 叉树。所以别按「41 题」记，按专题记。</p>

<table><thead><tr><th>年份</th><th>算法题题号</th><th>题目</th><th>归入专题</th></tr></thead><tbody><tr><td>2009</td><td>42</td><td>单链表倒数第 k 个结点</td><td>链表</td></tr><tr><td>2010</td><td>42</td><td>一维数组循环左移 p 位</td><td>顺序表</td></tr><tr><td>2011</td><td>42</td><td>两个等长升序序列的中位数</td><td>查找与排序</td></tr><tr><td>2012</td><td>42</td><td>两链表共同后缀起始位置</td><td>链表</td></tr><tr><td>2013</td><td>41</td><td>主元素判定</td><td>顺序表</td></tr><tr><td>2014</td><td>41</td><td>二叉树 WPL</td><td>树</td></tr><tr><td>2015</td><td>41</td><td>链表按绝对值去重</td><td>链表</td></tr><tr><td>2016</td><td>43</td><td>集合划分（个数差最小、和差最大）</td><td>顺序表</td></tr><tr><td>2017</td><td>41</td><td>表达式树转中缀表达式</td><td>树</td></tr><tr><td>2018</td><td>41</td><td>未出现的最小正整数</td><td>顺序表</td></tr><tr><td>2019</td><td>41 与 42</td><td>链表重排；循环单链表实现队列</td><td>链表；设计题</td></tr><tr><td>2020</td><td>41 与 42</td><td>三元组最小距离；前缀编码译码</td><td>顺序表；设计题</td></tr><tr><td>2021</td><td>41</td><td>EL 路径（欧拉路径）判定</td><td>图</td></tr><tr><td>2022</td><td>41</td><td>顺序存储判 BST</td><td>树</td></tr><tr><td>2023</td><td>41</td><td>有向图 K 顶点</td><td>图</td></tr><tr><td>2024</td><td>41</td><td>拓扑序列唯一性判定</td><td>图</td></tr><tr><td>2025</td><td>41</td><td>后缀最大乘积 calMulMax</td><td>顺序表</td></tr></tbody></table><p>按大纲数一下，线性表（数组加链表）占了一半以上，树 3 道，图 3 道，查找 1 道。另外 21、23、24 连续考邻接矩阵，这个得留意。</p><p>题单最后一列是优先级，按离考纲的距离分了五档，别看见题就刷。</p><ul>
<li>必做：真题同构或者考纲直接要求，不做就是送分。</li>
<li>高优先级：同一套路的变式，真题换个壳就可能考。</li>
<li>中优先级：思路是通的，但形式偏力扣，比如 N 叉树、二分图，学有余力再做。</li>
<li>低优先级：明显超出 408，多源 BFS、并查集、BFS 求最短路这些，不做也不影响。</li>
<li>满分冲刺：比 408 难不少，但能拔高思维，堆优化、对顶堆、LRU 这类，目标 130+ 再碰，不然直接跳过。</li>
</ul><section><h3>专题一：顺序表与数组（原地操作、计数、划分、多指针）<a href="#专题一顺序表与数组原地操作计数划分多指针"><span>#</span></a></h3><p>这块是主力，套路就四类：原地逆置删除、拿值当下标、划分、多指针。</p><section><h4>2010 年第 42 题｜一维数组循环左移 p 位<a href="#2010-年第-42-题一维数组循环左移-p-位"><span>#</span></a></h4><blockquote><p>设将 n（n&gt;1）个整数存放到一维数组 R 中。设计一个在时间和空间两方面都尽可能高效的算法，将 R 中保存的序列循环左移 p（0&lt;p&lt;n）个位置，即把 (X₀,X₁,…,Xₙ₋₁) 变换为 (Xₚ,…,Xₙ₋₁,X₀,…,Xₚ₋₁)。</p></blockquote><p>次优解：开一个长 p 的数组，把前 p 个存进去，剩下的往前挪，最后把存的填回尾巴。O(n) 时间，O(p) 空间。也可以每次左移一位做 p 轮，那是 O(np) 时间和 O(1) 空间。</p><p>最优解：三次逆置，整体翻一次，前 n-p 个翻一次，后 p 个翻一次，O(n) 时间 O(1) 空间。</p><p>这里容易错在区间边界，翻的时候左闭右闭还是左闭右开先定死。写完拿 p=1 和 p=n-1 各验一遍。题目写了「尽可能高效」，只交辅助数组那版会判非最优。</p></section><section><h4>2013 年第 41 题｜主元素判定<a href="#2013-年第-41-题主元素判定"><span>#</span></a></h4><blockquote><p>已知整数序列 A=(a₀,a₁,…,aₙ₋₁)，其中 0≤aᵢ&lt;n。若存在 m&gt;n/2 个元素的值同为 x，则称 x 为 A 的主元素。设计一个尽可能高效的算法找出主元素，存在则输出该元素，否则输出 −1。</p></blockquote><p>次优解：开个计数数组，扫一遍累加，再扫一遍找超过 n/2 的，O(n) 时间 O(n) 空间。</p><p>最优解：摩尔投票，候选值加一个计数器，相同加一，不同减一，减到 0 就换候选。第二遍再数一次 cand 出现的次数，真的超过 n/2 才算。O(n) 时间 O(1) 空间。</p><p>坑在第二步。投票只保证「有主元素的话一定是 cand」，像 (1,2,3) 会投出 3，但 3 并不是主元素，不验证就错。</p></section><section><h4>2016 年第 43 题｜集合划分（个数差最小、和差最大）<a href="#2016-年第-43-题集合划分个数差最小和差最大"><span>#</span></a></h4><blockquote><p>已知由 n（n≥2）个正整数构成的集合 A={aₖ|0≤k&lt;n}，将其划分为两个不相交的子集 A₁、A₂，元素个数为 n₁、n₂，元素和为 S₁、S₂。设计一个尽可能高效的划分算法，满足 |n₁−n₂| 最小且 |S₁−S₂| 最大。</p></blockquote><p>次优解：直接排序，前一半给 A₁，后一半给 A₂，结果是对的，O(n log n)。堆排空间 O(1)，快排 O(log n)。</p><p>最优解：仿快排的划分，只往第 ⌊n/2⌋ 小那一侧递归，一趟下来两边就分好了。平均 O(n)，最坏 O(n²)，迭代写空间 O(1)。</p><p>这题只要求个数差最小、和差最大，没要求两边内部有序，所以别写全排序。另外两个条件有优先级，先保证个数差最小，再谈和差最大。</p></section><section><h4>2018 年第 41 题｜未出现的最小正整数<a href="#2018-年第-41-题未出现的最小正整数"><span>#</span></a></h4><blockquote><p>给定一个含 n（n≥1）个整数的数组，设计一个时间上尽可能高效的算法，找出数组中未出现的最小正整数。例如 {-5,3,2,3} 的结果是 1，{1,2,3} 的结果是 4。</p></blockquote><p>次优解：开个 flag[n+1]，把 1 到 n 之间出现过的打上标记，再从头找第一个没标记的，O(n) 时间 O(n) 空间。</p><p>最优解：原地哈希，把值 x 换到下标 x-1 的位置，扫完看第一个 <code>A[i] != i+1</code> 的位置，答案就是 i+1，全对就是 n+1。O(n) 时间 O(1) 空间。</p><p>注意答案只可能在 1 到 n+1 之间，负数和大于 n 的直接不管。交换要用 while 不能只写 if，换过来的新值还得继续判。</p></section><section><h4>2020 年第 41 题｜三元组最小距离<a href="#2020-年第-41-题三元组最小距离"><span>#</span></a></h4><blockquote><p>定义三元组 (a,b,c) 的距离 D=|a−b|+|b−c|+|c−a|。给定 3 个非空整数集合 S₁、S₂、S₃，按升序分别存储在 3 个数组中。设计一个尽可能高效的算法，计算并输出所有可能三元组中的最小距离。例如 S₁={-1,0,9}，S₂={-25,-10,10,11}，S₃={2,9,17,30,41}，最小距离为 2，对应三元组 (9,10,9)。</p></blockquote><p>次优解：三重循环枚举所有组合，O(n₁n₂n₃)，只能兜底。</p><p>最优解：三个指针从各自数组头开始，每轮算一次 D 并更新答案，然后把当前最小元素所在的指针往后挪一格，直到某个指针越界。O(n₁+n₂+n₃) 时间 O(1) 空间。</p><p>D 其实就是 2×(最大值减最小值)，盯住三个数的极值就行。挪最大的没用，只会让差距更大，只能挪最小的那个。</p></section><section><h4>2025 年第 41 题｜后缀最大乘积 calMulMax<a href="#2025-年第-41-题后缀最大乘积-calmulmax"><span>#</span></a></h4><blockquote><p>设有两个长度均为 n 的一维整型数组 A、res，对数组 A 中的每个元素 <code>A[i]</code>，计算 <code>A[i]</code> 与 <code>A[j]</code>（0≤i≤j≤n−1）乘积的最大值并保存到 <code>res[i]</code> 中。例如 A={1,4,-9,6}，则 res={6,24,81,36}。请设计时间空间上尽可能高效的算法，函数原型为 <code>void calMulMax(int A[], int res[], int n)</code>。</p></blockquote><p>次优解：每个 i 往后扫一遍求最大乘积，O(n²)。</p><p>最优解：从右往左扫，维护「包括 <code>A[i]</code> 在内」的后缀最大值和最小值，<code>res[i]</code> 就是 <code>A[i]×sufMax</code> 和 <code>A[i]×sufMin</code> 里大的那个。O(n) 时间 O(1) 空间。</p><p>坑在负负得正，只记最大值一定错。还有 i≤j 这个条件，后缀必须包含 <code>A[i]</code> 自己，所以是先拿 <code>A[i]</code> 更新，再算 <code>res[i]</code>。</p><p>来源：25 年真题，拿厦门工学院版答案和掌上考研的 PDF 对过。</p></section><section><h4>题单：数组与顺序表<a href="#题单数组与顺序表"><span>#</span></a></h4>

<table><thead><tr><th>题号</th><th>题目</th><th>对应考点</th><th>优先级</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/remove-element/" target="_blank">27</a></td><td>移除元素</td><td>原地删除 + 双指针，循环左移的退化版</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/remove-duplicates-from-sorted-array/" target="_blank">26</a></td><td>删除有序数组中的重复项</td><td>原地去重</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/move-zeroes/" target="_blank">283</a></td><td>移动零</td><td>原地移动，等价于「左边全非零」的循环移位</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/binary-search/" target="_blank">704</a></td><td>二分查找</td><td>有序数组定位，一切二分的模板</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/squares-of-a-sorted-array/" target="_blank">977</a></td><td>有序数组的平方</td><td>双指针从两端取大</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/minimum-size-subarray-sum/" target="_blank">209</a></td><td>长度最小的子数组</td><td>滑动窗口</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/spiral-matrix-ii/" target="_blank">59</a></td><td>螺旋矩阵 II</td><td>下标边界控制，408 爱考边界</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/first-missing-positive/" target="_blank">41</a></td><td>缺失的第一个正数</td><td>直接对应 2018 年第 41 题</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/" target="_blank">448</a></td><td>找到所有数组中消失的数字</td><td>值作下标原地标记</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/find-all-duplicates-in-an-array/" target="_blank">442</a></td><td>数组中重复的数据</td><td>同上，负数标记法</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/majority-element/" target="_blank">169</a></td><td>多数元素</td><td>直接对应 2013 年第 41 题，摩尔投票</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/majority-element-ii/" target="_blank">229</a></td><td>多数元素 II</td><td>投票法扩展（超过 n/3）</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/kth-largest-element-in-an-array/" target="_blank">215</a></td><td>数组中的第 K 个最大元素</td><td>快速选择，对应 2016 年第 43 题的 partition</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/sort-colors/" target="_blank">75</a></td><td>颜色分类</td><td>三路划分，partition 的另一副面孔</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/sort-an-array/" target="_blank">912</a></td><td>排序数组</td><td>手写快排、归并、堆排，408 只考思想但要会写</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/merge-sorted-array/" target="_blank">88</a></td><td>合并两个有序数组</td><td>三指针从后往前，空间 O(1)</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/3sum-closest/" target="_blank">16</a></td><td>最接近的三数之和</td><td>多指针维护最小差，与 2020 年第 41 题最像</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/3sum/" target="_blank">15</a></td><td>三数之和</td><td>排序 + 双指针去重</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/container-with-most-water/" target="_blank">11</a></td><td>盛最多水的容器</td><td>双指针贪心，移动较小者的同一逻辑</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/merge-intervals/" target="_blank">56</a></td><td>合并区间</td><td>排序后一次扫描</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/intersection-of-two-arrays/" target="_blank">349</a></td><td>两个数组的交集</td><td>哈希去重入门</td><td>高优先级</td></tr></tbody></table></section></section><section><h3>专题二：单链表（双指针、长度差、原地重排）<a href="#专题二单链表双指针长度差原地重排"><span>#</span></a></h3><p>链表题的共同点，不许开新结点，不许改 data，只动指针。写之前先在纸上画三个结点。</p><section><h4>2009 年第 42 题｜单链表倒数第 k 个结点<a href="#2009-年第-42-题单链表倒数第-k-个结点"><span>#</span></a></h4><blockquote><p>已知一个带有表头结点的单链表，结点结构为 data|link，只给出头指针 list。在不改变链表的前提下，设计一个尽可能高效的算法，查找链表中倒数第 k 个位置上的结点（k 为正整数）。查找成功则输出该结点的 data 值并返回 1，否则只返回 0。</p></blockquote><p>次优解：先走一遍数出表长 L，再从头走 L-k+1 步。O(n)，但是两遍。</p><p>最优解：快慢指针，快指针先走 k 步，走不满 k 步说明链表不够长，直接返回 0；然后两个一起走，快指针到表尾时慢指针就是倒数第 k 个。O(n) 时间 O(1) 空间，一遍扫描。</p><p>坑在带头结点，快指针得从第一个数据结点开始数。k 大于表长必须先判掉，不然会空指针。</p></section><section><h4>2012 年第 42 题｜两个链表的共同后缀起始位置<a href="#2012-年第-42-题两个链表的共同后缀起始位置"><span>#</span></a></h4><blockquote><p>带头结点的单链表保存单词，两个单词有相同后缀时共享同一段存储。str1、str2 分别指向两个单词所在链表的头结点，结点结构为 data|next。设计一个时间上尽可能高效的算法，找出两个链表共同后缀的起始位置。</p></blockquote><p>次优解：把 str1 的结点地址全塞进哈希表，再遍历 str2 找第一个命中的，O(m+n) 时间 O(m) 空间。</p><p>最优解：分别求长度，长的先走长度差，然后两个一起走，第一个地址相同的结点就是起点。O(m+n) 时间 O(1) 空间。</p><p>坑在比较条件，要比 <code>p1 == p2</code>，比 data 相等就错了，这是本题最大的失分点。另外后缀长度不会超过较短的那条表。</p></section><section><h4>2015 年第 41 题｜链表按绝对值去重<a href="#2015-年第-41-题链表按绝对值去重"><span>#</span></a></h4><blockquote><p>用单链表保存 m 个整数，结点结构为 data|link，且 |data|≤n（n 为正整数）。设计一个时间复杂度尽可能高效的算法，对链表中 data 绝对值相等的结点，仅保留第一次出现的结点而删除其余结点。例如 head→21→-15→-15→-7→15 删除后为 head→21→-15→-7。</p></blockquote><p>次优解：每个结点都往后扫一遍，遇到绝对值相同就删，O(m²)。</p><p>最优解：题目给了 |data|≤n，这个就是提示。开一个 n+1 的标记数组，一遍扫描，第一次出现打上标记，已经标记过的就用前驱把它删掉。O(m) 时间 O(n) 空间。</p><p>删的时候必须留住前驱。比的是绝对值，21 和 -21 算重复。留第一次出现的那个。</p></section><section><h4>2019 年第 41 题｜链表重排<a href="#2019-年第-41-题链表重排"><span>#</span></a></h4><blockquote><p>线性表 L=(a₁,a₂,…,aₙ₋₁,aₙ) 采用带头结点的单链表保存，结点结构为 data|next。设计一个空间复杂度为 O(1) 且时间上尽可能高效的算法，将 L 重排为 L′=(a₁,aₙ,a₂,aₙ₋₁,a₃,aₙ₋₂,…)。</p></blockquote><p>次优解：结点指针全存进数组，按 a₁,aₙ,a₂,aₙ₋₁ 的顺序重新连起来。O(n) 时间 O(n) 空间，空间不满足题目要求，只能算次优。</p><p>最优解：三步走，快慢指针找中点并断开，后半段原地逆置，两半交叉合并。O(n) 时间 O(1) 空间。</p><p>n 是奇数时前半段会多一个结点，合并完记得把尾结点的 next 置空。断链的位置写错会成环。</p></section><section><h4>题单：单链表<a href="#题单单链表"><span>#</span></a></h4>

<table><thead><tr><th>题号</th><th>题目</th><th>对应考点</th><th>优先级</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/remove-linked-list-elements/" target="_blank">203</a></td><td>移除链表元素</td><td>虚拟头结点 + 删除</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/design-linked-list/" target="_blank">707</a></td><td>设计链表</td><td>增删改查全套，408 链表题的基本功</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/reverse-linked-list/" target="_blank">206</a></td><td>反转链表</td><td>逆置，2019 年第 41 题的第二步</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/reverse-linked-list-ii/" target="_blank">92</a></td><td>反转链表 II</td><td>区间逆置，控制边界</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/swap-nodes-in-pairs/" target="_blank">24</a></td><td>两两交换链表中的节点</td><td>指针交换</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/remove-nth-node-from-end-of-list/" target="_blank">19</a></td><td>删除链表的倒数第 N 个结点</td><td>直接对应 2009 年第 42 题</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/middle-of-the-linked-list/" target="_blank">876</a></td><td>链表的中间结点</td><td>快慢指针，找中点</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/intersection-of-two-linked-lists/" target="_blank">160</a></td><td>相交链表</td><td>直接对应 2012 年第 42 题</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/" target="_blank">面试题 02.07</a></td><td>链表相交</td><td>同上，长度差做法</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/linked-list-cycle/" target="_blank">141</a></td><td>环形链表</td><td>快慢指针判环</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/linked-list-cycle-ii/" target="_blank">142</a></td><td>环形链表 II</td><td>判环 + 找入环点，推导要会</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/reorder-list/" target="_blank">143</a></td><td>重排链表</td><td>直接对应 2019 年第 41 题，三步全在里面</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/palindrome-linked-list/" target="_blank">234</a></td><td>回文链表</td><td>找中点 + 逆置 + 比对</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/merge-two-sorted-lists/" target="_blank">21</a></td><td>合并两个有序链表</td><td>尾插合并，408 常考思想</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/merge-k-sorted-lists/" target="_blank">23</a></td><td>合并 K 个升序链表</td><td>两两合并 = 哈夫曼思想，对应 2012 年第 41 题</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/sort-list/" target="_blank">148</a></td><td>排序链表</td><td>归并排序 + 找中点，O(n log n) O(1) 变式</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/remove-duplicates-from-sorted-list/" target="_blank">83</a></td><td>删除排序链表中的重复元素</td><td>相邻去重</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/" target="_blank">82</a></td><td>删除排序链表中的重复元素 II</td><td>去重加强版，考前驱</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/reverse-nodes-in-k-group/" target="_blank">25</a></td><td>K 个一组翻转链表</td><td>偏难，练指针操作可选</td><td>低优先级</td></tr></tbody></table></section></section><section><h3>专题三：树与二叉树（遍历时带状态）<a href="#专题三树与二叉树遍历时带状态"><span>#</span></a></h3><p>树的套路比较固定，遍历的时候顺手把深度、前驱、路径和带着走。递归函数返回什么，写之前先想清楚。</p><section><h4>2014 年第 41 题｜二叉树的带权路径长度 WPL<a href="#2014-年第-41-题二叉树的带权路径长度-wpl"><span>#</span></a></h4><blockquote><p>二叉树的带权路径长度（WPL）是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树 T，采用二叉链表存储，结点结构为 left|weight|right。请设计一个算法，计算给定二叉树 T 的 WPL。</p></blockquote><p>次优解：层序遍历，队列里同时存结点和深度，碰到叶结点就把深度乘权重累加。O(n) 时间 O(n) 空间，队列最多存一层。</p><p>最优解：递归先序，depth 当参数往下传，叶结点返回 depth×weight，非叶结点返回左右子树之和。O(n) 时间 O(h) 空间。</p><p>注意只有叶结点算权重，根的深度是 0 不是 1。weight 这个域只有放在叶子上才有意义。</p></section><section><h4>2017 年第 41 题｜表达式树转中缀表达式<a href="#2017-年第-41-题表达式树转中缀表达式"><span>#</span></a></h4><blockquote><p>请设计一个算法，将给定的表达式树（二叉树）转换为等价的中缀表达式（通过括号反映操作符的计算次序）并输出。例如输入两棵表达式树，输出分别为 (a+b)×(c×(-d)) 和 (a×b)+(-(c-d))。结点定义为 <code>typedef struct node { char data[10]; struct node *left, *right; } BTree;</code>。</p></blockquote><p>次优解：中序把所有结点收进数组，再按运算符优先级人工补括号。O(n) 时间 O(n) 空间。</p><p>最优解：递归中序。进子树时判断，当前结点是运算符而且不是根，就先输出左括号，递归完再补右括号，最后输出自己。O(n) 时间 O(h) 空间。</p><p>括号只在「运算符且非根」的时候加，操作数不加。单目负号是一个只有右孩子的运算符，不能按左右都有来写。还有输出格式，得跟样例逐字符一致。</p></section><section><h4>2022 年第 41 题｜顺序存储的二叉树判 BST<a href="#2022-年第-41-题顺序存储的二叉树判-bst"><span>#</span></a></h4><blockquote><p>已知非空二叉树 T 的结点值均为正整数，采用顺序存储方式保存：<code>typedef struct { Elemtype SqBiTNode[MAX_SIZE]; int ElemNum; } SqBiTree;</code>。不存在的结点用 −1 表示，下标 i 的左孩子为 2i+1、右孩子为 2i+2。请设计一个尽可能高效的算法，判定 T 是否为二叉搜索树。</p></blockquote><p>次优解：中序遍历把有效结点存进数组，再判数组是不是严格递增。O(n) 时间 O(n) 空间。</p><p>最优解：遍历时不存序列，用一个前驱值边遍历边比，出现当前值小于等于前驱就返回 false。O(n) 时间 O(h) 空间。</p><p>数组存储必须判下标小于 ElemNum 而且值不等于 -1，不然会读到脏数据，甚至越界。BST 要求严格递增，结点值不重复。根固定在下标 0。</p></section><section><h4>题单：树与二叉树<a href="#题单树与二叉树"><span>#</span></a></h4>

<table><thead><tr><th>题号</th><th>题目</th><th>对应考点</th><th>优先级</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/binary-tree-preorder-traversal/" target="_blank">144</a></td><td>二叉树的前序遍历</td><td>递归 + 迭代两版都要会</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/binary-tree-inorder-traversal/" target="_blank">94</a></td><td>二叉树的中序遍历</td><td>判 BST 的基础</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/binary-tree-postorder-traversal/" target="_blank">145</a></td><td>二叉树的后序遍历</td><td>自底向上收集信息</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/binary-tree-level-order-traversal/" target="_blank">102</a></td><td>二叉树的层序遍历</td><td>BFS 模板，WPL 的次优解靠它</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/binary-tree-right-side-view/" target="_blank">199</a></td><td>二叉树的右视图</td><td>层序取每层最后一个</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/average-of-levels-in-binary-tree/" target="_blank">637</a></td><td>二叉树的层平均值</td><td>层序处理</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/find-largest-value-in-each-tree-row/" target="_blank">515</a></td><td>在每个树行中找最大值</td><td>层序处理</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/n-ary-tree-level-order-traversal/" target="_blank">429</a></td><td>N 叉树的层序遍历</td><td>层序扩展</td><td>中优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/invert-binary-tree/" target="_blank">226</a></td><td>翻转二叉树</td><td>递归交换，树的入门</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/symmetric-tree/" target="_blank">101</a></td><td>对称二叉树</td><td>双树对称递归</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/maximum-depth-of-binary-tree/" target="_blank">104</a></td><td>二叉树的最大深度</td><td>深度参数怎么写</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/minimum-depth-of-binary-tree/" target="_blank">111</a></td><td>二叉树的最小深度</td><td>叶结点判定的坑</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/count-complete-tree-nodes/" target="_blank">222</a></td><td>完全二叉树的节点个数</td><td>利用完全二叉树性质，O(log²n)</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/balanced-binary-tree/" target="_blank">110</a></td><td>平衡二叉树</td><td>自底向上返回高度</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/binary-tree-paths/" target="_blank">257</a></td><td>二叉树的所有路径</td><td>路径 + 回溯</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/sum-of-left-leaves/" target="_blank">404</a></td><td>左叶子之和</td><td>叶结点判定，与 WPL 同源</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/sum-root-to-leaf-numbers/" target="_blank">129</a></td><td>求根到叶子节点数字之和</td><td>路径累加，WPL 的最佳类比题</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/find-bottom-left-tree-value/" target="_blank">513</a></td><td>找树左下角的值</td><td>层序 + 深度</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/path-sum/" target="_blank">112</a></td><td>路径总和</td><td>递归带目标和</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/path-sum-ii/" target="_blank">113</a></td><td>路径总和 II</td><td>路径收集</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/" target="_blank">105</a></td><td>从前序与中序遍历序列构造二叉树</td><td>分治建树</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/" target="_blank">106</a></td><td>从中序与后序遍历序列构造二叉树</td><td>分治建树</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/maximum-binary-tree/" target="_blank">654</a></td><td>最大二叉树</td><td>递归分治</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/merge-two-binary-trees/" target="_blank">617</a></td><td>合并二叉树</td><td>双树递归合并</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/validate-binary-search-tree/" target="_blank">98</a></td><td>验证二叉搜索树</td><td>直接对应 2022 年第 41 题</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/legal-binary-search-tree-lcci/" target="_blank">面试题 04.05</a></td><td>合法二叉搜索树</td><td>同上，中序前驱写法</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/search-in-a-binary-search-tree/" target="_blank">700</a></td><td>二叉搜索树中的搜索</td><td>BST 查找</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/minimum-absolute-difference-in-bst/" target="_blank">530</a></td><td>二叉搜索树的最小绝对差</td><td>中序前驱作差，2026 年真题同源</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/find-mode-in-binary-search-tree/" target="_blank">501</a></td><td>二叉搜索树中的众数</td><td>中序统计</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/" target="_blank">235</a></td><td>二叉搜索树的最近公共祖先</td><td>利用有序性剪枝</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/" target="_blank">236</a></td><td>二叉树的最近公共祖先</td><td>后序自底向上，408 高频</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/insert-into-a-binary-search-tree/" target="_blank">701</a></td><td>二叉搜索树中的插入操作</td><td>BST 插入</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/delete-node-in-a-bst/" target="_blank">450</a></td><td>删除二叉搜索树中的节点</td><td>BST 删除，五种情况</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/trim-a-binary-search-tree/" target="_blank">669</a></td><td>修剪二叉搜索树</td><td>递归修剪</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/" target="_blank">108</a></td><td>将有序数组转换为二叉搜索树</td><td>中序还原</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/convert-bst-to-greater-tree/" target="_blank">538</a></td><td>把二叉搜索树转换为累加树</td><td>反中序</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/kth-smallest-element-in-a-bst/" target="_blank">230</a></td><td>二叉搜索树中第 K 小的元素</td><td>中序计数</td><td>必做</td></tr></tbody></table></section></section><section><h3>专题四：图（邻接矩阵上是 O(n²) 的下限）<a href="#专题四图邻接矩阵上是-on-的下限"><span>#</span></a></h3><p>图题近五年是重点。有个前提先说清楚，只要图用邻接矩阵存，读一遍矩阵就是 O(n²)，所以 O(n²) 往往已经是这题的最优，别硬凑 O(n)。</p><section><h4>2021 年第 41 题｜EL 路径（欧拉路径）判定<a href="#2021-年第-41-题el-路径欧拉路径判定"><span>#</span></a></h4><blockquote><p>已知无向连通图 G 由顶点集 V 和边集 E 组成，|E|&gt;0。当 G 中度为奇数的顶点个数为不大于 2 的偶数时，G 存在包含所有边且长度为 |E| 的路径（称为 EL 路径）。G 采用邻接矩阵存储。请设计算法 <code>int IsExistEL(MGraph G)</code>，判断 G 是否存在 EL 路径，存在返回 1，否则返回 0。</p></blockquote><p>次优解：先把矩阵转成邻接表，再按表统计度数，O(n²+e)。</p><p>最优解：其实不用转，逐行把矩阵加起来就是每个顶点的度，数一下奇数度的个数，看是不是 0 或 2 就行。O(n²) 时间 O(1) 空间。</p><p>坑在判据，奇数度顶点个数必须是 0 或者 2，写成 ≤2 会漏掉「1 个」这种不可能的情况。另外 |E|&gt;0 这个条件排除了孤立点图。</p></section><section><h4>2023 年第 41 题｜有向图的 K 顶点<a href="#2023-年第-41-题有向图的-k-顶点"><span>#</span></a></h4><blockquote><p>已知有向图 G 采用邻接矩阵存储，类型定义：<code>typedef struct { int numVertices, numEdges; char VerticesList[MAXV]; int Edge[MAXV][MAXV]; } MGraph;</code>。将出度大于入度的顶点称为 K 顶点。请设计算法 <code>int printVertices(MGraph G)</code>，输出 G 中所有 K 顶点，并返回 K 顶点的个数。</p></blockquote><p>次优解：每个顶点单独扫一行求出度，单独扫一列求入度，O(n³)。</p><p>最优解：一次双重循环，遇到 <code>Edge[i][j] != 0</code> 就 <code>out[i]++</code>、<code>in[j]++</code>，然后扫一遍顶点表，出度大于入度就输出并计数。O(n²) 时间 O(n) 空间。</p><p>输出的是顶点表里的字符，不是下标。循环上界用 G.numVertices，别用 MAXV。返回值是计数，初值 0。</p><p>来源：23 年真题，厦门工学院版答案和计算机考研杂货铺对过。</p></section><section><h4>2024 年第 41 题｜拓扑序列唯一性判定<a href="#2024-年第-41-题拓扑序列唯一性判定"><span>#</span></a></h4><blockquote><p>有向图 G 采用邻接矩阵存储，类型定义同上（numVertices、numEdges、VerticesList、Edge）。请设计算法 <code>int uniquely(MGraph G)</code>，判定 G 是否存在唯一的拓扑序列，若是返回 1，否则返回 0。</p></blockquote><p>次优解：先跑一遍拓扑排序得到一条序列，再枚举相邻两个点交换看还合不合法，O(n³)，写起来还麻烦。</p><p>最优解：先求入度数组，循环 n 次，每次数入度为 0 且没输出过的点有几个，不等于 1 就直接返回 0，等于 1 就输出它，把它的邻接点入度减一。O(n²) 时间 O(n) 空间。</p><p>某一步候选是 0 说明有环，也要返回 0。别为了「删除顶点」去改邻接矩阵，用「已输出」标记就行。每轮只允许一个候选。</p></section><section><h4>题单：图<a href="#题单图"><span>#</span></a></h4>

<table><thead><tr><th>题号</th><th>题目</th><th>对应考点</th><th>优先级</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/find-if-path-exists-in-graph/" target="_blank">1971</a></td><td>寻找图中是否存在路径</td><td>直接对应 2009 年第 41 题的「可达性」</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/route-between-nodes-lcci/" target="_blank">面试题 04.01</a></td><td>节点间通路</td><td>同上，DFS/BFS 判连通</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/all-paths-from-source-to-target/" target="_blank">797</a></td><td>所有可能的路径</td><td>DFS 回溯，邻接矩阵/表遍历</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/keys-and-rooms/" target="_blank">841</a></td><td>钥匙和房间</td><td>可达性统计</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/number-of-provinces/" target="_blank">547</a></td><td>省份数量</td><td>连通分量计数</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/number-of-islands/" target="_blank">200</a></td><td>岛屿数量</td><td>DFS/BFS 模板，408 图题的基本功</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/max-area-of-island/" target="_blank">695</a></td><td>岛屿的最大面积</td><td>网格 DFS 带返回值</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/island-perimeter/" target="_blank">463</a></td><td>岛屿的周长</td><td>网格边界统计</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/number-of-enclaves/" target="_blank">1020</a></td><td>飞地</td><td>边界反向 DFS</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/surrounded-regions/" target="_blank">130</a></td><td>被围绕的区域</td><td>边界反向标记</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/pacific-atlantic-water-flow/" target="_blank">417</a></td><td>太平洋大西洋水流问题</td><td>反向可达</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/making-a-large-island/" target="_blank">827</a></td><td>最大人工岛</td><td>连通块编号 + 面积</td><td>低优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/clone-graph/" target="_blank">133</a></td><td>克隆图</td><td>图的遍历 + 哈希</td><td>中优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/is-graph-bipartite/" target="_blank">785</a></td><td>判断二分图</td><td>染色法 DFS/BFS</td><td>中优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/course-schedule/" target="_blank">207</a></td><td>课程表</td><td>拓扑排序判环，对应 2024 年第 41 题</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/course-schedule-ii/" target="_blank">210</a></td><td>课程表 II</td><td>输出拓扑序，唯一性判定的基础</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/redundant-connection/" target="_blank">684</a></td><td>冗余连接</td><td>并查集</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/redundant-connection-ii/" target="_blank">685</a></td><td>冗余连接 II</td><td>有向图并查集</td><td>低优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/network-delay-time/" target="_blank">743</a></td><td>网络延迟时间</td><td>Dijkstra，对应 2009 年第 41 题</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/min-cost-to-connect-all-points/" target="_blank">1584</a></td><td>连接所有点的最小费用</td><td>Prim / Kruskal，对应 2017、2018 年第 42 题</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/shortest-path-in-binary-matrix/" target="_blank">1091</a></td><td>二进制矩阵中的最短路径</td><td>BFS 求最短路</td><td>低优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/01-matrix/" target="_blank">542</a></td><td>01 矩阵</td><td>多源 BFS</td><td>低优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/rotting-oranges/" target="_blank">994</a></td><td>腐烂的橘子</td><td>多源 BFS</td><td>低优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/nearest-exit-from-entrance-in-maze/" target="_blank">1926</a></td><td>迷宫中离入口最近的出口</td><td>BFS 边界判定</td><td>低优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/jump-game-iii/" target="_blank">1306</a></td><td>跳跃游戏 III</td><td>一维图 BFS</td><td>低优先级</td></tr></tbody></table></section></section><section><h3>专题五：查找与排序（二分、堆、快速选择）<a href="#专题五查找与排序二分堆快速选择"><span>#</span></a></h3><p>这个专题只剩一道算法题，但它恰好是最容易「误判最优」的那种，次优解 O(n)，最优解 O(log n)。</p><section><h4>2011 年第 42 题｜两个等长升序序列的中位数<a href="#2011-年第-42-题两个等长升序序列的中位数"><span>#</span></a></h4><blockquote><p>一个长度为 L（L≥1）的升序序列 S，处在第 ⌈L/2⌉ 个位置的数称为 S 的中位数。例如 S₁=(11,13,15,17,19) 的中位数是 15。两个序列的中位数是含它们所有元素的升序序列的中位数。例如 S₂=(2,4,6,8,20)，则 S₁ 和 S₂ 的中位数是 11。现有两个等长升序序列 A 和 B，试设计一个在时间和空间两方面都尽可能高效的算法，找出两个序列 A 和 B 的中位数。</p></blockquote><p>次优解：归并式双指针，两个序列从头比，数到合并后的第 n 个就返回。两个序列各长 n，合起来 2n，中位数就是第 n 个。O(n) 时间 O(1) 空间，没有真的合并数组，空间还是 O(1)。</p><p>最优解：二分，分别取 A、B 的中位数 a、b，相等就直接出；a&lt;b 就丢掉 A 较小的一半和 B 较大的一半，两边丢的个数必须一样多；a&gt;b 对称处理。重复到各剩一个元素，取小的那个。O(log n) 时间 O(1) 空间。</p><p>这里容易错在偶数长度的边界，丢一半要按 ⌊len/2⌋ 严格对齐，两边丢得不一样多，后面取中位数就全错了。还有本题的中位数是第 ⌈L/2⌉ 个，是上中位数，不是下中位数。</p></section><section><h4>题单：查找与排序<a href="#题单查找与排序"><span>#</span></a></h4>

<table><thead><tr><th>题号</th><th>题目</th><th>对应考点</th><th>优先级</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/median-of-two-sorted-arrays/" target="_blank">4</a></td><td>寻找两个正序数组的中位数</td><td>直接对应 2011 年第 42 题，困难但必须看</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/binary-search/" target="_blank">704</a></td><td>二分查找</td><td>二分模板，[left,right] 与 [left,right) 两种写法</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/" target="_blank">34</a></td><td>在排序数组中查找元素的第一个和最后一个位置</td><td>二分找左右边界</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/search-insert-position/" target="_blank">35</a></td><td>搜索插入位置</td><td>二分返回值语义</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/sqrtx/" target="_blank">69</a></td><td>x 的平方根</td><td>二分答案</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/valid-perfect-square/" target="_blank">367</a></td><td>有效的完全平方数</td><td>二分答案</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/search-in-rotated-sorted-array/" target="_blank">33</a></td><td>搜索旋转排序数组</td><td>二分的区间判定</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/" target="_blank">81</a></td><td>搜索旋转排序数组 II</td><td>有重复元素时的退化</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/" target="_blank">153</a></td><td>寻找旋转排序数组中的最小值</td><td>二分找拐点</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/" target="_blank">154</a></td><td>寻找旋转排序数组中的最小值 II</td><td>同上，含重复</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/sort-an-array/" target="_blank">912</a></td><td>排序数组</td><td>快排、归并、堆排三选一必须手写熟</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/kth-largest-element-in-an-array/" target="_blank">215</a></td><td>数组中的第 K 个最大元素</td><td>快速选择 / 堆，对应 2016 年第 43 题</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/k-closest-points-to-origin/" target="_blank">973</a></td><td>最接近原点的 K 个点</td><td>大根堆维护前 K 小，堆选型的同类练习</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/kth-largest-element-in-a-stream/" target="_blank">703</a></td><td>数据流中的第 K 大元素</td><td>小根堆维护前 K 大</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/find-median-from-data-stream/" target="_blank">295</a></td><td>数据流的中位数</td><td>对顶堆，中位数题的加强版</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/top-k-frequent-elements/" target="_blank">347</a></td><td>前 K 个高频元素</td><td>小根堆 / 桶排序</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/sort-list/" target="_blank">148</a></td><td>排序链表</td><td>归并排序在链表上</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/merge-k-sorted-lists/" target="_blank">23</a></td><td>合并 K 个升序链表</td><td>两两合并的哈夫曼思想，对应 2012 年第 41 题</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/sort-colors/" target="_blank">75</a></td><td>颜色分类</td><td>三路划分</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/sort-characters-by-frequency/" target="_blank">451</a></td><td>根据字符出现频率排序</td><td>计数 + 排序</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/design-hashset/" target="_blank">705</a></td><td>设计哈希集合</td><td>散列表基础，2024 年第 42 题同源</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/design-hashmap/" target="_blank">706</a></td><td>设计哈希映射</td><td>同上</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/two-sum/" target="_blank">1</a></td><td>两数之和</td><td>哈希查找入门</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/valid-anagram/" target="_blank">242</a></td><td>有效的字母异位词</td><td>计数数组</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/intersection-of-two-arrays/" target="_blank">349</a></td><td>两个数组的交集</td><td>哈希去重</td><td>高优先级</td></tr></tbody></table></section></section><section><h3>专题六：数据结构设计题（不写算法，但每年 42 题爱考）<a href="#专题六数据结构设计题不写算法但每年-42-题爱考"><span>#</span></a></h3><p>这类题不要求写函数，考的是选什么结构、怎么判空判满、操作流程怎么讲。答案就几句话，但漏一句就扣分。</p><section><h4>2019 年第 42 题｜循环单链表实现队列<a href="#2019-年第-42-题循环单链表实现队列"><span>#</span></a></h4><blockquote><p>请设计一个队列，要求满足：① 初始时队列为空；② 入队时，允许增加队列占用空间；③ 出队后，出队元素所占用的空间可重复使用，即整个队列所占用的空间只增不减；④ 入队和出队操作的时间复杂度始终保持为 O(1)。请回答：(1) 应选择链式存储结构还是顺序存储结构；(2) 画出队列初始状态，给出队空和队满的判定条件；(3) 画出第一个元素入队后的状态；(4) 给出入队和出队操作的基本过程。</p></blockquote><p>选链式，顺序存储没法同时满足「空间只增不减」和 O(1) 入队。</p><p>结构是带头结点的循环单链表，只设一个尾指针 rear，rear-&gt;next 就是队头。初始时 rear 指向头结点，rear-&gt;next = rear。</p><p>队空就是 rear == rear-&gt;next，也就是只剩头结点。链式结构谈不上队满，实际实现里可以约定申请不到新结点算满，或者另设计数器。</p><p>入队在 rear 后面插新结点，rear 后移一位，O(1)。出队删的是 rear-&gt;next 后面的第一个数据结点，O(1)。</p><p>坑在判空，写成 rear==NULL 就错了，循环链表没有 NULL。出队别把头结点删了。题目问的是「基本过程」，要用文字加图示，不是只写代码。</p></section><section><h4>2020 年第 42 题｜前缀编码与译码<a href="#2020-年第-42-题前缀编码与译码"><span>#</span></a></h4><blockquote><p>若任一个字符的编码都不是另一个字符编码的前缀，则称这种编码具有前缀特性。现有某字符集需要设计满足前缀特性的编码，并支持把编码串还原为字符序列。请回答：(1) 给出满足前缀特性的编码方案，说明采用何种数据结构保存；(2) 给出译码算法（或译码过程）的基本思想。</p></blockquote><p>用二叉树存，左分支 0、右分支 1，字符只放叶子上，根到叶的路径就是编码。</p><p>字符只在叶子上，任何编码都不可能是别人的前缀。构造的时候用哈夫曼，按频率合并最小的两棵子树，得到的就是最优前缀码。</p><p>译码从根出发，逐位读，0 走左孩子、1 走右孩子，走到叶结点就输出字符并回到根，继续读下一位。串读完还停在非叶结点，说明编码非法。</p><p>时间 O(L)，L 是编码串长度，空间 O(1)，只要一个指向当前结点的指针。算上建树是 O(k log k)，k 是字符集大小。</p><p>要强调「字符只在叶结点」这一条，这是前缀特性的充要条件。译码最后还得判是不是停在叶子上。</p></section><section><h4>题单：数据结构设计题<a href="#题单数据结构设计题"><span>#</span></a></h4>

<table><thead><tr><th>题号</th><th>题目</th><th>对应考点</th><th>优先级</th></tr></thead><tbody><tr><td><a href="https://leetcode.cn/problems/implement-queue-using-stacks/" target="_blank">232</a></td><td>用栈实现队列</td><td>两个栈倒腾，结构设计经典</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/implement-stack-using-queues/" target="_blank">225</a></td><td>用队列实现栈</td><td>同上反向</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/design-circular-queue/" target="_blank">622</a></td><td>设计循环队列</td><td>直接对应 2019 年第 42 题的顺序存储对照方案</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/design-circular-deque/" target="_blank">641</a></td><td>设计循环双端队列</td><td>循环队列加强版</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/design-linked-list/" target="_blank">707</a></td><td>设计链表</td><td>链表增删改查全套</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/implement-trie-prefix-tree/" target="_blank">208</a></td><td>实现 Trie（前缀树）</td><td>直接对应 2020 年第 42 题的前缀结构</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/design-add-and-search-words-data-structure/" target="_blank">211</a></td><td>添加与搜索单词</td><td>Trie + 通配符</td><td>中优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/replace-words/" target="_blank">648</a></td><td>单词替换</td><td>前缀匹配应用</td><td>中优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/short-encoding-of-words/" target="_blank">820</a></td><td>单词的压缩编码</td><td>后缀/前缀共享存储</td><td>低优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/valid-parentheses/" target="_blank">20</a></td><td>有效的括号</td><td>栈的应用</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/" target="_blank">1047</a></td><td>删除字符串中的所有相邻重复项</td><td>栈的消除思想</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/evaluate-reverse-polish-notation/" target="_blank">150</a></td><td>逆波兰表达式求值</td><td>表达式树/后缀表达式，对应 2017 年第 41 题</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/basic-calculator/" target="_blank">224</a></td><td>基本计算器</td><td>表达式求值（中缀转后缀）</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/basic-calculator-ii/" target="_blank">227</a></td><td>基本计算器 II</td><td>同上，带优先级</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/sliding-window-maximum/" target="_blank">239</a></td><td>滑动窗口最大值</td><td>单调队列，408 常考结构</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/top-k-frequent-elements/" target="_blank">347</a></td><td>前 K 个高频元素</td><td>堆 + 哈希组合设计</td><td>高优先级</td></tr><tr><td><a href="https://leetcode.cn/problems/min-stack/" target="_blank">155</a></td><td>最小栈</td><td>辅助栈设计</td><td>必做</td></tr><tr><td><a href="https://leetcode.cn/problems/lru-cache/" target="_blank">146</a></td><td>LRU 缓存</td><td>哈希 + 双向链表，与 OS 页面置换联动</td><td>满分冲刺</td></tr><tr><td><a href="https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/" target="_blank">面试题 09</a></td><td>用两个栈实现队列</td><td>原「面试题 09」（现 LCR 125），232 的面试版</td><td>必做</td></tr></tbody></table></section></section><section><h3>这份文档怎么用<a href="#这份文档怎么用"><span>#</span></a></h3><p>先按专题过一遍，顺序表、链表、树、图、查找排序。前两块是基本盘，占了一半以上，先把这 10 道吃透。</p><p>每题只看三件事。题干里的约束，能不能开辅助空间、能不能改链表；最优解是怎么想到的；复杂度分别是多少。</p><p>卷面是三段，设计思想 4 分左右，C/C++ 描述加注释 7 到 9 分，复杂度 2 分。设计思想写不清楚，代码写得再对也拿不满。</p><p>几个反复出现的坑，链表判地址不判值、主元素要验证、负负得正、BST 严格递增、循环链表没有 NULL、邻接矩阵按行列分开统计、快速选择的最坏情况、找最小 K 个要用大根堆。</p><p>408 的「最优」一般只是比朴素解少一个数量级，能写出 O(n) 时间 O(1) 空间就够了，别硬上 Morris 遍历这种超出评分点的东西。</p></section></section>
<section><h2>DS-4.1f-1017 408 数据结构应用强化<a href="#ds-41f-1017-408-数据结构应用强化"><span>#</span></a></h2><p>上一节是写函数，这一节是画图和讲过程。408 的应用题基本就这些，压缩存储、手工跑 MST 和最短路、拓扑和关键路径、ASL、排序过程推演。都不难，但得自己画过，不然考场上画不出来。</p><p>每题按真题的样子给了情境和小问，<code>〔〕</code> 里是原来的编号，方便对照。优先级跟上一节一样，「必做」那几个考前一定要手过一遍。</p><section><h3>一、数组的应用<a href="#一数组的应用"><span>#</span></a></h3><section><h4>对称矩阵的压缩存储（必做）<a href="#对称矩阵的压缩存储必做"><span>#</span></a></h4><blockquote><p>5 阶对称矩阵 A，元素 <code>a[i][j]</code>（0≤i,j≤4），满足 <code>a[i][j] = a[j][i]</code>。只把下三角（含主对角线，15 个元素）压到一维数组 B 里。</p></blockquote><ol>
<li>自己编一组数填满 A，写出 5×5 矩阵，标出下三角。〔1.1.1〕</li>
<li>按行优先存进 B，画出下标和元素的对应关系。〔1.1.2〕</li>
<li>写出 <code>a[i][j]</code>（i≥j）和 k 的关系，拿 <code>a[4][2]</code> 验一下。〔1.1.3〕</li>
<li>换列优先再画一遍、再写一遍关系式，比较差别。〔1.1.4、1.1.5〕</li>
<li>A 要是无向图的邻接矩阵，画出这个图，说说边数和非零元素个数的关系。〔1.1.6〕</li>
</ol><p>记一下，行优先 k = i(i+1)/2 + j，列优先 k = j(2n−j+1)/2 + (i−j)，n=5。</p></section><section><h4>上/下三角矩阵的压缩存储（高优先级）<a href="#上下三角矩阵的压缩存储高优先级"><span>#</span></a></h4><blockquote><p>5 阶下三角矩阵，i&lt;j 时 <code>a[i][j] = 0</code>，压到一维数组 B。上三角全是同一个常数 c 的话，多存一个 c 就行。</p></blockquote><ol>
<li>自己编一个，写出完整矩阵。〔1.2.1〕</li>
<li>行优先压进去，画出 B 和下标。〔1.2.2〕</li>
<li>写 <code>a[i][j]</code> 和 k 的关系，分 i≥j 和 i&lt;j 两种情况。〔1.2.3〕</li>
<li>列优先再做一遍。〔1.2.4、1.2.5〕</li>
<li>当成有向图的邻接矩阵画出来，说说为什么这时候矩阵不用对称。〔1.2.6〕</li>
</ol></section><section><h4>三对角矩阵的压缩存储（低优先级）<a href="#三对角矩阵的压缩存储低优先级"><span>#</span></a></h4><blockquote><p>5 阶三对角矩阵，只有 |i−j|≤1 的元素可能非零，一共 3n−2=13 个。</p></blockquote><ol>
<li>自己编一个。〔1.3.1〕</li>
<li>行优先压这 13 个，画出 B。〔1.3.2〕</li>
<li>写 <code>a[i][j]</code>（|i−j|≤1）和 k 的关系。〔1.3.3〕</li>
<li>列优先再做一遍，说说为什么三对角一般用行优先。〔1.3.4、1.3.5〕</li>
</ol></section></section><section><h3>二、栈和队列的应用<a href="#二栈和队列的应用"><span>#</span></a></h3><section><h4>栈的定义与基本操作（必做）<a href="#栈的定义与基本操作必做"><span>#</span></a></h4><blockquote><p>分别用顺序存储和链式存储写一个 int 栈，再拿它做括号匹配。</p></blockquote><ol>
<li>定义顺序栈，数组加栈顶指针，说清栈空栈满怎么判。〔2.1.1〕</li>
<li>入栈、出栈、判空、判满四个操作，标一下时间复杂度。〔2.1.2〕</li>
<li>链栈，栈顶放链头，四个操作写一遍，说说为什么这时入栈出栈都是 O(1)。〔2.1.3、2.1.4〕</li>
<li>双向链表栈，栈顶放链尾，再写一遍，跟 (3) 比一比。〔2.1.5、2.1.6〕</li>
<li>自己编一个有好多层小括号中括号的式子，至少嵌 5 层。〔2.1.7〕</li>
<li>用它做括号匹配，画出栈里元素最多的时候。〔2.1.8〕</li>
<li>说说匹配的全过程，哪些情况算不匹配。〔2.1.9〕</li>
</ol></section><section><h4>队列的定义与基本操作（中优先级）<a href="#队列的定义与基本操作中优先级"><span>#</span></a></h4><blockquote><p>循环数组和单链表各写一个 int 队列。</p></blockquote><ol>
<li>循环队列怎么让空间转起来。判空判满写三种，少用一个单元、加 size、加 tag。〔2.2.1、2.2.2〕</li>
<li>链队列，带头结点，front 指队头、rear 指队尾，出队入队判空写一遍。〔2.2.3、2.2.4〕</li>
<li>比一比，循环队列什么时候假溢出，链队列为什么不会。</li>
</ol></section></section><section><h3>三、树与二叉树的应用<a href="#三树与二叉树的应用"><span>#</span></a></h3><section><h4>二叉树的性质（中优先级）<a href="#二叉树的性质中优先级"><span>#</span></a></h4><blockquote><p>只看王道 5.2.3 的课后小题，要能现场推，别背。</p></blockquote><ol>
<li>n₀=n₂+1，第 i 层最多 2^(i−1) 个，高 h 最多 2^h−1 个，三条都推一遍。〔3.1.1〕</li>
<li>完全二叉树里编号 i 的父结点、左孩子、右孩子是谁（1-indexed）。</li>
<li>知道完全二叉树的结点数 n，求叶结点数和树高。</li>
</ol></section><section><h4>二叉树的顺序存储与基本操作（高优先级）<a href="#二叉树的顺序存储与基本操作高优先级"><span>#</span></a></h4><blockquote><p>根存下标 1 和根存下标 0 两种写法都写一遍。</p></blockquote><ol>
<li>定义顺序存储的二叉树，根在下标 1，写 <code>findFather(i)</code>、<code>leftChild(i)</code>、<code>rightChild(i)</code>。〔3.1.2 至 3.1.5〕</li>
<li>用这三个函数写先序、中序、后序。〔3.1.6〕</li>
<li>改成根在下标 0，三个函数重写，遍历也重写。〔3.1.7 至 3.1.11〕</li>
<li>说说 0-indexed 下 <code>2i+1</code>、<code>2i+2</code> 的边界在哪，为什么 1-indexed 省事。</li>
</ol></section><section><h4>树的性质（中优先级）<a href="#树的性质中优先级"><span>#</span></a></h4><blockquote><p>王道 5.1.4、5.4.4 的课后小题。</p></blockquote><ol>
<li>树的度、高度、结点数、叶结点数的关系，n = Σnᵢ，n₀ = 1 + Σ(i−1)nᵢ。〔3.2.1〕</li>
<li>一棵度为 3 的树，n₁=4、n₂=2、n₃=1，求 n₀ 和总结点数。</li>
</ol></section><section><h4>树（森林）的定义与画图（必做）<a href="#树森林的定义与画图必做"><span>#</span></a></h4><blockquote><p>一棵结点数不少于 10 的树，一个至少 3 棵树的森林，三种表示法都画一遍。</p></blockquote><ol>
<li>双亲表示法，顺序存储，树和森林都要能存。〔3.3.1〕</li>
<li>孩子表示法，链式，注意跟图的邻接表长得像。〔3.3.2〕</li>
<li>孩子兄弟表示法，左孩子右兄弟。〔3.3.4〕</li>
<li>对比一下，树的孩子表示、图的邻接表、散列的拉链、基数排序的链式分配，四个都是「数组加链表」，共同点在哪。〔3.3.3〕</li>
<li>自己编一棵不少于 10 个结点的树，三种表示法画出来。〔3.3.5〕</li>
<li>自己编一个至少 3 棵树的森林，三种表示法画出来，再说说森林怎么用孩子兄弟表示转成二叉树。〔3.3.6〕</li>
</ol></section><section><h4>哈夫曼树的应用（低优先级）<a href="#哈夫曼树的应用低优先级"><span>#</span></a></h4><ol>
<li>自己编 10 个字符和权值，画构造过程，每轮合最小的两棵。〔3.4.1〕</li>
<li>说说构造过程，为什么每次挑最小的两个。〔3.4.2〕</li>
<li>写出这 10 个字符的编码，检查是不是谁都不是谁的前缀。〔3.4.3〕</li>
<li>说说译码怎么走，到叶输出、回根继续，编码非法怎么判。〔3.4.4〕</li>
</ol></section><section><h4>并查集的应用（高优先级）<a href="#并查集的应用高优先级"><span>#</span></a></h4><ol>
<li>长度 n 的数组，根怎么认，parent[i]=i。〔3.5.1〕</li>
<li>写 Union，按大小或按秩合并，说说为什么不优化会退化成链。〔3.5.2〕</li>
<li>写 Find，带路径压缩，递归和迭代各一版。〔3.5.3〕</li>
<li>10 个元素做几次 Union，每次合并完画一下森林。〔3.5.4〕</li>
<li>在上面做几次 Find，画出压缩前后的样子。〔3.5.5〕</li>
</ol></section><section><h4>二叉排序树与平衡二叉树（必做）<a href="#二叉排序树与平衡二叉树必做"><span>#</span></a></h4><blockquote><p>自己编不少于 10 个关键字，依次插进空的 BST 和 AVL。</p></blockquote><ol>
<li>每次插入后画一下 BST 的样子。〔3.6.1〕</li>
<li>算查找成功和失败的 ASL，每个结点的比较次数和失败区间都写出来。〔3.6.2〕</li>
<li>删掉至少 4 个元素，四种情况都要有，叶子、只有左子树、只有右子树、左右都有（用前驱或后继替）。〔3.6.3〕</li>
<li>画 AVL 的插入过程，例子必须能出 LL、RR、LR、RL 四种旋转。〔3.6.4〕</li>
<li>算 AVL 的成功和失败 ASL，跟 (2) 的 BST 比。〔3.6.5〕</li>
</ol></section></section><section><h3>四、图的应用<a href="#四图的应用"><span>#</span></a></h3><section><h4>图的性质（中优先级）<a href="#图的性质中优先级"><span>#</span></a></h4><blockquote><p>王道 6.1.2 的课后小题，重点是边数、度数、连通性之间的换算。</p></blockquote><ol>
<li>无向图和有向图的结点数、边数、度数、连通性、强连通性，关系都理一遍。〔4.1.1〕</li>
<li>无向图 Σdeg=2e，有向图 Σ入度=Σ出度=e。n 个顶点的无向连通图至少要 n−1 条边。</li>
</ol></section><section><h4>图的数据结构定义（高优先级）<a href="#图的数据结构定义高优先级"><span>#</span></a></h4><ol>
<li>邻接矩阵存图，顶点表加边矩阵，再记顶点数和边数。〔4.2.1〕</li>
<li>邻接表存图，顶点数组加边结点链表。〔4.2.2〕</li>
<li>自己编一个不少于 6 个结点的带权无向图，矩阵和表都画出来。〔4.2.3〕</li>
<li>再编一个带权有向图，同样画两遍，比一比空间开销，一个 O(n²) 一个 O(n+e)。〔4.2.4〕</li>
</ol></section><section><h4>最小生成树（低优先级）<a href="#最小生成树低优先级"><span>#</span></a></h4><ol>
<li>自己编一个不少于 6 个结点的带权无向连通图，矩阵和表都画出来。〔4.3.1〕</li>
<li>用 Prim 手工跑一遍，每轮选中的边和候选边都画出来，最后算总代价。〔4.3.2〕</li>
<li>换 Kruskal 再跑一遍，边按权排序，说说怎么判环。〔4.3.3〕</li>
</ol></section><section><h4>最短路径（中优先级）<a href="#最短路径中优先级"><span>#</span></a></h4><ol>
<li>在上面那个有向图上跑 Dijkstra，每轮的 dist 数组、S 集合、选中的点都写出来。〔4.4.1〕</li>
<li>说说 BFS 求无权图单源最短路怎么走，为什么 BFS 只能处理无权或者边权相同的图。〔4.4.2〕</li>
</ol></section><section><h4>拓扑排序（必做）<a href="#拓扑排序必做"><span>#</span></a></h4><blockquote><p>自己编一个不少于 6 个结点的带权有向无环图。</p></blockquote><ol>
<li>画出邻接矩阵。〔4.5.1〕</li>
<li>用一维数组压缩存这个矩阵，只存有效元素，说说下标怎么算。〔4.5.2〕</li>
<li>在压缩后的数组上判断 i、j 之间有没有边。〔4.5.3〕</li>
<li>写出所有合法的拓扑序列，按入度为 0 的候选一步步展开。〔4.5.4〕</li>
<li>说说拓扑排序的全过程，怎么判有环。〔4.5.5〕</li>
</ol></section><section><h4>关键路径（中优先级）<a href="#关键路径中优先级"><span>#</span></a></h4><ol>
<li>在上题的图上求 ve、vl、e、l，写出所有关键活动和关键路径，算总长度。〔4.6.1〕</li>
<li>说说关键路径长度的实际意义，工程最短工期，为什么缩短非关键活动没用。〔4.6.2〕</li>
</ol></section></section><section><h3>五、查找算法的分析与应用<a href="#五查找算法的分析与应用"><span>#</span></a></h3><section><h4>分块查找（中优先级）<a href="#分块查找中优先级"><span>#</span></a></h4><ol>
<li>自己编不少于 15 个元素，块间有序块内无序，分块加索引表。〔5.1.1〕</li>
<li>算成功和失败的 ASL，公式写出来再代数字。〔5.1.2〕</li>
</ol></section><section><h4>折半查找（中优先级）<a href="#折半查找中优先级"><span>#</span></a></h4><ol>
<li>自己编不少于 10 个有序元素，画判定树，结点旁边标比较次数。〔5.2.1〕</li>
<li>算成功和失败的 ASL，说说失败结点为什么是 n+1 个外部结点。〔5.2.2〕</li>
</ol></section><section><h4>散列查找（中优先级）<a href="#散列查找中优先级"><span>#</span></a></h4><ol>
<li>自己定表长和散列函数，比如 H(k)=k mod 13，用线性探测。〔5.3.1〕</li>
<li>编不少于 10 个元素的插入序列，至少冲突 4 次，画出最终的表。〔5.3.2〕</li>
<li>算成功和失败的 ASL，失败的按散列函数值域一个个数探测次数。〔5.3.3〕</li>
<li>换拉链法，前面两步重做。〔5.3.4、5.3.5〕</li>
<li>算拉链法的成功和失败 ASL，跟线性探测比。〔5.3.6〕</li>
</ol></section></section><section><h3>六、排序算法的分析与应用<a href="#六排序算法的分析与应用"><span>#</span></a></h3><section><h4>希尔排序（中优先级）<a href="#希尔排序中优先级"><span>#</span></a></h4><ol>
<li>自己编一个长度不少于 10 的乱序数组，增量自己定，比如 5、2、1。〔6.1.1〕</li>
<li>每一趟排完的状态都画出来。〔6.1.2〕</li>
</ol></section><section><h4>堆排序（高优先级）<a href="#堆排序高优先级"><span>#</span></a></h4><ol>
<li>自己编一个长度不少于 10 的数组，从最后一个非叶结点 ⌊n/2⌋ 开始下沉，建大根堆，画建完的样子。〔6.2.1〕</li>
<li>每趟取堆顶再调整，每趟都画，最后得到升序数组。〔6.2.2〕</li>
</ol></section><section><h4>快速排序（中优先级）<a href="#快速排序中优先级"><span>#</span></a></h4><ol>
<li>自己编一个长度不少于 10 的乱序数组，以首元素为枢轴划分。〔6.3.1〕</li>
<li>画每趟划分后的状态和递归树，说说最坏情况什么样。〔6.3.2〕</li>
</ol></section><section><h4>基数排序（高优先级）<a href="#基数排序高优先级"><span>#</span></a></h4><ol>
<li>自己编一个长度不少于 15 的链表，元素 0~99，按个位十位两趟分配收集，最后升序。〔6.4.1〕</li>
<li>画每趟分配后各桶的内容，还有收集后的链表。〔6.4.2〕</li>
</ol></section></section><section><h3>用的时候注意<a href="#用的时候注意"><span>#</span></a></h3><p>每个考点控制在 40 分钟内，先自己画，再对王道书的例题改。</p><p>五个必做的先解决，对称矩阵、栈、树的三种表示、BST/AVL、拓扑排序。这几块是真题里最容易丢过程分的地方。</p><p>画图用铅笔和格子纸，矩阵下标一定标全。ASL 要把每个元素的比较次数列出来，只写结果拿不到过程分。</p></section></section>
<section><h2>408 深度注意<a href="#408-深度注意"><span>#</span></a></h2><ol>
<li>管程、通道的概念区分</li>
<li>GBN 协议的多帧辨析</li>
<li>磁盘和设备相关的计算 (2012 第 43 题，2013 第 43 题，2016 第 44 题)</li>
<li>中断屏蔽字，0 代表未被屏蔽，所以别人可以打断我，1 代表屏蔽，所以别人不可以打断我</li>
<li>算法定点突破，2020 真题最优解（以及更多的东西）</li>
<li>中断的全过程</li>
<li>LRU 算法的计算</li>
</ol></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/npee/wqmath/</id>
      <title type="text">考研冲刺前的总结 —— 错题本（数学）</title>
      <published>2026-10-01T00:00:00.000Z</published>
      <updated>2026-10-01T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/npee/wqmath/"/>
      <summary type="text">考研冲刺前的总结 —— 错题本（数学）</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>本篇原本的产物为一份 docx，是 6-8 月写的，记录了数学写的练习册（张宇基础 30 讲高数、张宇 1000 基础、张宇基础 30 讲线代、张宇 1000 基础线代、武忠祥强化讲义、杨威线性代数讲义、880 综合题，以及上述所有题的二刷）。</p><p>未来应该会在卷子开完一遍之后，写一下李永乐 660，当然还有卷子的复盘。</p><p>数学未来的题目复盘就全部看这里了。</p><p>当然除了高数还有王道 408 选择题的 1 刷和 2 刷，以及真题 1 刷，王道选择题 3 刷等。前 2 刷很多是知识点没背熟，所以相对而言不那么重要（还没拟合）。</p><p>至于为什么要迁移，为了强迫自己再写一遍错题，不然就只会采用瞪眼法的方式看错题。</p><p>这份文档将持续更新，直至考研结束。</p></section>
<section><h2>时间线<a href="#时间线"><span>#</span></a></h2><p>数学基础：第 1 周 - 第 8 周，共 8 周。将基础 30 讲，三大计算（积分）和基础练习册 1000 写完，刷了一遍基础 30 讲，三大计算（积分）和基础练习册 1000 的错题。</p><p>数学强化：第 9 周 - 第 20 周，共 12 周。听完武忠祥老师的强化课，写完武忠祥强化讲义并错题重刷，杨威线代强化，880。</p><p>数学 2 轮：第 21 周 - 第 25 周，共 5 周。重刷一遍基础 30 讲，基础练习册 1000，武忠祥强化讲义，杨威线代强化。其中需要错题重刷 880。那么计划就是：基础 30 讲重刷，刷 880 高数部分错题，刷 880 线代部分错题；基础练习册 1000 重刷，重刷武忠祥强化；重刷杨威强化。</p><p>数学真题：第 26 周 - 第 30 周，共 5 周。09 - 20 的 12 年真题，以及超越部分试卷（3 套），因为课内 + 状态很差，这 5 周只干了这些事</p><p>数学模拟卷 1 + 二刷 880 一半：第 31 周 - 第 32 周，共 2 周。26 李 4 + 880 二刷一半，880 二刷一半</p><p>数学模拟卷 2 + 真题 + 二刷所有错题 + 卷子复盘：第 33 周 - 第 34 周，共 2 周。27 李 6，21 真题 - 22 真题，24 超越 9-10</p><p>数学模拟卷 3 + 真题 + 选刷专题：第 35 周 - 第 38 周，共 4 周：23-26 数学真题，24 超越 4-8，27 张八，25 超越，660 选刷，880 线代</p></section>
<section><h2>张宇 30 讲基础高数 1 刷（补）<a href="#张宇-30-讲基础高数-1-刷补"><span>#</span></a></h2><p>最开始没有写错题本，所以是后续补充的。</p><section><h3>张宇 30 讲基础高数 1 刷第 1 章<a href="#张宇-30-讲基础高数-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADY2rEbDgrtnm0uM3Khp0seiILh1PXAALoEmsbxNooVrEQjdCAbn6IAQADAgADeAADPQQ" alt="1.1.3" /><figcaption>1.1.3</figcaption></figure><p></p><p>没想出来怎么做，函数有四大性质：奇偶性，有界性，单调性，周期性，考虑该函数为奇函数，由此解答。</p><p>其实也有利用到奇函数的特性，我是利用相加去做的，最后做的有点复杂，但是也能做出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADZGrEbV1dabx8pmsEUxW9_xYnN1x5AALrEmsbxNooVu_IcbwuJ2gVAQADAgADeAADPQQ" alt="1.1.5" /><figcaption>1.1.5</figcaption></figure><p></p><p>本题混淆定义域和值域的概念，对于这种题，首先要画图，然后将里面函数的值域作为外面函数的定义域带入，但是最后的定义域是写内层函数的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADZWrEbZdIur3NJ9iNZ7mLwWh16FeZAALsEmsbxNooVsZlWadPJS5YAQADAgADeAADPQQ" alt="1.1.6" /><figcaption>1.1.6</figcaption></figure><p></p><p>做这道题的时候利用的是导数的性质。而答案采用的是基本不等式，上下同时除以一个绝对值 <span><span>∣x∣|x|</span><span><span><span></span><span>∣</span><span>x</span><span>∣</span></span></span></span>（需要排除 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>）。当然我认为不如分开讨论 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>、<span><span>−x-x</span><span><span><span></span><span>−</span><span>x</span></span></span></span> 和 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，上下同时除以 <span><span>−x-x</span><span><span><span></span><span>−</span><span>x</span></span></span></span> 然后用基本不等式感觉也不错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADZmrEbcKoxW40lvbMze1ajIy1NCunAALuEmsbxNooVugYtadLzWizAQADAgADeAADPQQ" alt="1.1.10" /><figcaption>1.1.10</figcaption></figure><p></p><p>针对这种题的思路是同取对数进行处理。</p><p>并且本题 1 刷时数字抄错（<span><span>6ln⁡x6\ln x</span><span><span><span></span><span>6</span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 求导时少抄了 <span><span>66</span><span><span><span></span><span>6</span></span></span></span>），错题重刷时 <span><span>142−12214^2-12^2</span><span><span><span></span><span>1</span><span><span>4</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span><span>2</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 少算一个 <span><span>1010</span><span><span><span></span><span>10</span></span></span></span>（算成 <span><span>4242</span><span><span><span></span><span>42</span></span></span></span>）充分证明了计算错误的可怕，以及一步一回头的必要性。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADZ2rEbglvbEfn9g_2xdFWn1YcK8MaAALvEmsbxNooVoY63rrXmkmTAQADAgADeAADPQQ" alt="1.1.11" /><figcaption>1.1.11</figcaption></figure><p></p><p>本题在 1 刷时采用类泰勒公式的解法，而事实上 <span><span>2x2^x</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 可以化成类似 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 的形式，直接将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 带入即可。</p><p>如果采用类似泰勒公式的解法，则是事实上完全不需要给出这个式子。</p><p>直接像下面那样子 <span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 处泰勒展开就好了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADaGrEbiXlqUT-q5v_-WG99drSewUSAALwEmsbxNooVtYJjGhGu28CAQADAgADeAADPQQ" alt="1.1.11 过程" /><figcaption>1.1.11 过程</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADaWrEbls5BmE9VKtmk1nXejKUefcJAALxEmsbxNooVgMT5TIEeagJAQADAgADeAADPQQ" alt="1.1.12" /><figcaption>1.1.12</figcaption></figure><p></p><p>本题的做法是需要注意到 <span><span>y=arcsin⁡xy=\arcsin x</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>arcsin</span><span></span><span>x</span></span></span></span> 的值域为 <span><span>[−π2,π2]\left[-\frac{\pi}{2},\frac{\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span>，所以得分区间进行讨论。1 刷的时候进入了一个很大的误区，那就是：</p><p>令 <span><span>y=sin⁡(x−π)y=\sin(x-\pi)</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>sin</span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>π</span><span>)</span></span></span></span>，<span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的范围为 <span><span>[π2,3π2]\left[\frac{\pi}{2},\frac{3\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span>，此时也就是说 <span><span>x−πx-\pi</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>π</span></span></span></span> 的范围是 <span><span>[−π2,π2]\left[-\frac{\pi}{2},\frac{\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span>，如果直接取反三角函数，也就是 <span><span>arcsin⁡y=x−π\arcsin y=x-\pi</span><span><span><span></span><span>arcsin</span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>π</span></span></span></span>，最后得到 <span><span>x=arcsin⁡y+πx=\arcsin y+\pi</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>arcsin</span><span></span><span>y</span><span></span><span>+</span><span></span></span><span><span></span><span>π</span></span></span></span>。</p><p>错误点在于，原函数其实是 <span><span>y=sin⁡xy=\sin x</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span>（也就是此 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 非彼 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span>），<span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的范围为 <span><span>[π2,3π2]\left[\frac{\pi}{2},\frac{3\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span>，变化为 <span><span>−y=sin⁡(x−π)-y=\sin(x-\pi)</span><span><span><span></span><span>−</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>sin</span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>π</span><span>)</span></span></span></span> 才对，而不是直接令 <span><span>y=sin⁡(x−π)y=\sin(x-\pi)</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>sin</span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>π</span><span>)</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADamrEbnzDk6CuJcEh5yHWccLgIVStAALyEmsbxNooVrsjvgR0UtL4AQADAgADeAADPQQ" alt="1.1.17" /><figcaption>1.1.17</figcaption></figure><p></p><p>本题采用直觉做，错误，告诫一定每一题都要算出来，而不是依靠直觉。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADa2rEbpUSJ_iYGGtj3LDi1qsxfVa-AALzEmsbxNooVsKsVuGW04ONAQADAgADeAADPQQ" alt="1.1.20" /><figcaption>1.1.20</figcaption></figure><p></p><p>关于这题，对是对了，可以注意一下解法，也就是令 <span><span>g(x)=f(x)f(x)/g(x)g(x)=\frac{f(x)}{f(x)/g(x)}</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>f</span><span>(</span><span>x</span><span>)</span><span>/</span><span>g</span><span>(</span><span>x</span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，当然直接反过来得到 <span><span>1/A1/A</span><span><span><span></span><span>1/</span><span>A</span></span></span></span> 也是没什么问题的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADbGrEbq5r5zJHqUWfLRl6mYTNf19ZAAL0EmsbxNooVpS9ew8X-WSJAQADAgADeAADPQQ" alt="1.1.26" /><figcaption>1.1.26</figcaption></figure><p></p><p>本题把两边同时除以一个 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>，错误点在于没有讨论 <span><span>x=kx=k</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>k</span></span></span></span> 的情况。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADbWrEbspy95kfIRmZ3CR9ragfEGDlAAL1EmsbxNooVv6BbvCFgCBoAQADAgADbQADPQQ" alt="1.1.28" /><figcaption>1.1.28</figcaption></figure><p></p><p>本题采用洛必达，不过其实用 <span><span>xln⁡xx\ln x</span><span><span><span></span><span>x</span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 的快慢收敛更简单。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADbmrEbt0TmxQjVyFfWuqarUTKwDz5AAL2EmsbxNooVkuXHMHbHJkJAQADAgADbQADPQQ" alt="1.1.29" /><figcaption>1.1.29</figcaption></figure><p></p><p>这道题需要注意方法，也就是夹逼定理。需要注意的是其等号的作用范围。尤其需要注意当 <span><span>10x\frac{10}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>10</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 时，符号方向得反过来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADb2rEbvPy9FHPexanYygKEy0uLoDXAAL4EmsbxNooViJE4aQcPQUOAQADAgADbQADPQQ" alt="1.1.33" /><figcaption>1.1.33</figcaption></figure><p></p><p>关于本题，其实是作对的，但是一开始的时候把 <span><span>ln⁡(x+y)\ln(x+y)</span><span><span><span></span><span>ln</span><span>(</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>y</span><span>)</span></span></span></span> 拆成 <span><span>ln⁡x+ln⁡y\ln x+\ln y</span><span><span><span></span><span>ln</span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>ln</span><span></span><span>y</span></span></span></span> 了，尤其需要注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADcGrEbwrM0qR3R5o7PdAgez0g3YGDAAL5EmsbxNooVi2C2zUFLkL6AQADAgADeAADPQQ" alt="1.1.35" /><figcaption>1.1.35</figcaption></figure><p></p><p>本题完全忽略了 <span><span>(1+x)2(1+x)^2</span><span><span><span></span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 也可以展开，所以没做出来。</p><p>尤其需要注意两个展开式应该相乘，而不是展开式直接相加。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADcWrEbzRqc0eXx9gtVKPfCvAYsWhFAAL6EmsbxNooVvNNi8diU9faAQADAgADeAADPQQ" alt="1.1.36" /><figcaption>1.1.36</figcaption></figure><p></p><p><span><span>ln⁡(cos⁡x)x2\frac{\ln(\cos x)}{x^2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>l</span><span>n</span></span><span>(</span><span><span>c</span><span>o</span><span>s</span></span><span></span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，其中不可以直接利用 <span><span>ln⁡x&lt;x\ln x&lt;x</span><span><span><span></span><span>ln</span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>x</span></span></span></span>，第一是因为这是无穷大时的结论，第二是因为 <span><span>ln⁡1=0\ln 1=0</span><span><span><span></span><span>ln</span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，<span><span>00\frac{0}{0}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>0</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 属于未定式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADcmrEb0twAAGE94hsNh2uj1MAAdA1QHsAAvsSaxvE2ihW8ufwvzVW8xUBAAMCAAN4AAM9BA" alt="1.1.37" /><figcaption>1.1.37</figcaption></figure><p></p><p>注意求的是第二类间断点个数，不要把第一类算进去了。</p><p>求解这类题的时候，首先是找出可能的点，然后一个个去试，需要注意 <span><span>arctan⁡x\arctan x</span><span><span><span></span><span>arctan</span><span></span><span>x</span></span></span></span>、<span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span>、<span><span>∣x∣|x|</span><span><span><span></span><span>∣</span><span>x</span><span>∣</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADc2rEb2OJgDqC07BUJMuja-xle7XQAAL8EmsbxNooVnk0BB4rUEzGAQADAgADeAADPQQ" alt="1.2.3" /><figcaption>1.2.3</figcaption></figure><p></p><p>错选为 C。想当然的锅，事实上认真算一下就知道了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADdGrEb4Oz1r8Jt2oP9LW6i25HKIHuAAL9EmsbxNooVhS2xKQ42yQ1AQADAgADeAADPQQ" alt="1.2.5" /><figcaption>1.2.5</figcaption></figure><p></p><p>错选为 C。只考虑了 <span><span>&gt;1&gt;1</span><span><span><span></span><span>&gt;</span><span></span></span><span><span></span><span>1</span></span></span></span>，没有考虑 <span><span>&lt;1&lt;1</span><span><span><span></span><span>&lt;</span><span></span></span><span><span></span><span>1</span></span></span></span> 的情况，倒反天罡。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADdWrEb5lYhDd-p7Ddd2gufMcWM_wSAAL-EmsbxNooVsrIEXIwtoBSAQADAgADeAADPQQ" alt="1.2.6" /><figcaption>1.2.6</figcaption></figure><p></p><p>本题也是错在想当然上面，<span><span>1+x+x=2+x1+x+x=2+x</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span></span></span></span>，然后填错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADdmrEb62USAdkSRChuw7Fc2RuVZMeAAL_EmsbxNooVlGqqujdvEEFAQADAgADbQADPQQ" alt="1.2.11" /><figcaption>1.2.11</figcaption></figure><p></p><p>做出来是一条直线，对完答案之后没有复盘。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADd2rEb7-oT4lVWx54DUT6qMyDatCSAAMTaxvE2ihWZa6F6QH1oysBAAMCAANtAAM9BA" alt="1.2.12" /><figcaption>1.2.12</figcaption></figure><p></p><p>对于这题，化简到 <span><span>xex−ex+1xe^x-e^x+1</span><span><span><span></span><span>x</span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 的时候，如果提取 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 然后一阶泰勒展开就可以得到经典的错误，标准的零分。原因是底下是 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，而泰勒展开是有皮亚诺余项的，显然不足以满足。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADeGrEb961vOma03HE6yzabuJADQn-AAIBE2sbxNooVsh-vq5GSMaJAQADAgADbQADPQQ" alt="1.2.15" /><figcaption>1.2.15</figcaption></figure><p></p><p>-() 要变号，低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADeWrEb_rbO3eGnkuHC7tk56yTcrSHAAICE2sbxNooVp2ymQet2IcvAQADAgADeAADPQQ" alt="1.2.16" /><figcaption>1.2.16</figcaption></figure><p></p><p>泰勒展开只对 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 展开，没有考虑 <span><span>cos⁡x\cos x</span><span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span>。事实上这题应该把 <span><span>sin⁡xcos⁡x\sin x\cos x</span><span><span><span></span><span>sin</span><span></span><span>x</span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 视为 <span><span>sin⁡2x\sin 2x</span><span><span><span></span><span>sin</span><span></span><span>2</span><span>x</span></span></span></span> 来处理会很方便。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 2 章<a href="#张宇-30-讲基础高数-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADemrEdunCODNv-p7nwXacaO8189sbAAIGE2sbxNooVibRGtyr4pfHAQADAgADeAADPQQ" alt="2.1.5" /><figcaption>2.1.5</figcaption></figure><p></p><p>本题利用函数极限的保号性，只不过是对 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 保号，也就是最终肯定是在 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 处附近。所以前有限项只要有比 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 更大的，那么就存在最大值，前有限项只要有比 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 更小的，那么就存在最小值。</p><blockquote><p>其实是保序性。</p></blockquote><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADe2rEh8q1Z4liJ8E5A9pDtw2yOYv-AAIaE2sbxNooVvXmEZkcrcOaAQADAgADeAADPQQ" alt="2.1.9" /><figcaption>2.1.9</figcaption></figure><p></p><p>低级错误，脑测为 1。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADfGrEh-9RMOhyUfoFS7rY3YOn6C6jAAIbE2sbxNooVjwNySxP3mZvAQADAgADeAADPQQ" alt="2.1.11" /><figcaption>2.1.11</figcaption></figure><p></p><p>本题 1 刷时毫无思路，对于第一问，显然是使用夹逼定理；对于第 2 小问，应该想办法把 <span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 或者 <span><span>bnb_n</span><span><span><span></span><span><span>b</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 变成对方，从而得出答案。既然思路是这样，那么根据等式，<span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 显然不方便进行代换，所以换 <span><span>bnb_n</span><span><span><span></span><span><span>b</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。由于 <span><span>bn2b_n^2</span><span><span><span></span><span><span>b</span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>1−cos⁡x1-\cos x</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 可以代换，所以进行代换，从而迎刃而解。</p><p>本题作为错题二刷时做错了，因为分数倒腾来倒腾去导致计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADfWrEiA0OyJ0TXPh9uwABHHRLV5ETkQACHBNrG8TaKFZ-zRjayhwd6gEAAwIAA3gAAz0E" alt="2.1.12" /><figcaption>2.1.12</figcaption></figure><p></p><p>证明此类题有两种做法，证单调有界，利用压缩映射（先猜再证）</p><p>对于本题，先证单调性。后一项减去前一项，可得一串式子，这串式子算对了，但是最后想利用单调性的时候，<span><span>32\frac{3}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 算成 <span><span>34\frac{3}{4}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，且没有利用有界性。</p><p>顺带提一嘴，本题在二刷的时候最后脑算 <span><span>2A2=3A2A^2=3A</span><span><span><span></span><span>2</span><span><span>A</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>3</span><span>A</span></span></span></span>，算错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADfmrEiCZt3u03C58mbekkUScUQ_1NAAIdE2sbxNooVrTDKYXSzPuLAQADAgADeAADPQQ" alt="2.1.13" /><figcaption>2.1.13</figcaption></figure><p></p><p>利用结论，1 刷和错题刷都错了。</p><p>事实上，只需要画图就可以很好的理解这个结论。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADf2rEiD_wNGYU5f4vE4mh3-HIcR_kAAIeE2sbxNooVuyiEO-CpaBjAQADAgADeAADPQQ" alt="2.1.15" /><figcaption>2.1.15</figcaption></figure><p></p><p>本题 1 刷和错题订正都没做出来，原因是不会。当然经过强化之后，这点知识是还可以的，因为这道题明显是上面说的第 2 类做法，在进行压缩映射的时候，需要利用拉格朗日中值定理等条件去放缩。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADgGrEiFlaSeOXiU9lGEEBgl3TEicSAAIfE2sbxNooVmPzllZRtJbuAQADAgADeAADPQQ" alt="2.1.17" /><figcaption>2.1.17</figcaption></figure><p></p><p>用夹逼定理和特值法做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADgWrEiG8OeWiwH8aBpozp6t-m_VecAAIgE2sbxNooVrgl_jm-iaI8AQADAgADbQADPQQ" alt="2.2.3" /><figcaption>2.2.3</figcaption></figure><p></p><p>本题为低级错误，<span><span>n\sqrt{n}</span><span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span> 除下去的时候要注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUlqxl12d-8HWWe0RNpOI6kmWWXZEAACshRrGz_BMFYEVSHwnvL3egEAAwIAA3gAAz0E" alt="2.2.7" /><figcaption>2.2.7</figcaption></figure><p></p><p>违规使用等价无穷小代换</p><p>考虑夹逼定理，这题二刷差点没做出来。比较正规的做法是分块算，也就是把 <span><span>1n\frac{1}{n}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 和后面的一大坨给分开。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUpqxl2OsjeRA3C2okXR9tgvZEsIyQACsxRrGz_BMFYv1gvqpordTAEAAwIAA3gAAz0E" alt="2.2.8" /><figcaption>2.2.8</figcaption></figure><p></p><p>一刷时没思路，错题重刷时没写，现在再做一次，二刷的时候再做一段时间才做出来。本质的思路是把 <span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 解出来，然后 <span><span>x1&lt;x2x_1&lt;x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，对应的函数单调递增，可得单调性，有界性对于 <span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 而言显然。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 3 章<a href="#张宇-30-讲基础高数-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUtqxl2uTkzEtRQetIGxlkQBmixkFgACtBRrGz_BMFb86YJAucSN7gEAAwIAA3gAAz0E" alt="3.1.4" /><figcaption>3.1.4</figcaption></figure><p></p><p>关于这道题，1 刷的时候暴露了一个问题，那就是我不是不会做，而是总是在最后一两步的时候突然犯蠢。所以不只是得走一步看一步，还得着重检查最开始和最后，这些都是最容易让人懈怠的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAUxqxl3thdvbaB7XEZN0mDktVRvyGAACthRrGz_BMFaYNCGtUOCWAAEBAAMCAAN4AAM9BA" alt="3.1.5" /><figcaption>3.1.5</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAU1qxl4Ga5WW-LFZRdyCIvIxjwLoMgACtxRrGz_BMFbnyRbGMU7sqgEAAwIAA3gAAz0E" alt="3.1.6" /><figcaption>3.1.6</figcaption></figure><p></p><p>这两题可以放在一起讲。这道题其实是有结论的，具体结论在武忠祥老师的强化课基本搞明白了。包括我没放进来的下一题，重点是记住这两个：</p><p><span><span>x∣x∣x|x|</span><span><span><span></span><span>x</span><span>∣</span><span>x</span><span>∣</span></span></span></span> 以及画图，画一张图就能理解函数的导数绝对值之间的关系了。</p><p>当然也可以用传统做法做。</p><p>例 3.5 就是想当然了，算一半直接选了错误选项。</p><p>例 3.6 则是试根用长除法，但是 2 刷的时候才突然意识到，原来可以先因式分解，然后问题就迎刃而解了。</p><p>开卷子初期时候补充：需要注意本身就不可导的点，例如 <span><span>x1/2x^{1/2}</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>1/2</span></span></span></span></span></span></span></span></span></span></span></span>，<span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 不可导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAU5qxl4wMgtqXMqAkVneiaa77-DEwAACuRRrGz_BMFZg6O0XAdNL6gEAAwIAA3gAAz0E" alt="3.1.8" /><figcaption>3.1.8</figcaption></figure><p></p><p>这道题是一刷的时候没算完，只算出来了交点没算完极限。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAU9qxl5KnUZN6evN71D-66hbgvnGvQACuhRrGz_BMFbNJvq1K_xXPgEAAwIAA3gAAz0E" alt="3.1.10" /><figcaption>3.1.10</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVBqxl5iPLLv2bidZKjqjV-I2yWtMwACuxRrGz_BMFYmQceHkIQxUwEAAwIAA3gAAz0E" alt="3.1.11" /><figcaption>3.1.11</figcaption></figure><p></p><p>这两题可以放在一起讲，1 刷的时候明显对概念不熟悉，错题重刷的时候也一般，2 刷的时候险些没反应过来。</p><p>对于不经常考的考点也需要注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVFqxl57b8lSRA07C0n3TLAlfUXJhAACvBRrGz_BMFbZ6c-bkT5twgEAAwIAA3gAAz0E" alt="3.2.4" /><figcaption>3.2.4</figcaption></figure><p></p><p>本题是知识点的不熟悉，需要注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVJqxl6TmhXes30m8qHYzqhS3JCm6QACvRRrGz_BMFaukBvp3zVpBgEAAwIAA3gAAz0E" alt="3.2.7" /><figcaption>3.2.7</figcaption></figure><p></p><p>没想到洛必达。</p><p>2 刷的时候看了提示才想起来。</p><p>在这里可以辨析一下洛必达可以洛几次，如果某个函数在一个区间内 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 阶可导，那么在这个区间内可以洛 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 次；如果一个函数在某点处 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 阶可导，那么在这个区间内只能洛 <span><span>k−1k-1</span><span><span><span></span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次。</p><p>上面这个说法是错误的！一样只能洛 <span><span>k−1k-1</span><span><span><span></span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次。可以洛的前提是第 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 阶导存在（或为无穷）</p></section><section><h3>张宇 30 讲基础高数 1 刷第 4 章<a href="#张宇-30-讲基础高数-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVNqxl75y2QOxcALDrvnnZLQ58wydwACvhRrGz_BMFaga02l5J1WFgEAAwIAA3gAAz0E" alt="4.1.1" /><figcaption>4.1.1</figcaption></figure><p></p><p>本题一开始想成相加，后来做的时候使用的是上一节的导数思想，然而在处理 <span><span>tan⁡πx4\tan\frac{\pi x}{4}</span><span><span><span></span><span>tan</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的时候翻车了，这里 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 趋向于 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，而不是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，所以在这里的处理需要小心。2 刷的时候用的是洛必达，感觉也是可以去凑一下的，但是没必要。</p><p>本题答案的解法采用的是第 2 种，也就是采用 <span><span>(uv)′(uv)'</span><span><span><span></span><span>(</span><span>uv</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 的求导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVRqxl8UDT7SkjKtZpdtyiHDbdac7wACwBRrGz_BMFaMI0q27PcIYAEAAwIAA3gAAz0E" alt="4.1.7" /><figcaption>4.1.7</figcaption></figure><p></p><p>注意辨析 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 之间的关系，这里的 <span><span>3+e3+e</span><span><span><span></span><span>3</span><span></span><span>+</span><span></span></span><span><span></span><span>e</span></span></span></span> 指的是 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span>，也就是当 <span><span>y=3+ey=3+e</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>3</span><span></span><span>+</span><span></span></span><span><span></span><span>e</span></span></span></span> 的时候，<span><span>x=1x=1</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，而不是 <span><span>x=3+ex=3+e</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>3</span><span></span><span>+</span><span></span></span><span><span></span><span>e</span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVVqxl82gXQyCywWaE7OorsbDjU6gwACwRRrGz_BMFZecPMH5_OK1gEAAwIAA3gAAz0E" alt="4.1.8" /><figcaption>4.1.8</figcaption></figure><p></p><p>连续的 yx 等的计算错误以及加减号</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVZqxl9K0JIUHoPer9M6xMy0ND2hYAACwhRrGz_BMFY6GQdwobYdowEAAwIAA3gAAz0E" alt="4.1.9" /><figcaption>4.1.9</figcaption></figure><p></p><p>这题错在利用公式法的时候，求解出 <span><span>dydt\frac{\mathrm{d}y}{\mathrm{d}t}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>t</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 和 <span><span>dxdt\frac{\mathrm{d}x}{\mathrm{d}t}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>t</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，直接拿前者去对 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 求导，而不是拿 <span><span>dydx\frac{\mathrm{d}y}{\mathrm{d}x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 对 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 求导。本题 2 刷时尝试使用公式法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVdqxl9d1JcWM-gTed-dTnNN95wQrQACwxRrGz_BMFaq0qF9fvScmgEAAwIAA3gAAz0E" alt="4.1.10" /><figcaption>4.1.10</figcaption></figure><p></p><p>本题错在两个地方，第一，<span><span>x=arctan⁡tx=\arctan t</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>arctan</span><span></span><span>t</span></span></span></span> 求导求出来最后是带 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的，第二，一个经典的错误，标准的零分：除以 <span><span>11+t2\frac{1}{1+t^2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>1</span><span>+</span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 一定不是直接把这个写在分母。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVhqxl-jZwGwg9rQOXETh76lqtWQEQACxBRrGz_BMFYII1TkMFaCoQEAAwIAA3gAAz0E" alt="4.1.11" /><figcaption>4.1.11</figcaption></figure><p></p><p>大量的计算错误，且一开始没注意到取对数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVlqxl-5e6LcxXLr8TNGkn0CWIma4wACxRRrGz_BMFaVlHFOISiQHAEAAwIAA3gAAz0E" alt="4.1.15" /><figcaption>4.1.15</figcaption></figure><p></p><p>题没看完，求的是 <span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 时的点，而不是完整的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVpqxl_MOTQ-0uLWIODi9nmVHqeYJgACxhRrGz_BMFapAYOGQ-5PWgEAAwIAA20AAz0E" alt="4.1.17" /><figcaption>4.1.17</figcaption></figure><p></p><p>本题可以采用归纳法，1 刷时采用牛莱公式，但是确在计算 <span><span>Cn1C_n^1</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>（上 1 下 n）时出现问题，做出来等于 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，实际上应该为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVtqxl_kR-KgUhTK8ucSLLym-vWo6AACyBRrGz_BMFa7R576nCaxBAEAAwIAA3gAAz0E" alt="4.1.19" /><figcaption>4.1.19</figcaption></figure><p></p><p>利用牛莱公式，结果 <span><span>C(n,k)C(n,k)</span><span><span><span></span><span>C</span><span>(</span><span>n</span><span>,</span><span></span><span>k</span><span>)</span></span></span></span> 再次记错公式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVxqxn1AaXmvJdsUIv8vXvJ84f4GtwACEhVrGz_BMFbE-3Yph5AayAEAAwIAA20AAz0E" alt="4.2.2" /><figcaption>4.2.2</figcaption></figure><p></p><p>低级错误，漏抄了一个 2</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAV1qxn1WIFnCo5JljL5xXtYOeH4HtgACExVrGz_BMFbflYdWkd3EygEAAwIAA3gAAz0E" alt="4.2.3" /><figcaption>4.2.3</figcaption></figure><p></p><p>低级错误，求二阶导的时候求成 <span><span>A+1A+1</span><span><span><span></span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAV5qxn1riDUazGB23KPGklmJLHabJgACFBVrGz_BMFbAHRID_K3qswEAAwIAA3gAAz0E" alt="4.2.4" /><figcaption>4.2.4</figcaption></figure><p></p><p>低级错误，求 <span><span>dydx\frac{\mathrm{d}y}{\mathrm{d}x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的时候忘记除以 <span><span>dxdt\frac{\mathrm{d}x}{\mathrm{d}t}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>t</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAV9qxn2GSHk63kT4sf2i94UlnvWm7gACFRVrGz_BMFbtzvlJXylwpQEAAwIAA3gAAz0E" alt="4.2.7" /><figcaption>4.2.7</figcaption></figure><p></p><p>没想到用泰勒公式</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWBqxn2fHS3VCMXKOwKaUrHu_29OugACFhVrGz_BMFZIXo9CK0goEQEAAwIAA3gAAz0E" alt="4.2.8" /><figcaption>4.2.8</figcaption></figure><p></p><p>进行泰勒展开的时候需要尤其注意最后求的是什么，而不是直接把 x 的形式保留在那里。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 5 章<a href="#张宇-30-讲基础高数-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWFqxn3P4uiXvDJXRlRahVMKbNbHggACGBVrGz_BMFb3GEwgUis4DAEAAwIAA3gAAz0E" alt="5.1.1" /><figcaption>5.1.1</figcaption></figure><p></p><p>看了半眼才反应过来是构造函数</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWJqxn3qI3GUrtAfVM5WgilC2WZ3wAACGRVrGz_BMFYI62cLAafJYQEAAwIAA3gAAz0E" alt="5.1.2" /><figcaption>5.1.2</figcaption></figure><p></p><p>严谨的证明是利用费马定理 + 举特例</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWNqxn44e2N28pRzCfz05PrNc5TR_gACGhVrGz_BMFYujSuMpTEHtAEAAwIAA20AAz0E" alt="5.1.9" /><figcaption>5.1.9</figcaption></figure><p></p><p>关于这题，需要注意两件事。第一，看到 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 一定要想到正无穷和负无穷；第二，关于无穷的时候 <span><span>ex&gt;x&gt;ln⁡xe^x&gt;x&gt;\ln x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>ln</span><span></span><span>x</span></span></span></span>，这个要记住。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWRqxn5rCSsBWnWylf3T2u7D-ANZ_AACGxVrGz_BMFapO_jF3y-q2AEAAwIAA20AAz0E" alt="5.1.10" /><figcaption>5.1.10</figcaption></figure><p></p><p>数列。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWVqxn9eanVO-h1NgPleyQABGAdIJTEAAiAVaxs_wTBWq_Pi2WxWuQYBAAMCAAN4AAM9BA" alt="5.1.15" /><figcaption>5.1.15</figcaption></figure><p></p><p>1 刷时已经根据不出草稿了判断出哪里计算错了，二刷时则是因为对 <span><span>tan⁡x\tan x</span><span><span><span></span><span>tan</span><span></span><span>x</span></span></span></span> 求导，求导求成 <span><span>sec⁡x\sec x</span><span><span><span></span><span>sec</span><span></span><span>x</span></span></span></span> 求导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWZqxn98AuJ0pcKHvgoNFphELIYKzAACIRVrGz_BMFYpkV4DC14DigEAAwIAA3gAAz0E" alt="5.2.1" /><figcaption>5.2.1</figcaption></figure><p></p><p>低级错误。1 刷时做对了，但是选错选项了（答案是 B，错选为 D）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWdqxn-OKwy0INE1RYTKzVJMtyfgZQACIhVrGz_BMFbU-et7jmWVlwEAAwIAA20AAz0E" alt="5.2.7" /><figcaption>5.2.7</figcaption></figure><p></p><p>本质是极限的计算错误：</p><p>1 刷的时候错误在计算 <span><span>y−axy-ax</span><span><span><span></span><span>y</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>x</span></span></span></span> 的时候，单独先算了前一项；错题重刷时错了是因为不知道为啥洛必达的时候，把 <span><span>−ex-e^x</span><span><span><span></span><span>−</span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 跳步成了 <span><span>−xex-xe^x</span><span><span><span></span><span>−</span><span>x</span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span>。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 6 章<a href="#张宇-30-讲基础高数-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWhqxn-oYippMztNv_JMmMoUKxMReAACIxVrGz_BMFYKm1ZcEl3pMwEAAwIAA3gAAz0E" alt="6.1.1" /><figcaption>6.1.1</figcaption></figure><p></p><p>注意零点定理的作用范围。在 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 连续，在 <span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 上有零点</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWlqxn-7fcbWOVT3FjLQTSwC9P2fVAACJBVrGz_BMFbsnrTJDP6JIQEAAwIAA3gAAz0E" alt="6.1.3" /><figcaption>6.1.3</figcaption></figure><p></p><p>做这题的时候完全没有任何思路，只尝试了一下用二阶导表达。但是显然二阶导不能用</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWpqxn_RkijWxHyplrD49wryXwqTmAACJRVrGz_BMFYL4Tj7tp9ynQEAAwIAA3gAAz0E" alt="6.1.5" /><figcaption>6.1.5</figcaption></figure><p></p><p>本题做的时候当时还没学为微分方程，所以没做出来。</p><p>这题 2 刷的时候虽然做出来了，但是花了大量的时间，原因有以下两点：</p><ol>
<li>被一阶线性非齐次微分方程的通解公式给影响了</li>
<li><span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span>，<span><span>ee</span><span><span><span></span><span>e</span></span></span></span> 的次方上面的式子假设是 <span><span>aln⁡xa\ln x</span><span><span><span></span><span>a</span><span></span><span>ln</span><span></span><span>x</span></span></span></span>，那么不可以变成 <span><span>ea⋅eln⁡xe^a\cdot e^{\ln x}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span></span></span></span></span><span></span><span>⋅</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>l</span><span>n</span></span><span></span><span>x</span></span></span></span></span></span></span></span></span></span></span></span>，原因很简单，<span><span>ee</span><span><span><span></span><span>e</span></span></span></span> 的乘法等于幂上的加法。</li>
</ol><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWtqxn__RgY0TYU0JZhCvqakOAj7hQACJhVrGz_BMFa3Ie5K8NoNBAEAAwIAA3gAAz0E" alt="6.1.7" /><figcaption>6.1.7</figcaption></figure><p></p><p>应该是做了一会儿没思路直接看的答案。</p><p>本题可以利用罗尔原话去做，具体就不讲了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWxqxoAdls5AyR4-cMgi0inNf4glMwACJxVrGz_BMFZtsNMZkHP-RwEAAwIAA3gAAz0E" alt="6.1.8" /><figcaption>6.1.8</figcaption></figure><p></p><p>这题证明的时候采用的是导数的定义，其实是可以做的，最后也是导向类似拉格朗日中值定理，但是当时做的时候完全没反应过来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAW1qxoBA4s9ryAcBg8ZBcoOnTSqeLQACKBVrGz_BMFbp397cH8cwRQEAAwIAA3gAAz0E" alt="6.1.9" /><figcaption>6.1.9</figcaption></figure><p></p><span><span><span>x2≥0x^2 \ge 0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>≥</span><span></span></span><span><span></span><span>0</span></span></span></span></span><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAW5qxoBysa_uHzBgde-eui-hxl-lcAACKRVrGz_BMFaaIAqcsmB3EAEAAwIAA3gAAz0E" alt="6.1.10" /><figcaption>6.1.10</figcaption></figure><p></p><p>这题做的是对的，不过除了构造法之外，还可以用拉格朗日中值定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAW9qxoCIELiOKArSZ0J1mLFn3jRhGAACKhVrGz_BMFbUg_WzH-p7AAEBAAMCAAN4AAM9BA" alt="6.1.12" /><figcaption>6.1.12</figcaption></figure><p></p><p>一刷时标记先跳过，结果也没看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXBqxoCe1h4ZQrk1C2WFXU0-uidOlAACKxVrGz_BMFZUxrAeUkeUcQEAAwIAA20AAz0E" alt="6.1.16" /><figcaption>6.1.16</figcaption></figure><p></p><p>这道题可以注意一下，可以看出有 3 个根，然后证唯一性可以用罗尔定理的推论来获得上界。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXFqxoC8zOFHEazEQWtcc79wHr1OTAACLBVrGz_BMFZ2m_HqUKBIowEAAwIAA3gAAz0E" alt="6.1.18" /><figcaption>6.1.18</figcaption></figure><p></p><p>本题没看完题目（求正实根）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXJqxoDzA1_5gAb9VNyl0-HHayYf-gACLRVrGz_BMFbRr9DHo4NCbwEAAwIAA20AAz0E" alt="6.1.20" /><figcaption>6.1.20</figcaption></figure><p></p><p>本题 1 刷时没做，2 刷时也没做，难度不高计算量很大，就放了。</p><p>但是可以注意一开始如何设函数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXNqxoEIBZAXEkuzBozZCl4BDoW8EgACLhVrGz_BMFYWHdE0gSWGVwEAAwIAA3gAAz0E" alt="6.1.21" /><figcaption>6.1.21</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXRqxoEavzqqagABp19wZKZqnMvQU7cAAi8Vaxs_wTBW57lbeNmy8W4BAAMCAAN4AAM9BA" alt="6.2.3" /><figcaption>6.2.3</figcaption></figure><p></p><p>本题和答案方法不一样，利用罗尔原话！</p><p>这道题我自己是在做的时候硬求导然后反复利用题设的结论。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXVqxoEvRJtO9jmSYvz3r_6fsN59GwACMBVrGz_BMFZq-5eLIIFq9wEAAwIAA3gAAz0E" alt="6.2.7" /><figcaption>6.2.7</figcaption></figure><p></p><p>没做出来。对于这类题在强化的时候总结为要证两可以相等的，用两次拉个两日/柯西中值去凑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXZqxoFJxGoYSm5xyoUPJjPxj9Zp7QACMhVrGz_BMFYTqt2eysazGAEAAwIAA20AAz0E" alt="6.2.9" /><figcaption>6.2.9</figcaption></figure><p></p><p>本题采用隐函数反带入做的，但是和 2 刷时的 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 那个一样，可以采用罗尔原话！</p></section><section><h3>张宇 30 讲基础高数 1 刷第 7 章<a href="#张宇-30-讲基础高数-1-刷第-7-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXdqxoFhLmcUHlCxDTHzNoh1ZkePjwACMxVrGz_BMFbn7tXXxIclMQEAAwIAA3gAAz0E" alt="7.1.1" /><figcaption>7.1.1</figcaption></figure><p></p><p>用定义去做</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXhqxoFxzX_BunoCjsT7nsNp6pJ_4QACNRVrGz_BMFZMRLAOWAP8pAEAAwIAA3gAAz0E" alt="7.2.1" /><figcaption>7.2.1</figcaption></figure><p></p><p>单位</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXlqxoGHMyoctb59W0RnPmG3fEbjbAACNhVrGz_BMFZc8ICXFAABHrcBAAMCAAN4AAM9BA" alt="7.2.3" /><figcaption>7.2.3</figcaption></figure><p></p><p>1 刷时没做。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 8 章<a href="#张宇-30-讲基础高数-1-刷第-8-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXpqxoG7zaimcgc6wT5ACXOBd_VOoAACNxVrGz_BMFaCAAHEvzf425kBAAMCAAN4AAM9BA" alt="8.1.1" /><figcaption>8.1.1</figcaption></figure><p></p><p>1 刷时没想到两边同时对 x 求导，需要注意这一点。同时求导可以消去积分号。</p><p>错题重刷时这题算错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXtqxoH4UC0kKXe3fLuseUVNYceahAACOBVrGz_BMFYMSa1-WXsNygEAAwIAA3gAAz0E" alt="8.1.4" /><figcaption>8.1.4</figcaption></figure><p></p><p>想到用几何法做了，但是在做的时候没有沉下心来捋清楚对应关系所以才做错了。沉下心来捋清楚关系其实不难。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAXxqxoIWtnstMEBKh5x92VpRldaURgACORVrGz_BMFYUb9_3LnN8QgEAAwIAA3gAAz0E" alt="8.1.5" /><figcaption>8.1.5</figcaption></figure><p></p><p>3 没想到用几何法去做，而 2 则是想当然的直接认为是对的。</p><p>事实上这题结合图像去做很简单。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAX1qxoIq31d59EfdT7B1KsX_gOMvUgACOhVrGz_BMFZ1Az-lg6BZcQEAAwIAA3gAAz0E" alt="8.1.6" /><figcaption>8.1.6</figcaption></figure><p></p><p>想到强化阶段时武忠祥老师的一个简单结论，如果变化和 n 程度相当，大概率是往定积分方向去想，所以先提出一个 1/n，然后去凑形式。</p><p>这题错是因为上下同时乘上 n，而不是一步步去凑形式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAX5qxoJBG3Muqb0nJgJbu8yuDj_zBgACOxVrGz_BMFZW1-vLS_NtwwEAAwIAA3gAAz0E" alt="8.1.9" /><figcaption>8.1.9</figcaption></figure><p></p><p>本题错在 2 个方面。第 1 是经典的错误标准的零分，<span><span>tan⁡π4=1\tan\frac{\pi}{4}=1</span><span><span><span></span><span>tan</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，而不是 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，<span><span>tan⁡π2\tan\frac{\pi}{2}</span><span><span><span></span><span>tan</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 不存在，而不是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>；第 2 是没有想到怎么放缩，也就是对放缩用的不熟练，这题是一个经典的放缩，并且在第 6 章的课后题有证明。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAX9qxoJXkv4Gfp6Ld_NFZNx-ZfA1dQACPBVrGz_BMFaYRSoiuWrbfAEAAwIAA3gAAz0E" alt="8.1.10" /><figcaption>8.1.10</figcaption></figure><p></p><p>没想到怎么做。对于含三角的式子，第一反应就应该是区间再现。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYBqxoJxsk1jN3q0T65UW__Io4v0CQACPRVrGz_BMFZflV8GKn_WYgEAAwIAA3gAAz0E" alt="8.1.11" /><figcaption>8.1.11</figcaption></figure><p></p><p>变限积分存在就连续，其他就是应用对于变限积分的讨论了。这题应该是不小心看到了答案，做的还是没问题的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYFqxoKrqAiodaoG0VPVmwG9rwc_zwACPhVrGz_BMFaWLr1jcAmAjQEAAwIAA3gAAz0E" alt="8.1.13" /><figcaption>8.1.13</figcaption></figure><p></p><p>导函数在该点存在不意味着导函数在该点连续。事实上这道题只需要说明导函数在该点存在就可以了，显然这道题导函数的左右极限都相等，所以存在导数。</p><p>又可以联想到此前的论证，函数极限存在和函数连续是两码事，函数的极限存在和 <span><span>lim⁡x→x0−f(x)=lim⁡x→x0+f(x)\lim\limits_{x\to x_0^-}f(x)=\lim\limits_{x\to x_0^+}f(x)</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span><span><span></span><span><span>−</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span><span><span></span><span><span>+</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 一样，但是 <span><span>lim⁡x→x0−f(x)=lim⁡x→x0+f(x)=f(x0)\lim\limits_{x\to x_0^-}f(x)=\lim\limits_{x\to x_0^+}f(x)=f(x_0)</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span><span><span></span><span><span>−</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span><span><span></span><span><span>+</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span> 才可以说明函数连续，这是一个我经常错误的点，需要注意。</p><p>当然这道题用结论做就好了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYJqxoLF4t2N2zDzr5WSBEZkQZX1UgACPxVrGz_BMFaxoIHZf267tQEAAwIAA3gAAz0E" alt="8.1.14" /><figcaption>8.1.14</figcaption></figure><p></p><p>这道题没有思路，但是放在 2 刷来看的话，其实绰绰有余，不断地利用绝对值不等式以及积分不等式就可以了，对于这类题，必要的时候也应该联想到拉格朗日中值定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYNqxoLYcBOherASuW2-eiaAGXgeOAACQBVrGz_BMFZP5IEj6c27sAEAAwIAA20AAz0E" alt="8.1.17" /><figcaption>8.1.17</figcaption></figure><p></p><p>这道题可以注意一下，是凭感觉直接做的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYRqxoL6Ek0hlp3hGUZkv3FaGJLe8QACQRVrGz_BMFa1MDld_2adrAEAAwIAA3gAAz0E" alt="8.1.18" /><figcaption>8.1.18</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYVqxoMGBUB_8SWoAawUTDtzTmYBSwACQhVrGz_BMFZPCRkNQ-EyLgEAAwIAA3gAAz0E" alt="8.1.19" /><figcaption>8.1.19</figcaption></figure><p></p><p>这两题放在一起讨论。这两题张宇的课本给的都是很玄学的做法，导致我完全不能理解这一块内容。事实上，对于反常积分而言，并不是所有的点都是在 0 或者在 + 无穷处无定义，1 这个点只是常用分界点，而不是必然分界点。</p><p>所以，对于第 18 题，观察到无定义点为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 和 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，所以分区间讨论，分成 <span><span>(0,12)\left(0,\frac{1}{2}\right)</span><span><span><span></span><span><span><span>(</span></span><span>0</span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span> 和 <span><span>(12,1)\left(\frac{1}{2},1\right)</span><span><span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span>1</span><span><span>)</span></span></span></span></span></span>。当 <span><span>x→0x\to0</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span>0</span></span></span></span>，可以发现 <span><span>ln⁡x\ln x</span><span><span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 无影响，所以由 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 积分可知 <span><span>a&lt;1a&lt;1</span><span><span><span></span><span>a</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>1</span></span></span></span>；当 <span><span>x→1x\to1</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span>1</span></span></span></span> 时，对 <span><span>ln⁡x\ln x</span><span><span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 进行变形可以得到 <span><span>x−1x-1</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>，对其进行讨论发现其无论如何都可以积出来，所以不影响收敛性。</p><p>对于 19 题是类似的，这里就不展开了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYZqxoMZHG2lEzvGHsqSvp6h455WwAACQxVrGz_BMFbzD16-YgfZ0QEAAwIAA3gAAz0E" alt="8.2.1" /><figcaption>8.2.1</figcaption></figure><p></p><p>没想到简单做法，在那里硬算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYdqxoM1o2nxpyCIlsokjbF7wVRDUQAC7g5rGz_BOFaeY9oL9JX_0gEAAwIAA3gAAz0E" alt="8.2.2" /><figcaption>8.2.2</figcaption></figure><p></p><p>和前文同质错误，也就是原函数，可积和变限的可导连续判断。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYhqxoNOFkCxy-kCVn14Iq_DNeSMxgAC7w5rGz_BOFYAAe7KOmpqx0gBAAMCAANtAAM9BA" alt="8.2.4" /><figcaption>8.2.4</figcaption></figure><p></p><p>本题没有踏踏实实计算，直接化简成了 <span><span>11+x2\frac{1}{\sqrt{1+x^2}}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>1</span><span>+</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 去做，很是低级。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYlqxoOJGEANvsg2chV87IHrn_RUzQAC8A5rGz_BOFYhefjQwX94mAEAAwIAA20AAz0E" alt="8.2.5" /><figcaption>8.2.5</figcaption></figure><p></p><p>没想到怎么做，本题是夹逼定理和积分的结合。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYpqxoOtzJbCea77wH5eqakLQECh1AAC8Q5rGz_BOFa2xWpBTIeotQEAAwIAA3gAAz0E" alt="8.2.6" /><figcaption>8.2.6</figcaption></figure><p></p><p>本题采用一个很低效的办法做，也就是定义，而且最后还因为+-错误而错误。事实上，这道题可以利用本章第 1 题的做法，两边同时求导，就很轻松能做出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAYxqxoQP_pMSsS67iBb2dSjwvjdLIgAC8g5rGz_BOFbFTbo8bklsxwEAAwIAA20AAz0E" alt="8.2.7" /><figcaption>8.2.7</figcaption></figure><p></p><p>和前文的敛散性判断同质错误。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 9 章<a href="#张宇-30-讲基础高数-1-刷第-9-章"><span>#</span></a></h3><p>关于这一章，计算问题非常的大，需要多复盘。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYZq0IUOF9oYnre-DVNlTiwqTruYlQACwxJrG6jniFY2dRKgKCzKPAEAAwIAA20AAz0E" alt="9.1.3" /><figcaption>9.1.3</figcaption></figure><p></p><p>1 刷，错题重刷等多次错误。包括但不限于对 a 的处理以及+c</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYdq0IUjd9D8Of9vc9ZyE4enDeLE7wACxBJrG6jniFaOHSA-_yPXkQEAAwIAA20AAz0E" alt="9.1.4" /><figcaption>9.1.4</figcaption></figure><p></p><p>1 刷采用换元法进行处理，做错了，2 刷忘+c。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYhq0IU7lX1bM0-7hMAKab7tbPYmYgACxRJrG6jniFbuenRwEBtWpAEAAwIAA20AAz0E" alt="9.1.5" /><figcaption>9.1.5</figcaption></figure><p></p><p>+c</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYlq0IVNN6yp9F7Uw1zmGplDRDnmUgACxxJrG6jniFanuXMlmHAPgwEAAwIAA20AAz0E" alt="9.1.6" /><figcaption>9.1.6</figcaption></figure><p></p><p>采用换元法，但是这道题题抄错了，题抄成 <span><span>f(ln⁡x)=ln⁡xexf(\ln x)=\frac{\ln x}{e^x}</span><span><span><span></span><span>f</span><span>(</span><span>ln</span><span></span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>l</span><span>n</span></span><span></span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 了。</p><p>+C</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYpq0IVh_ZhA5vLWOaa_fyFAcVp_sAACyBJrG6jniFalbkZqHVWoNQEAAwIAA20AAz0E" alt="9.1.7" /><figcaption>9.1.7</figcaption></figure><p></p><p>毫无思路。考虑到 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 的存在，猜测这道题应该是弄出来两项可以消掉或者可以合并。又考虑到三角恒等式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYtq0IV0_yYzu9zpeO8f-7tit8jYDAACyRJrG6jniFZHQzoqPi40ZAEAAwIAA20AAz0E" alt="9.1.8" /><figcaption>9.1.8</figcaption></figure><p></p><p>1 刷的时候极为轻视，将这题直接跳过了，强化阶段也选择性的跳过了这部分。事实上，结果就是 2 刷的时候第 8 题错的一塌糊涂。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYxq0IWJYQqa1XTUu_LJAvD0_O6H_AACyhJrG6jniFbktU-Dow2skAEAAwIAA20AAz0E" alt="9.1.9" /><figcaption>9.1.9</figcaption></figure><p></p><p>本题处理时对于 <span><span>x2+1x^2+1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 项用的直接是 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>，而不是 <span><span>Bx+CBx+C</span><span><span><span></span><span>B</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>C</span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBY1q0IWeI05c0m91mpFprqTCe5hhiwACyxJrG6jniFYin6_K4CMfGAEAAwIAA20AAz0E" alt="9.1.10" /><figcaption>9.1.10</figcaption></figure><p></p><p>对于 <span><span>arctan⁡x\arctan x</span><span><span><span></span><span>arctan</span><span></span><span>x</span></span></span></span> 的变形公式背错。我认为对于这种不应该去背公式，而应该求导完之后再算一次看看有没有问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBY5q0IWwzvJCkuXzwlOsKuDZOcL7hwACzBJrG6jniFbkkyx_dvXW6QEAAwIAA20AAz0E" alt="9.1.12" /><figcaption>9.1.12</figcaption></figure><p></p><p>算这道题的时候题抄错了，少抄了一个 <span><span>ln⁡\ln</span><span><span><span></span><span>ln</span></span></span></span>。另外可以注意一下区间再现。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBY9q0IX3FKvO4iPC8oq-FnlLMxeicwACzRJrG6jniFbP-TFUsUYLJQEAAwIAA20AAz0E" alt="9.1.14" /><figcaption>9.1.14</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZBq0IYGXsKpNUmqLBGA-6FZlHD5FAACzhJrG6jniFa9OnSddx0AAVQBAAMCAANtAAM9BA" alt="9.1.15" /><figcaption>9.1.15</figcaption></figure><p></p><p>这两题可以放一起讲。后面那题没去算，因为计算太复杂了。前面那题则是没想到可以利用 <span><span>arcsin⁡(sin⁡x)\arcsin(\sin x)</span><span><span><span></span><span>arcsin</span><span>(</span><span>sin</span><span></span><span>x</span><span>)</span></span></span></span> 去简便计算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZFq0IZplz4iUEDgAAE7_Vl_Hr91UB8AAs8Saxuo54hWdydzIwIz79kBAAMCAAN4AAM9BA" alt="9.1.18" /><figcaption>9.1.18</figcaption></figure><p></p><p>需要注意，这道题的结论的积分上限一直是 <span><span>π\pi</span><span><span><span></span><span>π</span></span></span></span>，其他变形另说，而不是一步到位。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZJq0IZ-5c3aKdri_N9CCvCiQlhsRgAC0BJrG6jniFZJpX4VYQABdJYBAAMCAAN4AAM9BA" alt="9.1.19" /><figcaption>9.1.19</figcaption></figure><p></p><p>一步步计算，本题变限积分求导的时候，一定要注意是 <span><span>x4x^4</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span></span></span></span>！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZNq0IaOvswOM6SIezOCErT0RU-AygAC0RJrG6jniFbticoPYA1s2AEAAwIAA20AAz0E" alt="9.1.20" /><figcaption>9.1.20</figcaption></figure><p></p><p>法线。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZRq0Ia_Xl0HwrE53rM-VoKrDxUvgwAC0hJrG6jniFadHttweRiYJgEAAwIAA3gAAz0E" alt="9.1.21" /><figcaption>9.1.21</figcaption></figure><p></p><p>第一是没想到应该拆绝对值。碰到绝对值想办法拆绝对值，这基本是铁律。</p><p>第二是理解错泰勒公式。这道题是 F(x) 展开式后面的式子，而不是里面的东西展开是这个式子。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZVq0IbRcGxLrdvm9TUGIf_Z4s7rpwAC0xJrG6jniFYqMY-3MLOw1QEAAwIAA3gAAz0E" alt="9.1.22" /><figcaption>9.1.22</figcaption></figure><p></p><p>这题在做的时候应该是认为里面的太复杂了，然后没敢化简。事实上，这题化简一下就可以迎刃而解了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZZq0IbsiocPAAFTOFN4JqPWiVZ8NVMAAtUSaxuo54hWvco1nvrjXTUBAAMCAANtAAM9BA" alt="9.1.27" /><figcaption>9.1.27</figcaption></figure><p></p><p>这道题应该是一直在那里想着怎么拆，对于这种题，一定要想一下三角换元。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZdq0IcKlAnBtLjuWwatNuKi79d_LQAC1hJrG6jniFau1o1v3PdD_QEAAwIAA20AAz0E" alt="9.1.28" /><figcaption>9.1.28</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZhq0IcVCaf0vJsD6alVKWA8g7z2pwAC1xJrG6jniFbSljB47fg_YQEAAwIAA3gAAz0E" alt="9.1.29" /><figcaption>9.1.29</figcaption></figure><p></p><p>这两题都没做，问题不大，和数学 1,3 相关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZlq0Ic0km0v7toNS_9pxKUzgRJf6wAC2BJrG6jniFbLZUC_CoX5uAEAAwIAA20AAz0E" alt="9.2.9" /><figcaption>9.2.9</figcaption></figure><p></p><p>做的时候没处理好连续。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZpq0IdH3WGd7vZeNiKkjlFIni0LhAAC2RJrG6jniFZMN-cOkFJeGgEAAwIAA20AAz0E" alt="9.2.10" /><figcaption>9.2.10</figcaption></figure><p></p><p>定义，<span><span>tan⁡x\tan x</span><span><span><span></span><span>tan</span><span></span><span>x</span></span></span></span> 在 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 上无定义。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZtq0IddSxpwJh0N7M5TvXmiitXc7QAC2hJrG6jniFbo3M4PN3a1JQEAAwIAA20AAz0E" alt="9.2.11" /><figcaption>9.2.11</figcaption></figure><p></p><p>不会做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZxq0IglwPo-21rQxPDlOGRdRAqvEQAC3RJrG6jniFbl6voVldSHhQEAAwIAA20AAz0E" alt="9.2.13" /><figcaption>9.2.13</figcaption></figure><p></p><p>没有想到可以先利用奇偶性化简，导致做出来很复杂，然后计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZ1q0Ig3FDQ4KeR2Fd_CJ1MpJxDs5wAC3hJrG6jniFYMcC39yaq6FgEAAwIAA20AAz0E" alt="9.2.16" /><figcaption>9.2.16</figcaption></figure><p></p><p>思路正确，但当令 <span><span>tx=utx=u</span><span><span><span></span><span>t</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>u</span></span></span></span> 进行变量代换时，对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，<span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 和 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 之间谁是变量谁是常量混淆。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZ5q0IhHRsFi1P9AXuWByU3BJgEefwAC3xJrG6jniFY4-Kxk0tkzLQEAAwIAA20AAz0E" alt="9.2.17" /><figcaption>9.2.17</figcaption></figure><p></p><p>没考虑定义域。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 10 章<a href="#张宇-30-讲基础高数-1-刷第-10-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBZ9q0IhcifX4W-nujniHwxVm7RJFzgAC4BJrG6jniFYDcP-1ApGRiQEAAwIAA3gAAz0E" alt="10.1.1" /><figcaption>10.1.1</figcaption></figure><p></p><p>没有想好定义域和值域，也没有画图直接想当然做，导致减反了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBaBq0IhzBcPq3Yz-JW3HAAFQinNZvHsAAuESaxuo54hWC60NIfCLhAoBAAMCAAN4AAM9BA" alt="10.1.2" /><figcaption>10.1.2</figcaption></figure><p></p><p>对于本类题无从下手，事实上这种题相当于换元。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBaFq0IiKk7lQQxJf1aMCj8EkbR2HtAAC4hJrG6jniFbu1qzOudM8aQEAAwIAA20AAz0E" alt="10.1.3" /><figcaption>10.1.3</figcaption></figure><p></p><p>对于这种题没有头绪，但是事实上这种常见曲线需要背诵。另外需要注意其定义域。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBaJq0IikzPNwFE4HZCubJATpKId-4AAC4xJrG6jniFZE8vUPvhXQ7AEAAwIAA20AAz0E" alt="10.1.4" /><figcaption>10.1.4</figcaption></figure><p></p><p>对于这题想到了这道题有很多个区间，但是没想到要分成 <span><span>kπ∼(k+1)πk\pi\sim(k+1)\pi</span><span><span><span></span><span>k</span><span>π</span><span></span><span>∼</span><span></span></span><span><span></span><span>(</span><span>k</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span>)</span><span>π</span></span></span></span> 讨论，这点需要着重注意。另外可以注意一下等比数列的计算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBaNq0IjQH9Jc_KpcCie0cxkYn4LaOgAC5BJrG6jniFb80qVj2vwjgwEAAwIAA3gAAz0E" alt="10.1.5" /><figcaption>10.1.5</figcaption></figure><p></p><p>第一，注意定义域；第二，计算错误，最后这道题没有除以 2。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBaRq0IjmvINWDJ45vLSiaXA63SDFdQAC5RJrG6jniFZrEqyC0y-naAEAAwIAA3gAAz0E" alt="10.1.6" /><figcaption>10.1.6</figcaption></figure><p></p><p>本题直接列公式硬算，但是最后在换元法的时候积分上下限理解错误。</p><p>但是我觉得这道题不应该硬算，而应该利用强化课武忠祥老师的方法去做，这样这道题就不会碰到什么很神秘的问题了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBaVq0Ij49fdT3Zm-56Q1EASnP9Ol4QAC5hJrG6jniFaD8jyZjjqTDwEAAwIAA3gAAz0E" alt="10.1.7" /><figcaption>10.1.7</figcaption></figure><p></p><p>采用微元法第 2 问计算错误。和上一题类似的，对于这类题用二重积分的思想去解题。这里微元法的错误来自于对锥形的计算错误，因为这道题的锥形是绕着 <span><span>x=1x=1</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 去算的，所以不可以粗浅的理解为绕着 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 轴转那样去算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBaZq0IkVFqzqE1vOUDTN0aUKxRBkfgAC5xJrG6jniFaWsxI1mcheXQEAAwIAA3gAAz0E" alt="10.1.8" /><figcaption>10.1.8</figcaption></figure><p></p><p>对于变上限积分理解不足。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBadq0IkpZI6SxtRpxiuX4FyPf_bWkwAC6BJrG6jniFbZelgsbb1DeQEAAwIAA3gAAz0E" alt="10.1.14" /><figcaption>10.1.14</figcaption></figure><p></p><p>没做。利用强化课的二重积分思想即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBahq0Ik-AAGzYDesV5K8mWJGTMZG-IIAAukSaxuo54hWW8tZDkCM7fEBAAMCAAN4AAM9BA" alt="10.2.3" /><figcaption>10.2.3</figcaption></figure><p></p><p>属于低级错误。对 1/y 积分，求出来是 lny，而不是-lny。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBalq0IlTmpIsrbfW-ZYAAde8sX96myEAAuoSaxuo54hWQ3NxsUje_EIBAAMCAAN4AAM9BA" alt="10.2.7" /><figcaption>10.2.7</figcaption></figure><p></p><p>漏看范围，以及提取因子提取错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBapq0Il-jN9uI9rJin5S5NobmLsjMQAC6xJrG6jniFaBkrLi7svVWAEAAwIAA3gAAz0E" alt="10.2.9" /><figcaption>10.2.9</figcaption></figure><p></p><p>微元法的锅了，这道题采用二重积分思想很快。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 11 章<a href="#张宇-30-讲基础高数-1-刷第-11-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBatq0ImQYM93Yo7iKduEwj5bv0xjWwAC7BJrG6jniFbdzy7kK-QNswEAAwIAA3gAAz0E" alt="11.1.1" /><figcaption>11.1.1</figcaption></figure><p></p><p>本题错在这几个方面。第 1，没想到变限积分；第 2，关于第 2 问，把 e 踢出去，而不是把 f(x) 提出去。这样犯了两个问题，其一，利用推广后的积分中值定理需要注意内部是不变号的，其二，就算 f(x) 是不变号的，那么提取出去的东西会有一个很抽象的问题，那就是随着 n 的变化，ε会变。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBaxq0Imqu75OqGlHMnHT_nDNWe_pdAAC7RJrG6jniFaGUmsMSG7mIQEAAwIAA3gAAz0E" alt="11.1.3" /><figcaption>11.1.3</figcaption></figure><p></p><p>夹逼定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBa1q0Im9XeQQ1jw7cw9VOyDyg6cFowAC7hJrG6jniFb-bPD3hx6TCQEAAwIAA3gAAz0E" alt="11.1.5" /><figcaption>11.1.5</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBa5q0InOZujiyIxjSbqn2UfPhfrWJgAC7xJrG6jniFYcTE3VhANGWQEAAwIAA3gAAz0E" alt="11.1.6" /><figcaption>11.1.6</figcaption></figure><p></p><p>没做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBbdq0ItiN-eg7runYZWPW_1egE3fFQAC_hJrG6jniFYUVfeh7_9weAEAAwIAA3gAAz0E" alt="11.1.7" /><figcaption>11.1.7</figcaption></figure><p></p><p>这道题的问题本质上来源于对变限积分的不熟悉。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBbhq0It5_89SP3xjoicDMxqyXoH0jQACARNrG6jniFZWjuvIKSaLHQEAAwIAA3gAAz0E" alt="11.1.8" /><figcaption>11.1.8</figcaption></figure><p></p><p>这道题想到利用两次拉格朗日中值定理并不难，但是难的是想到放缩这里要拆开放缩。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBblq0IuNkQb8nuHUkW-hysfhPmJ52AACAhNrG6jniFY7Cib_qM3G3gEAAwIAA3gAAz0E" alt="11.1.10" /><figcaption>11.1.10</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBbpq0IuZ07LleKIIO8Uxy-aMAlHRzQACAxNrG6jniFaw18GrxCn0-wEAAwIAA3gAAz0E" alt="11.1.11" /><figcaption>11.1.11</figcaption></figure><p></p><p>这两题放在一起讲。本质是因为路径依赖，始终想到利用拉格朗日中值定理。但是事实上除了中值定理之外，面对积分还有两个处理路径。第一是分部积分，第二是牛莱公式。在拉格朗日中值定理走不通的情况下，可以考虑用分部积分或者牛莱公式，而且对于分部积分的考虑应该提前。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBbtq0Iy9PY5DWtIKk8qu3WoFx4pHwwACBBNrG6jniFZpna1pWXUQIQEAAwIAA3gAAz0E" alt="11.2.1" /><figcaption>11.2.1</figcaption></figure><p></p><p>没想到积分中值定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBbxq0I08S79_JUWmUQ6jFQ1S3APunwACBRNrG6jniFbKe_vzLWbPZgEAAwIAA20AAz0E" alt="11.2.2" /><figcaption>11.2.2</figcaption></figure><p></p><p>没想清楚本质是在证明什么。</p><p>这道题只需要证明里面的大于等于 0 即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBb1q0I1z9LAySWm8cmP6RUdzILqfnwACBhNrG6jniFbC85MjZE31VQEAAwIAA3gAAz0E" alt="11.2.3" /><figcaption>11.2.3</figcaption></figure><p></p><p>和 11.10，11.11 一样。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBb5q0I2ocVYQHOCHoFujNmouiNKmFgACCBNrG6jniFbQtNfObR_eiAEAAwIAA3gAAz0E" alt="11.2.4" /><figcaption>11.2.4</figcaption></figure><p></p><p>这道题 1 刷的时候完全没想明白在干啥，事实上利用一个很“土”的办法就是变量代换 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 为 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，迎刃而解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBb9q0I2_yxc66lYAAXUyb8yxr8wTSw4AAgkTaxuo54hW55pOWWpq5kEBAAMCAAN4AAM9BA" alt="11.2.6" /><figcaption>11.2.6</figcaption></figure><p></p><p>泰勒公式背错了。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 12 章<a href="#张宇-30-讲基础高数-1-刷第-12-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcBq0I3WKDViArvCXeFmeusR6LBINAACChNrG6jniFb2vwX3Kls1AQEAAwIAA3gAAz0E" alt="12.1.1" /><figcaption>12.1.1</figcaption></figure><p></p><p>“又”</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcFq0I3w_d-swVwOAAFKglnqhuVP-AwAAgsTaxuo54hWTh7SXKrXXfsBAAMCAAN4AAM9BA" alt="12.1.2" /><figcaption>12.1.2</figcaption></figure><p></p><p>搞清楚坐标系的位置，对于这类题，一定要搞清楚 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>ss</span><span><span><span></span><span>s</span></span></span></span> 之间到底分别是什么。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcJq0I4KHxYZTMGUq4QW77LkAk3oDAACDBNrG6jniFacDzL6W14wjAEAAwIAA3gAAz0E" alt="12.1.3" /><figcaption>12.1.3</figcaption></figure><p></p><p>这里的 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 其实就是 <span><span>FF</span><span><span><span></span><span>F</span></span></span></span>（公式里的），按照自己的理解就好了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcNq0I4cInAMzLGyZ1CAW9Fy-_Ge8QACDRNrG6jniFaL5WRW3xirOAEAAwIAA3gAAz0E" alt="12.2.3" /><figcaption>12.2.3</figcaption></figure><p></p><p>不会做。对于物理应用题，事实上强化那块搞一下才真正大概搞明白怎么个回事，对谁积分，谁是变量等，以及抽水做功是对重力做功，而不是对压力做功。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 13 章<a href="#张宇-30-讲基础高数-1-刷第-13-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcRq0I42ELn35W3Pogm_CPTUjgrO8wACDhNrG6jniFZA7YVuUHARhQEAAwIAA20AAz0E" alt="13.1.1" /><figcaption>13.1.1</figcaption></figure><p></p><p>本题没想到用夹逼定理，对于这类题，根据强化经验可知，先判断是否齐次，然后一般采用夹逼定理去证明。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcVq0I5HVdaCQJqyVA86ne5sbLEmgwACDxNrG6jniFaIZDgI6R3FtgEAAwIAA20AAz0E" alt="13.1.4" /><figcaption>13.1.4</figcaption></figure><p></p><p>本题巧合做对，事实上这道题如果采用换元法问题会很大，即便换元了，还是里面的 t 还是 t，又不会发生变化。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcZq0I5cxfP0PemqXzc0v53mXVKvoAACEBNrG6jniFYG6PZxjzZoYQEAAwIAA20AAz0E" alt="13.1.5" /><figcaption>13.1.5</figcaption></figure><p></p><p>对于这题需要注意这几个问题：第一，<span><span>u2u^2</span><span><span><span></span><span><span>u</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 抄错了；第二，换元法之后的代回问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcdq0I5t7kZUVNPqWQa_hJV0FAABKCAAAhETaxuo54hWEOfgqTu53moBAAMCAAN4AAM9BA" alt="13.1.9" /><figcaption>13.1.9</figcaption></figure><p></p><p>本题巧合做对。原因是没有对 <span><span>f1f_1</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 等进行求导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBchq0I6Be7N8oOlH4Jkbq7EAAe6N5i4AAhITaxuo54hWxgUvr3UfyO8BAAMCAAN4AAM9BA" alt="13.1.10" /><figcaption>13.1.10</figcaption></figure><p></p><p>关于这题主要是对记号理解不清晰，对于第一个式子求导，是对 <span><span>f(x,ex)f(x,e^x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span>)</span></span></span></span> 求导，而不是对 <span><span>f(x,y)f(x,y)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span> 求偏导，这种题可以联想到先代后求和先求后代。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBclq0I6VZMV4MxaXndnjbNH5Rl52HwACExNrG6jniFb4QkcQyPyvHwEAAwIAA3gAAz0E" alt="13.1.11" /><figcaption>13.1.11</figcaption></figure><p></p><p>想当然没取倒数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcpq0I6q8p3k2533icAWzwGSJ-KrJgACFRNrG6jniFa7fGtZT7tFaAEAAwIAA3gAAz0E" alt="13.1.14" /><figcaption>13.1.14</figcaption></figure><p></p><p>没想到举反例：<span><span>(y−x)3(y-x)^3</span><span><span><span></span><span>(</span><span>y</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span><span>)</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBctq0I66SC9Djaavv7VrS0Taomyz2QACFhNrG6jniFZIZXSdoKYazAEAAwIAA3gAAz0E" alt="13.1.16" /><figcaption>13.1.16</figcaption></figure><p></p><p>公式法求的时候要有负号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBcxq0I7PJiZgGe2HPkPApPr1iaBWogACFxNrG6jniFbD4I53bigcuwEAAwIAA3gAAz0E" alt="13.1.17" /><figcaption>13.1.17</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBc1q0I7btNR27yR9rdOhrkf6J3vMRwACGBNrG6jniFamvDHwMHd3WwEAAwIAA3gAAz0E" alt="13.1.18" /><figcaption>13.1.18</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBc5q0I7oJaaYz9mHuoe69qlgmyGS0gACGRNrG6jniFbx10gheWWfEgEAAwIAA3gAAz0E" alt="13.1.19" /><figcaption>13.1.19</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBc9q0I715soH0sk4HCXDW0HpYg5eeAACGhNrG6jniFbB5mHTuFVSJgEAAwIAA3gAAz0E" alt="13.1.20" /><figcaption>13.1.20</figcaption></figure><p></p><p>本题是不封闭曲线（也就是得考虑区间），所以使用拉格朗日乘数法算出来的只是边界条件。</p><p>事实上这道题 2 刷的时候用了三角换元，迎刃而解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdBq0I8LsMkdkOd4oNLmtnUwt9P2ogACGxNrG6jniFZJaIwo_H8_pAEAAwIAA3gAAz0E" alt="13.1.22" /><figcaption>13.1.22</figcaption></figure><p></p><p>这题当时 1 刷的时候没看懂是什么意思，其实很简单，先利用偏积分求出原函数，然后因为是面积内，所以需要考虑边界和本身。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdFq0I8ika4mbFzD2b5RnQ1NO1_-rAACHBNrG6jniFYhI4pq_vXIfQEAAwIAA20AAz0E" alt="13.2.3" /><figcaption>13.2.3</figcaption></figure><p></p><p>属于低级错误，本题做对了，选项选错了。</p></section><section><h3>张宇 30 讲基础高数 1 刷第 14 章<a href="#张宇-30-讲基础高数-1-刷第-14-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdJq0I83nmFn4My-NDxXqyCS3L-PRAACHRNrG6jniFZ5nW14pjFa4gEAAwIAA3gAAz0E" alt="14.1.1" /><figcaption>14.1.1</figcaption></figure><p></p><p>对于本题应该利用定义求解，没有理解定义。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdNq0JAgbmWVyzwFQPHo8ZYc2QQBSgACHhNrG6jniFYbwJA7Ze87jQEAAwIAA20AAz0E" alt="14.1.2" /><figcaption>14.1.2</figcaption></figure><p></p><p>对于这道题，没有想到用二元积分的积分中值定理去做，对于二元积分的积分中值定理，可以类比一元的去理解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdRq0JB6PzDLgGqMqgjxZplHi_wkDwACHxNrG6jniFZZTOB93Q2L_gEAAwIAA3gAAz0E" alt="14.1.3" /><figcaption>14.1.3</figcaption></figure><p></p><p>对于这题，没有理解什么是 <span><span>x−yx-y</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>y</span></span></span></span> 给的条件是什么，也是用定义去做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdVq0JCgCUjtfjt_P1rOUjtsj_kfugACIBNrG6jniFZJZlmjEc8cwQEAAwIAA20AAz0E" alt="14.1.4" /><figcaption>14.1.4</figcaption></figure><p></p><p>对于这题犯了一个经典的错误，也就是 <span><span>12(12x+12x)=12\frac{1}{2}\left(\frac{1}{2}x+\frac{1}{2}x\right)=\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>x</span><span></span><span>+</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>x</span><span><span>)</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdZq0JC3vIV6k36_lXq59RfyzWmf3gACIRNrG6jniFZCMLMH3Ua3dQEAAwIAA20AAz0E" alt="14.1.5" /><figcaption>14.1.5</figcaption></figure><p></p><p>对于这种题，曾经一直执着于直接带入去计算，事实上只需要画出积分区间就很简单了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBddq0JDLyqi6ygU5cIDXKQRBIkSItgACIhNrG6jniFYVCz00cE5lfAEAAwIAA3gAAz0E" alt="14.1.6" /><figcaption>14.1.6</figcaption></figure><p></p><p>对于这题是对 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 积分，尤其需要注意是对谁积分，二刷的时候也差点没捋过来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdhq0JH8Ky-fq8-0aXCeqc5ZcRg_YQACIxNrG6jniFanlyIU7tdyDAEAAwIAA3gAAz0E" alt="14.1.8" /><figcaption>14.1.8</figcaption></figure><p></p><p>没有想到轮换对称性在那里硬解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdlq0JIY-O3fuUTH_PSzILb7TT_YnAACJBNrG6jniFb74k2JQqo7KAEAAwIAA3gAAz0E" alt="14.1.9" /><figcaption>14.1.9</figcaption></figure><p></p><p>没有想到利用极坐标且这道题跳步导致计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdpq0JNibt-1DtiFYo6faR1vKUXJ1QACJhNrG6jniFay-Fi_pMbM4gEAAwIAA3gAAz0E" alt="14.1.10" /><figcaption>14.1.10</figcaption></figure><p></p><p>积分区域搞成整个圆。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBdtq0JN17Me9eMZivX__cWKrzTvQ3wACJxNrG6jniFa3zWxZtfQvbgEAAwIAA3gAAz0E" alt="14.1.11" /><figcaption>14.1.11</figcaption></figure><p></p><p>这俩没啥好说的，直接跳。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBd1q0JPnRZ2oYwy7JBukfIrsBnC2xQACKBNrG6jniFbs42gVq-jOhgEAAwIAA20AAz0E" alt="14.1.13" /><figcaption>14.1.13</figcaption></figure><p></p><p>本质这道题 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 不会算是对极限的定义理解不清晰以及对知识点迁移的能力还是不够。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBd5q0JQGYhHMFv5HoQr4J82S-1A_OQACKRNrG6jniFbmiprxzvH3UwEAAwIAA20AAz0E" alt="14.1.14" /><figcaption>14.1.14</figcaption></figure><p></p><p>考虑轮换对称性，然后被薄纱。对于这种题需要就事论事去分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBd9q0JQg402S1xAFYsuF4-2ct9_ciQACKhNrG6jniFa8H0BFwyFEgQEAAwIAA3gAAz0E" alt="14.2.4" /><figcaption>14.2.4</figcaption></figure><p></p><p>最后一步。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBeBq0JRpCW2X60YSqMJ5PpV1LerxvQACKxNrG6jniFYX0MgHFU5hQgEAAwIAA3gAAz0E" alt="14.2.5" /><figcaption>14.2.5</figcaption></figure><p></p><p>没想到怎么做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBeFq0JR7I7w9MOgfmoXInX-pzc4ThgACLBNrG6jniFYD-NrzQFsOkwEAAwIAA3gAAz0E" alt="14.2.8" /><figcaption>14.2.8</figcaption></figure><p></p><p>没想到先化简。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBeJq0JSN_VFMxaUi3iaQHDlz2MRAowACLRNrG6jniFbUeRvpPK5zbwEAAwIAA20AAz0E" alt="14.2.11" /><figcaption>14.2.11</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBeNq0JSYL7fAPV9LFByNKO6Yw-cJqgACLhNrG6jniFa1bG0ytKn7nAEAAwIAA3gAAz0E" alt="14.2.12" /><figcaption>14.2.12</figcaption></figure><p></p><p>对于这两题没有稳扎稳打去分析，非常浮躁（这两题最开始先跳了，回头再来写的）</p></section><section><h3>张宇 30 讲基础高数 1 刷第 15 章<a href="#张宇-30-讲基础高数-1-刷第-15-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBeRq0JTCC6jPXt2kk0C5ARn_Ll-B1QACLxNrG6jniFa45M4NFC_BLQEAAwIAA20AAz0E" alt="15.1.5" /><figcaption>15.1.5</figcaption></figure><p></p><p>本题没想到积分怎么积分，其实这个积分也是经典积分：<span><span>11+sin⁡u\frac{1}{1+\sin u}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>1</span><span>+</span><span><span>s</span><span>i</span><span>n</span></span><span></span><span>u</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBeVq0JTUpReL5rmLjLvxVXVfPspisQACMBNrG6jniFYeMFOxSYg9ygEAAwIAA3gAAz0E" alt="15.1.6" /><figcaption>15.1.6</figcaption></figure><p></p><p>本题没有辨析清楚 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 和 <span><span>YY</span><span><span><span></span><span>Y</span></span></span></span> 的区别。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBeZq0JTuUt1WPUOc_EIDuY73oI5X-gACMRNrG6jniFZ9urUYKZ-eTgEAAwIAA3gAAz0E" alt="15.1.8" /><figcaption>15.1.8</figcaption></figure><p></p><p>本题应该辨析清楚 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 和 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的关系，这道题采用 <span><span>dxdy\frac{\mathrm{d}x}{\mathrm{d}y}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>y</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 便迎刃而解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBedq0JUSV7quW86A-Fn6Byl0RnwBmgACMhNrG6jniFZ9cgMvNOXZRgEAAwIAA3gAAz0E" alt="15.1.9" /><figcaption>15.1.9</figcaption></figure><p></p><p>这里 1 刷的时候是没有搞明白变限积分函数和不定积分的联系是什么，所以没有联想起来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBehq0JUkSYnCEayoDLRuJdZ-A1p6yQACMxNrG6jniFY76KLVnmc08gEAAwIAA3gAAz0E" alt="15.1.10" /><figcaption>15.1.10</figcaption></figure><p></p><p>本题错误原因和上一题类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBelq0JVDWwlAxkwiyWgwNjkVZqnsZgACNBNrG6jniFZ0KE1xby0tvgEAAwIAA3gAAz0E" alt="15.1.12" /><figcaption>15.1.12</figcaption></figure><p></p><p>对于这一题是利用换元法，但是在写这道题的时候却进入误区，惯性思维直接 <span><span>dydx\frac{\mathrm{d}y}{\mathrm{d}x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 转换为 <span><span>dpdy\frac{\mathrm{d}p}{\mathrm{d}y}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>y</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>p</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，而没有就题论题去分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBepq0JVV2-120tgNg-sqKO7VItSQ3QACNRNrG6jniFbPKFK9GaKgYAEAAwIAA3gAAz0E" alt="15.1.15" /><figcaption>15.1.15</figcaption></figure><p></p><p>这道题在转换为特征方程的时候错误，所以还是一步步计算。</p><p>后面的题 1 刷的时候都没做，需要注意的是做了一道物理题，但是要分辨清楚变化率的正负性。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBetq0JVnYcnhosTJi4xrmoTo8o5CYAACNhNrG6jniFay-k32lBxxXgEAAwIAA3gAAz0E" alt="15.2.1" /><figcaption>15.2.1</figcaption></figure><p></p><p>本题错在想当然上面，和 2 刷的时候的一个错误点（也就是没有想清楚 2 重根）类似。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBexq0JWHW_I4xQ2_8VEvJfIv9oJABgACNxNrG6jniFabVyFWo6oB_gEAAwIAA3gAAz0E" alt="15.2.2" /><figcaption>15.2.2</figcaption></figure><p></p><p>本题没有搞懂怎么做，但是其实慢慢分析能做出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBe1q0JWXR5fVnOyS-vMxREO_Zoe_VQACOBNrG6jniFYGlMxHAAHtVt8BAAMCAANtAAM9BA" alt="15.2.6" /><figcaption>15.2.6</figcaption></figure><p></p><p>关于这道题，手生 + 计算量大，所以没算完。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBe5q0JWnGVFjdZvAX1cuA6LENZEbwQACORNrG6jniFamoVrVPaJ-wQEAAwIAA20AAz0E" alt="15.2.10" /><figcaption>15.2.10</figcaption></figure><p></p><p>本题错在没有一点一点分析背后的本质，所以心虚没做对。</p></section></section>
<section><h2>三大计算积分篇<a href="#三大计算积分篇"><span>#</span></a></h2></section>
<section><h2>张宇 30 讲基础线代 1 刷（补）<a href="#张宇-30-讲基础线代-1-刷补"><span>#</span></a></h2><section><h3>张宇 30 讲基础线代 1 刷第 1 章<a href="#张宇-30-讲基础线代-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBe9q0JX64p_eJp4IMVKrLgvy0J2KAAM6E2sbqOeIVm-iUYRompU2AQADAgADbQADPQQ" alt="1.1.1" /><figcaption>1.1.1</figcaption></figure><p></p><p>本题错误原因为第 3 行第 4 列的 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span> 抄成了 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfBq0JYMCtZFtb2-XdrqVcjQsQ816QACOxNrG6jniFa9zaY7AQ1NIwEAAwIAA20AAz0E" alt="1.1.2" /><figcaption>1.1.2</figcaption></figure><p></p><p>本题错误原因为行列式不是矩阵，对某一行乘上一个 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span>，那么外面需要除以一个 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span>，而不是什么都不做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfFq0JZhvFpHbJBXHJYQsaI1TTLPJQACPBNrG6jniFZY5BsvTDGrYgEAAwIAA20AAz0E" alt="1.1.4" /><figcaption>1.1.4</figcaption></figure><p></p><p>在全部加到第 1 行提取出来之后不会做了。这道题属于经典题，需要注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfJq0JaIQnsxiuZcPaRTaqjX5YEiVwACPRNrG6jniFZR4J6bGttqvQEAAwIAA20AAz0E" alt="1.1.6" /><figcaption>1.1.6</figcaption></figure><p></p><p>本题硬做的，没想到范德蒙行列式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfNq0JaZUm4ygvwhMo_gsw1tMGB5UQACPhNrG6jniFZA-93IAuUIfAEAAwIAA3gAAz0E" alt="1.1.7" /><figcaption>1.1.7</figcaption></figure><p></p><p>三对角矩阵用递推法，本题硬做没做出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfRq0JazU6mQz-sjbDL4dquByZZkJAACPxNrG6jniFYhtIZkuXln_gEAAwIAA20AAz0E" alt="1.1.8" /><figcaption>1.1.8</figcaption></figure><p></p><p>硬算然后算错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfVq0JbY3viiblx73UI7GLpSMyaqEQACQBNrG6jniFZmRi0GX7H4uQEAAwIAA20AAz0E" alt="1.1.9" /><figcaption>1.1.9</figcaption></figure><p></p><p>只想到了一边，没想到另一边。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfZq0Jbr2jJEVFBSLgX7qneVBOMl6wACQRNrG6jniFadqhtH_6sl1wEAAwIAA3gAAz0E" alt="1.1.11" /><figcaption>1.1.11</figcaption></figure><p></p><p>可拆分矩阵，再做一遍果然能有新的不同理解！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfdq0Jb7CMP60TDIwyEj8rCQcDID1gACQhNrG6jniFYjHo2yJZsdbQEAAwIAA3gAAz0E" alt="1.1.12" /><figcaption>1.1.12</figcaption></figure><p></p><p>对概念的理解，没想到替换行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfhq0Jcae8dUECFIg62A85P3lhKECQACQxNrG6jniFaPRwftqM6ZgwEAAwIAA3gAAz0E" alt="1.1.13" /><figcaption>1.1.13</figcaption></figure><p></p><p>再做一遍确有不晓得收获，对于这道题一开始完全没有意识到是什么意思，也就是学了后面的才知道这道题应该怎么分析，用矩阵不等式，而不是像答案里这样用反证法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBflq0JcqWwzHCqd733Vqunabv0Q6lwACRBNrG6jniFZ18CS2_JxlkQEAAwIAA3gAAz0E" alt="1.2.1" /><figcaption>1.2.1</figcaption></figure><p></p><p>第 1 题，第 3 题没做，除了硬解之外没什么好方法。</p><p>第 2 题直接带进去了，没有考虑是否应该变号。</p></section><section><h3>张宇 30 讲基础线代 1 刷第 2 章<a href="#张宇-30-讲基础线代-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfpq0JdA30DM-cmbqZwiIOxANEQCJgACRRNrG6jniFZb3HJuExFBfgEAAwIAA3gAAz0E" alt="2.1.1" /><figcaption>2.1.1</figcaption></figure><p></p><p>本题没想到可以中间合并，需要注意的是，不要把矩阵当一个简单的 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>，<span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 数值元素看待 0。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBftq0JduZbJJoW_0wI_fJ6CHsf6K4gACRxNrG6jniFZ6Dh8NTmgSrgEAAwIAA20AAz0E" alt="2.1.2" /><figcaption>2.1.2</figcaption></figure><p></p><p>本题犯了一个经典的错误，标准的零分，那就是将 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 先变形成好算的样子再求幂，先变形意味着 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 不再是原本的 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBfxq0Je96WOARZxfgk1atRWs_1zduwACSBNrG6jniFb0ESTKN-sYcAEAAwIAA20AAz0E" alt="2.1.3" /><figcaption>2.1.3</figcaption></figure><p></p><p>本题是没想到可以将 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 拆出来，事实上对于这种题后续直接用求相似的方式去解就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBf1q0JfZpG6brh72mmg2QV4rqqEaeAACSRNrG6jniFZZ-590MOBNbgEAAwIAA3gAAz0E" alt="2.1.5" /><figcaption>2.1.5</figcaption></figure><p></p><p>本题没有思路。事实上需要将二者联系起来，也就是找一个可逆矩阵联系起来就好了。</p><p>多个可逆矩阵相乘一定是可逆矩阵，用行列式证明即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBf5q0Jf5KCwCif71fqZBMLlKUGYiagACShNrG6jniFYK7eq6AR7pCgEAAwIAA3gAAz0E" alt="2.1.7" /><figcaption>2.1.7</figcaption></figure><p></p><p><span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 是竖着写。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBf9q0JgHVTZLVrxTPNyiQVts6j0u4AACSxNrG6jniFZZUNfjX92flAEAAwIAA20AAz0E" alt="2.1.8" /><figcaption>2.1.8</figcaption></figure><p></p><p>算出 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 后，第一行第三列符号抄反。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgABatCYGGzmcNf46vzz3LYpojp0L2cAAkwTaxuo54hWhD3425z2QygBAAMCAAN4AAM9BA" alt="2.1.10" /><figcaption>2.1.10</figcaption></figure><p></p><p>忘记拉普拉斯定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgFq0JgsF8daY4E03oWsMtfsCv7dagACTRNrG6jniFbriFO_DaB8PwEAAwIAA3gAAz0E" alt="2.1.11" /><figcaption>2.1.11</figcaption></figure><p></p><p>提取提出去的时候要 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次方，需要注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgJq0Jg_LHU2SfB-P3bc41jka6gJ2gACThNrG6jniFbSRS9sfAb-pgEAAwIAA3gAAz0E" alt="2.1.17" /><figcaption>2.1.17</figcaption></figure><p></p><p>本题错误原因在使用伴随矩阵提出去的时候没有按照行列式去算，也就是没有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次方。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgNq0JhWYNOpCnpo5gXaiWevtXfHqAACTxNrG6jniFZcHFybIRQGBgEAAwIAA3gAAz0E" alt="2.1.18" /><figcaption>2.1.18</figcaption></figure><p></p><p>与错题重刷时错误原因一致，没有考虑到可逆。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgRq0Jhn4slgJFOGOtmrRV7iDN0-uwACUBNrG6jniFaQyQ9-yhS2QAEAAwIAA3gAAz0E" alt="2.1.20" /><figcaption>2.1.20</figcaption></figure><p></p><p>主要是矩阵不等式的应用需要熟练。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgVq0Jh5epaNLLRzv6liICaP-0rYdAACURNrG6jniFagECWQeu7KbAEAAwIAA3gAAz0E" alt="2.2.5" /><figcaption>2.2.5</figcaption></figure><p></p><p>本题没有考虑利用行列式法进行考虑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgZq0JiJdFThGe3hN3SySKChNi7YowACUhNrG6jniFaOzXhWeLL-qAEAAwIAA20AAz0E" alt="2.2.7" /><figcaption>2.2.7</figcaption></figure><p></p><p>本题 <span><span>−6-6</span><span><span><span></span><span>−</span><span>6</span></span></span></span> 的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次方的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 系数错误，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgdq0Ji3GdrKrjATU1Z93kJdN4agWgACUxNrG6jniFafK9nGTqvgGAEAAwIAA3gAAz0E" alt="2.2.9" /><figcaption>2.2.9</figcaption></figure><p></p><p>第 9 题主要是没想到可以用那种方法表达。</p><p>第 10 题取逆的时候化简错误。</p><p>第 11 题在那里展开算，而不是同时取行列式分析，属于方法性错误。</p><p>第 12 题没有考虑到等价是秩相等。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBghq0JjPbb-WRe72_Pcy5t6publYzwACVBNrG6jniFbCxH8s_EZs0gEAAwIAA3gAAz0E" alt="2.2.14" /><figcaption>2.2.14</figcaption></figure><p></p><p>第 14 题主要的问题是提取错误，例如 <span><span>B−AB=(E−A)BB-AB=(E-A)B</span><span><span><span></span><span>B</span><span></span><span>−</span><span></span></span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>E</span><span></span><span>−</span><span></span></span><span><span></span><span>A</span><span>)</span><span>B</span></span></span></span>，这个需要尤其注意。</p><p>第 15 题取逆计算错误。</p></section><section><h3>张宇 30 讲基础线代 1 刷第 3 章<a href="#张宇-30-讲基础线代-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBglq0JjszvY6BiGfzyWy3p0WseXuAgACVRNrG6jniFZ4u2A-UT_ZYgEAAwIAA3gAAz0E" alt="3.1.1" /><figcaption>3.1.1</figcaption></figure><p></p><p>对于这题，本质上是一刷的时候没有捋清楚向量组和方程之间的关系，所以完全不会做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgpq0JkGnwKOR724yrgf-I-iEvMiKwACVhNrG6jniFbtHk5QmuptDwEAAwIAA3gAAz0E" alt="3.1.4" /><figcaption>3.1.4</figcaption></figure><p></p><p><span><span>00</span><span><span><span></span><span>0</span></span></span></span> 向量肯定和其他向量线性相关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgtq0JkVArvMM8n8OaVjnNbewVug0wACVxNrG6jniFYlbLKIQqbhUAEAAwIAA3gAAz0E" alt="3.1.5" /><figcaption>3.1.5</figcaption></figure><p></p><p>没有考虑过方阵时采用行列式法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBgxq0JkntWX7smPeXjoZzOT1hJKgwAACWBNrG6jniFYyZh-Xshl7pwEAAwIAA3gAAz0E" alt="3.1.8" /><figcaption>3.1.8</figcaption></figure><p></p><p>用矩阵定义去做，错题重刷时计算错误（<span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span> 想成 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBg1q0Jk7pBqVAAHTwBgAAZXcNiIPFT6LAAJaE2sbqOeIVn-k7BIa7YUbAQADAgADbQADPQQ" alt="3.1.9" /><figcaption>3.1.9</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBg9q0JoHgmkovJISZl9x9REI5MDR0AACWxNrG6jniFa_bWybATyS9wEAAwIAA3gAAz0E" alt="3.1.10" /><figcaption>3.1.10</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhBq0JoSzD24H5BA37YRULXj1-kyvwACXBNrG6jniFbPSFRKAm-BIQEAAwIAA3gAAz0E" alt="3.1.11" /><figcaption>3.1.11</figcaption></figure><p></p><p>这三题 1 刷的时候直接跳了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhFq0JoiqD5aVO-ekQKrv7-NpqstuwACXRNrG6jniFZNMX2KZfX2zgEAAwIAA3gAAz0E" alt="3.2.2" /><figcaption>3.2.2</figcaption></figure><p></p><p>第 2 题为低级错误，但凡多想一下就不会错。</p><p>第 3 题是想错了谁应该秩更大。</p></section><section><h3>张宇 30 讲基础线代 1 刷第 4 章<a href="#张宇-30-讲基础线代-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhJq0Jo7oN_ZTRzRPBMQILbR2uW7LAACXhNrG6jniFZ0OhCjeGILWgEAAwIAA3gAAz0E" alt="4.1.1" /><figcaption>4.1.1</figcaption></figure><p></p><p>单纯是没有捋清楚解这种题的套路。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhNq0Jp3PjPBqEvVdRj3xRMqspsDhQACXxNrG6jniFbHKcbo2Vv8IAEAAwIAA3gAAz0E" alt="4.1.2" /><figcaption>4.1.2</figcaption></figure><p></p><p>没有捋清楚背后的转换，以及没有填+-</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhRq0JsNL6Nlnd4ubzWlhYFd1zFkOQACYxNrG6jniFaKpBcRN5SHQwEAAwIAA3gAAz0E" alt="4.1.3" /><figcaption>4.1.3</figcaption></figure><p></p><p>完全没有想到从秩不等式的角度出发。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhVq0JsgUbX9SKvq5IXrQsqD7VV3JAACZRNrG6jniFY0a4Y0kqts5AEAAwIAA3gAAz0E" alt="4.1.4" /><figcaption>4.1.4</figcaption></figure><p></p><p>本题也一样是秩不等式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhZq0JtFbrAl6XmOYe9TaP8ZjdyMpQACZhNrG6jniFapTHgqCbRHKAEAAwIAA3gAAz0E" alt="4.1.5" /><figcaption>4.1.5</figcaption></figure><p></p><p>本题想当然地认为 D 是错的，而没有上手去算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhdq0JtYJXKrfRBd3a8kclCynrAE5gACZxNrG6jniFb2lfd0rHH0kAEAAwIAA3gAAz0E" alt="4.1.6" /><figcaption>4.1.6</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhhq0Jtk9OOGWegicpPAb8l6rySt3wACaBNrG6jniFYw97_qgOV9wgEAAwIAA3gAAz0E" alt="4.1.7" /><figcaption>4.1.7</figcaption></figure><p></p><p>这两题都应该从秩不等式的角度去考虑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhlq0Jt1U9dCn8WrHpEzU2wfKIQyhAACaRNrG6jniFYNomN6yMvMgwEAAwIAA3gAAz0E" alt="4.1.8" /><figcaption>4.1.8</figcaption></figure><p></p><p>从来没有想过可以从行列式的角度去思考，本质是对线代的理解不足，没有非常融会贯通。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhpq0JuHKx5uTD5r97M7w_DLLP_UbAACahNrG6jniFbeq1ZL_PMZiwEAAwIAA3gAAz0E" alt="4.1.9" /><figcaption>4.1.9</figcaption></figure><p></p><p>对于这类题要辨析解的结构，然后就迎刃而解了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhtq0JuYfWksbCziRyZQiwaydopTTQACbBNrG6jniFZ7aS2LRq5WpgEAAwIAA3gAAz0E" alt="4.1.10" /><figcaption>4.1.10</figcaption></figure><p></p><p>本题没有想清楚路线，通解一定是求齐次解和非齐次解，分清楚慢慢求。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhxq0JunnQaw7QXSefjT9pgQbUBdawACbRNrG6jniFYZFsl_i7s2cQEAAwIAA3gAAz0E" alt="4.1.13" /><figcaption>4.1.13</figcaption></figure><p></p><p>仅考虑了片面，没有考虑所有情况。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBh1q0JwaYYemqduAhvBdF7Idg1yx2wACbhNrG6jniFZGIGMKZs_K_AEAAwIAA3gAAz0E" alt="4.1.14" /><figcaption>4.1.14</figcaption></figure><p></p><p>这道题就是捋清楚有解的结论以及如何变形为同解方程组即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBh5q0JxHkulLqimG1mAJBIeoOrDTQgACbxNrG6jniFZQMK5el1GBkAEAAwIAA3gAAz0E" alt="4.2.3" /><figcaption>4.2.3</figcaption></figure><p></p><p>没理解透增广矩阵的意义。</p></section><section><h3>张宇 30 讲基础线代 1 刷第 5 章<a href="#张宇-30-讲基础线代-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBh9q0J0WpKwIxyc0vNSuwj1yZC6ehAACcRNrG6jniFbJ0-uihHOD7wEAAwIAA3gAAz0E" alt="5.1.1" /><figcaption>5.1.1</figcaption></figure><p></p><p>本题理解错行列式，对于行列式，初等行变换和初等列变换都是可以的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBiBq0J1MAQmkvbXMZayoF5sm8YExwQACchNrG6jniFaAgPqmvj3XUgEAAwIAA3gAAz0E" alt="5.1.2" /><figcaption>5.1.2</figcaption></figure><p></p><p>跳了。事实上这道题可以利用秩，显然秩为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，所以有 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 个特征值为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，所以用矩阵的迹可得后面。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBiFq0J1v8OEY03iGxzRGTnvHYkVhdAACcxNrG6jniFYBiXSY4rZO6QEAAwIAA20AAz0E" alt="5.1.3" /><figcaption>5.1.3</figcaption></figure><p></p><p>对于这道题没有理解透约束，在强化阶段理解了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBiJq0J1_u8KMQBNgnDAfvBqOu_kp3wACdBNrG6jniFZdd-u4uzLlmwEAAwIAA3gAAz0E" alt="5.1.4" /><figcaption>5.1.4</figcaption></figure><p></p><p>没想出来怎么做。本题利用 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 得关系就可以解出来了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBiNq0J2glr4P0bVAyvywk2f0C1whSwACdhNrG6jniFZ9O5P-QGurGgEAAwIAA3gAAz0E" alt="5.1.5" /><figcaption>5.1.5</figcaption></figure><p></p><p>本题毫无思路，原因是没有意识到 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 得每行元素之和为 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 意味着什么。并且本题也没有意识到 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 与 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的关系。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBiRq0J239I3PJflszdf41nuc5Xe05AACdxNrG6jniFYNS_Dvc12hRQEAAwIAA3gAAz0E" alt="5.1.6" /><figcaption>5.1.6</figcaption></figure><p></p><p>矩阵相似迹相等，本题本来用的是算出特征值，其实完全没必要。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBiVq0J4tprQAAQStqDG1rSgw4uzFSIUAAnsTaxuo54hWx2Cdolcfby0BAAMCAAN4AAM9BA" alt="5.1.7" /><figcaption>5.1.7</figcaption></figure><p></p><p>属于经典关系，矩阵相似迹和行列式相等。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBiZq0J4-MSV3WsajC_D8FQT-nrS0LQACfBNrG6jniFbV1cDFfg7BuAEAAwIAA3gAAz0E" alt="5.1.9" /><figcaption>5.1.9</figcaption></figure><p></p><p>判断这类题，首先从实对称矩阵入手，实对称矩阵一定可以化简成对角矩阵；对于 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>，显然有 <span><span>33</span><span><span><span></span><span>3</span></span></span></span> 个不同的特征值；对于 <span><span>CC</span><span><span><span></span><span>C</span></span></span></span>，显然 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 为其特征值，并且 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 时有 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 个线性无关的解，所以可以相似于对角矩阵。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBidq0J5PbuGzaJMjxohoCKOOCT0cCAACfRNrG6jniFYZBj3FRoyrzwEAAwIAA3gAAz0E" alt="5.1.10" /><figcaption>5.1.10</figcaption></figure><p></p><p>即凑形式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBihq0J5hOMt1Y9d7tyUgP57JMwRKvwACfhNrG6jniFZ0MkAUCGuXTAEAAwIAA3gAAz0E" alt="5.1.11" /><figcaption>5.1.11</figcaption></figure><p></p><p>一一对应，但是我认为用分开成两个矩阵再做的方式更保险。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBilq0J50P6ts33dgG_-1GixL_q6XjQACfxNrG6jniFbUXJOyBwsPEgEAAwIAA3gAAz0E" alt="5.1.12" /><figcaption>5.1.12</figcaption></figure><p></p><p>本题想当然认为 <span><span>P=AαP=A\alpha</span><span><span><span></span><span>P</span><span></span><span>=</span><span></span></span><span><span></span><span>A</span><span>α</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBipq0J6EGzaNTGS1ISHTY0s_ZBim7AACgBNrG6jniFYKYaIUHQtQ9AEAAwIAA3gAAz0E" alt="5.1.13" /><figcaption>5.1.13</figcaption></figure><p></p><p>与 11 题类似的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBitq0J6u2Z6QDv41VxszGbCK5-xOywACgRNrG6jniFZGaSK7nA6u9AEAAwIAA3gAAz0E" alt="5.1.15" /><figcaption>5.1.15</figcaption></figure><p></p><p>本质是对概念和定义理解不清晰。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBixq0J7ekaWQ5F5mC6JriZCnUzzOmgACghNrG6jniFY4RFUxzkKslQEAAwIAA20AAz0E" alt="5.1.16" /><figcaption>5.1.16</figcaption></figure><p></p><p>本题二刷时也有疑惑，为什么，但是实际上证明一遍就很清楚了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBi1q0J76eyndX2bkdgjpb-3AOJLhbQACgxNrG6jniFbEkdPbUm7a5AEAAwIAA3gAAz0E" alt="5.2.2" /><figcaption>5.2.2</figcaption></figure><p></p><p>本题对与 A 相关的特征值和特征向量不熟悉，在 2 刷的时候仍然忘记了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBi5q0J8Ml9S0IgRuXsfv4Y9ciE8quwAChBNrG6jniFYOC2TdjedtIAEAAwIAA3gAAz0E" alt="5.2.6" /><figcaption>5.2.6</figcaption></figure><p></p><p>第 6 题理解错 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的行列式与 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 行列式的关系，对于 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的行列式，其 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 行列式/特征值可以得到 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的特征值，而已知 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的行列式，不能用这个方法反过来，而应该是利用行列式那里学的，<span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 恒等式来直接算出来 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的行列式。</p><p>第 7 题应该是个关系式，只写了一个点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBi9q0J8zCA1chNKSp01TpYqQxU-IpQAChRNrG6jniFYpqxCyEDNyxgEAAwIAA3gAAz0E" alt="5.2.10" /><figcaption>5.2.10</figcaption></figure><p></p><p>计算错误。</p></section><section><h3>张宇 30 讲基础线代 1 刷第 6 章<a href="#张宇-30-讲基础线代-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjBq0J92U92yPlCybE42rJ5JFj5AeAAChhNrG6jniFao4xNog2lAbwEAAwIAA3gAAz0E" alt="6.1.1" /><figcaption>6.1.1</figcaption></figure><p></p><p>得拆成对称。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjFq0J-ecbXHZ1QhZ9WFE3gp5h8hTgAChxNrG6jniFYfqt0FJyswewEAAwIAA3gAAz0E" alt="6.1.2" /><figcaption>6.1.2</figcaption></figure><p></p><p>注意配方法，以及必须得写出可逆线性变换是什么。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjJq0J-wO4DTcWXzOxKYJWNtcSDshgACiBNrG6jniFZZRmOFF8VI8QEAAwIAA3gAAz0E" alt="6.1.3" /><figcaption>6.1.3</figcaption></figure><p></p><p>使用配方法的时候，没有平方项要去凑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjNq0J_DbbTwgnTscIvklRbKGEUb3QACiRNrG6jniFZ39j7qdOYOVwEAAwIAA3gAAz0E" alt="6.1.4" /><figcaption>6.1.4</figcaption></figure><p></p><p>注意是化成标准型，而不是规范形。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjRq0J_Ux14DAcUtFC7aqqhunY7qIQACjhNrG6jniFa_8AABRLqgjuUBAAMCAAN4AAM9BA" alt="6.1.6" /><figcaption>6.1.6</figcaption></figure><p></p><p>两次变形得到的经典题目。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjVq0J_mprl4mBnqYGKBAaAsjSH3cwACjxNrG6jniFY96RztnQoK0wEAAwIAA3gAAz0E" alt="6.1.7" /><figcaption>6.1.7</figcaption></figure><p></p><p>配方法没配出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjZq0KAGzcOrMsob7bnS0aPjXIY-LAACkBNrG6jniFZggkH2F20vhQEAAwIAA3gAAz0E" alt="6.1.8" /><figcaption>6.1.8</figcaption></figure><p></p><p>没有想明白合同应该考虑的是什么，合同应该考虑惯性系数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjdq0KAffDarrD0ZLS7Y-9fniV7fZQACkxNrG6jniFY4M2DL8SyECwEAAwIAA3gAAz0E" alt="6.1.9" /><figcaption>6.1.9</figcaption></figure><p></p><p>实对称矩阵必然合同；本题又是相似的变形。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjhq0KAxg_EMxuDqUojhNjlxsRrVOAAClBNrG6jniFax08OHavcRTgEAAwIAA3gAAz0E" alt="6.1.12" /><figcaption>6.1.12</figcaption></figure><p></p><p>1 刷的时候非常迷茫，现在 2 刷再做一次理解了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjlq0KBCjS8AATLGVKgkrJ5EUFTVmt4AApUTaxuo54hW4aQoPUnHrjoBAAMCAAN4AAM9BA" alt="6.2.2" /><figcaption>6.2.2</figcaption></figure><p></p><p>想当然。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjpq0KBSZkYc145qYyn4PN0Wd9g0igAClxNrG6jniFaFO6_Ppw4TzAEAAwIAA3gAAz0E" alt="6.2.7" /><figcaption>6.2.7</figcaption></figure><p></p><p>低级计算错误。</p></section></section>
<section><h2>张宇 1000 基础 1 刷（补）<a href="#张宇-1000-基础-1-刷补"><span>#</span></a></h2><section><h3>张宇 1000 基础 1 刷第 1 章<a href="#张宇-1000-基础-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjtq0KF6FL9yphVHsEzveCsIffMSmQACnRNrG6jniFbyKLqUVJRKEAEAAwIAA3gAAz0E" alt="1.6" /><figcaption>1.6</figcaption></figure><p></p><p>本题没上手做直接选的答案，也就是想当然导致的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjxq0KKYUVrgjkvBOaEz-GmSm6cXKgACoRNrG6jniFYrwJow6HoRLAEAAwIAA3gAAz0E" alt="1.9" /><figcaption>1.9</figcaption></figure><p></p><p>对于这题是定义理解错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBj1q0KKrCeIcEbBylpsjs3IZk7p18wACohNrG6jniFZL8Mze2WOUYwEAAwIAA20AAz0E" alt="1.14" /><figcaption>1.14</figcaption></figure><p></p><p>这道题不会做，并且对泰勒公式的定义理解错误（上下均用泰勒公式用了不知道多少次而且分子泰勒公式用错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBj5q0KLIIm01vd5-c7_C5SsOIxeV3wACpBNrG6jniFZdjxl86E2KAQEAAwIAA3gAAz0E" alt="1.17" /><figcaption>1.17</figcaption></figure><p></p><p>第 17 题泰勒公式理解错误，只展开了 <span><span>tan⁡x\tan x</span><span><span><span></span><span>tan</span><span></span><span>x</span></span></span></span> 而没有展开下面的。</p><p>第 18 题题没看完，求的是函数而不是单个极限。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBj9q0KLYEtlCvxp-H0w9w1270JRk8QACpRNrG6jniFaIbFARtTY7vQEAAwIAA3gAAz0E" alt="1.21" /><figcaption>1.21</figcaption></figure><p></p><p>本题抄错正负号并且滥用等价无穷小。</p></section><section><h3>张宇 1000 基础 1 刷第 2 章<a href="#张宇-1000-基础-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkBq0KL_zaNhHOXNQ8rfVfv3T7l07wACphNrG6jniFaCfOaTxm0hQQEAAwIAA3gAAz0E" alt="2.9" /><figcaption>2.9</figcaption></figure><p></p><p>本题没想到使用拉格朗日中值定理，并且在错题重刷的算半错，因为这道题错题重刷的时候一开始就放缩为 1，导致实质上没法使用夹逼定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkFq0KMWZfE7SlY8W9VxzFcqjoCZugACpxNrG6jniFZaTf-vw9MoOQEAAwIAA3gAAz0E" alt="2.11" /><figcaption>2.11</figcaption></figure><p></p><p>本题 1 刷时在那里试，错题重刷的时候对题目理解不清晰。事实上这道题只需要稳扎稳打分析，并且利用好 <span><span>a=2ln⁡(1+a)a=2\ln(1+a)</span><span><span><span></span><span>a</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span></span><span>ln</span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>a</span><span>)</span></span></span></span> 这个条件。</p></section><section><h3>张宇 1000 基础 1 刷第 3 章<a href="#张宇-1000-基础-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkJq0KMluFqO_N_fGlbOft8ggZ4AAekAAqgTaxuo54hWJCSUB6YQE9wBAAMCAAN4AAM9BA" alt="3.3" /><figcaption>3.3</figcaption></figure><p></p><p>本题错误是因为滥用等价无穷小，<span><span>ln⁡(x−1)f(3−x)\frac{\ln(x-1)}{f(3-x)}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>f</span><span>(</span><span>3</span><span>−</span><span>x</span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>l</span><span>n</span></span><span>(</span><span>x</span><span>−</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 确实可以代换为 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，但是在化简到需要通过定义计算的时候，想当然直接求了，也就是 <span><span>x−12f(2−x)\frac{x-1}{2f(2-x)}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span><span>f</span><span>(</span><span>2</span><span>−</span><span>x</span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>x</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的时候没有细致分析，而是直接认为是 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkNq0KM4VmfO_CZT6HXJZhnKtwmrIQACqRNrG6jniFZIePxXRQanzgEAAwIAA3gAAz0E" alt="3.12" /><figcaption>3.12</figcaption></figure><p></p><p>第 12 题做着做着题目抄错了，<span><span>±\pm</span><span><span><span></span><span>±</span></span></span></span> 符号问题。错题重刷的时候仍然是同一个问题。</p><p>第 13 题一下没想出来怎么做，使用特值法做做错。</p></section><section><h3>张宇 1000 基础 1 刷第 4 章<a href="#张宇-1000-基础-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkRq0KNKzJi59exeTadIPNjs0ZfqXwACqhNrG6jniFab_Ndg1afcggEAAwIAA3gAAz0E" alt="4.4" /><figcaption>4.4</figcaption></figure><p></p><p>本题错误原因在于没有对 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 本身求导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkVq0KNZujK41kv2WJY8lzs1IPshuwACqxNrG6jniFb1NdZbjyvkwgEAAwIAA3gAAz0E" alt="4.8" /><figcaption>4.8</figcaption></figure><p></p><p>第 8 题错误原因在于对参数方程的理解错误，原参数方程分别对 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 求导后得到的方程并不是导函数的参数方程。</p><p>第 9 题到最后一步推出来是偶函数，但是还是想着原函数是奇函数，事实上这道题一开始的时候就直接把 <span><span>f(1)f(1)</span><span><span><span></span><span>f</span><span>(</span><span>1</span><span>)</span></span></span></span> 算出来就好了，还代入代入那么多。</p></section><section><h3>张宇 1000 基础 1 刷第 5 章<a href="#张宇-1000-基础-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkZq0KNukv4WzIn5CQJmW5YNOcpZ6wACrBNrG6jniFaQKwbtQvbyMwEAAwIAA3gAAz0E" alt="5.5" /><figcaption>5.5</figcaption></figure><p></p><p>本题错选为 B。错题重刷时仍错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkdq0KObMoBQUh8mQ-4Yv3SyyyKdFwACrhNrG6jniFaz1uuROHtKbAEAAwIAA3gAAz0E" alt="5.18" /><figcaption>5.18</figcaption></figure><p></p><p>本题 <span><span>−12-\frac{1}{2}</span><span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 带入错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkhq0KPJuO59P0yylYseeniM8Ht4rwACsBNrG6jniFYLtAxQAWHbjgEAAwIAA3gAAz0E" alt="5.20" /><figcaption>5.20</figcaption></figure><p></p><p>未考虑正负无穷。错题重刷时仍错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBklq0KPXF4WaKsi6AspTcO0tuBIfxAACsRNrG6jniFbDBqMqjJjsAwEAAwIAA20AAz0E" alt="5.24" /><figcaption>5.24</figcaption></figure><p></p><p>本题不会做。错题重刷时仍错。</p></section><section><h3>张宇 1000 基础 1 刷第 6 章<a href="#张宇-1000-基础-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkpq0KQYBWYjL28HoZWaNBVJmdc21wACshNrG6jniFbLftuXZ641mwEAAwIAA3gAAz0E" alt="6.5" /><figcaption>6.5</figcaption></figure><p></p><p>本题被拉格朗日中值定理带偏，事实上只需要变形然后求解即可，错题重刷时也是错的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBktq0KYi87w2Wgfqe4Q23D6ZPgLongACthNrG6jniFaqqzpSE4Gr2AEAAwIAA3gAAz0E" alt="6.9" /><figcaption>6.9</figcaption></figure><p></p><p>没想到用拉格朗日中值定理求解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBk1q0Kbu20lZZ0QpgI-JVFBNk1EL8QACtxNrG6jniFYMwtdeU0llsQEAAwIAA20AAz0E" alt="6.22" /><figcaption>6.22</figcaption></figure><p></p><p>没想到怎么做，包括错题重刷的时候也没想到。对于这类题也就是需要踩一个点去解，公式化两次拉格朗日找点。</p><p>详细解释一下这里的介质定理，<span><span>ax+byax+by</span><span><span><span></span><span>a</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span>y</span></span></span></span>，其中 <span><span>a+b=1a+b=1</span><span><span><span></span><span>a</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，那么一定存在一个 <span><span>z=ax+byz=ax+by</span><span><span><span></span><span>z</span><span></span><span>=</span><span></span></span><span><span></span><span>a</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span>y</span></span></span></span>，其中 <span><span>zz</span><span><span><span></span><span>z</span></span></span></span> 介于 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 之间。</p></section><section><h3>张宇 1000 基础 1 刷第 7 章<a href="#张宇-1000-基础-1-刷第-7-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBk5q0KcJt0iXRJ4onkoUbK8QIluFjAACuBNrG6jniFbhZA1cmT0qKwEAAwIAA3gAAz0E" alt="7.3" /><figcaption>7.3</figcaption></figure><p></p><p>对于这题属于低级错误，<span><span>22</span><span><span><span></span><span>2</span></span></span></span> 和 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 约分的时候，结果是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 而不是 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。另外也需要注意这道题具体是求什么，<span><span>dVdt=1\frac{\mathrm{d}V}{\mathrm{d}t}=1</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>t</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>V</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，而不是其他东西。</p></section><section><h3>张宇 1000 基础 1 刷第 8 章<a href="#张宇-1000-基础-1-刷第-8-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBk9q0KdXCJ-34pUgb0gzbDuEUgsLtQACuRNrG6jniFbB2HwKIRlzvAEAAwIAA3gAAz0E" alt="8.1" /><figcaption>8.1</figcaption></figure><p></p><p>第 1 题对积分的定义理解错误，没有仔细去看。</p><p>第 2 题完全没理解自己当时在做什么，只能归咎于经验不足。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlBq0Ke1tLxJu9Qmi4Uu2zSczMly1QACuhNrG6jniFYDi0keS6PPfgEAAwIAA3gAAz0E" alt="8.4" /><figcaption>8.4</figcaption></figure><p></p><p>本题错选为 B，滥用等价无穷小。对于这种题应该先用奇偶性化简才对。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlFq0KfNwW9kSjCa-KMujEaTlLXZxQACuxNrG6jniFZobOX6LpD8IgEAAwIAA3gAAz0E" alt="8.14" /><figcaption>8.14</figcaption></figure><p></p><p>这类题不看当时是怎么解的了，当时对 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 积分的理解基本为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlJq0KhZMAr6uC2ve8iqAjeoEMX_EgACvBNrG6jniFa9SXSS3GMwsAEAAwIAA3gAAz0E" alt="8.16" /><figcaption>8.16</figcaption></figure><p></p><p>本题 <span><span>1−x21-x^2</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，<span><span>22</span><span><span><span></span><span>2</span></span></span></span> 次方抄没了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlNq0KhvuiOLEWa0uilTYdNT7A-wwwACvRNrG6jniFaNPrW5gnjAfQEAAwIAA3gAAz0E" alt="8.22" /><figcaption>8.22</figcaption></figure><p></p><p>这道题印象深刻，是多个 <span><span>±\pm</span><span><span><span></span><span>±</span></span></span></span> 号导致的错误。但是事实上这道题直接用绘图法就可以轻松解决。</p></section><section><h3>张宇 1000 基础 1 刷第 9 章<a href="#张宇-1000-基础-1-刷第-9-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlRq0KiTvEopkq-85Y_smBhHV6Lf6wACvhNrG6jniFbzSI4tVNJ6SgEAAwIAA3gAAz0E" alt="9.5" /><figcaption>9.5</figcaption></figure><p></p><p>第 5 题属于低级错误，<span><span>−2e−1−2e−1≠0-2e^{-1}-2e^{-1}\ne0</span><span><span><span></span><span>−</span><span>2</span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>2</span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p>第 6 题代入的时候少抄了一个 2 倍。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlVq0KixURXH42A328TQD0RJkWz3WwACvxNrG6jniFbvGO74eeZ7tAEAAwIAA3gAAz0E" alt="9.8" /><figcaption>9.8</figcaption></figure><p></p><p>第 8 题没做，属于当时不熟。</p><p>第 9 题 <span><span>xln⁡xx\ln x</span><span><span><span></span><span>x</span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 将 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 代入算成非 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlZq0KjDd5BFcXKSwEsUOKhvfZluvQACwBNrG6jniFbKVMah3294fQEAAwIAA3gAAz0E" alt="9.13" /><figcaption>9.13</figcaption></figure><p></p><p>本题只算到一半，然后就没继续算下去了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBldq0KjV3fXNd-jk1hLhha7Ct8BCJgACwRNrG6jniFbrJx2EzN-r1QEAAwIAA3gAAz0E" alt="9.20" /><figcaption>9.20</figcaption></figure><p></p><p>本题不会做，我感觉答案的做法学不来，所以应该是利用 2 刷时的换元法做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlhq0Kj76TZoJGr6Lx8wbC6dNiEzLgACwhNrG6jniFb_4dPUrWdeFgEAAwIAA20AAz0E" alt="9.24" /><figcaption>9.24</figcaption></figure><p></p><p>第 24 题 <span><span>13+13\frac{1}{3}+\frac{1}{3}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 算成 <span><span>00</span><span><span><span></span><span>0</span></span></span></span></p><p>第 25 题应该是拆根号的问题。</p><p>第 26 题换元法的时候上下限求错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBllq0KkR7rLZSkS76Ftsv249TXvfewACwxNrG6jniFa1XwrV9YUb_AEAAwIAA3gAAz0E" alt="9.32" /><figcaption>9.32</figcaption></figure><p></p><p>第 32 题少抄了一个 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>。</p><p>第 33 题把 <span><span>arcsin⁡x\arcsin x</span><span><span><span></span><span>arcsin</span><span></span><span>x</span></span></span></span> 抄成 <span><span>arctan⁡x\arctan x</span><span><span><span></span><span>arctan</span><span></span><span>x</span></span></span></span>。</p><p>第 34 题直接将 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 代入然后计算出 <span><span>y′y'</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 是 <span><span>±1\pm1</span><span><span><span></span><span>±</span><span>1</span></span></span></span>，显然错误的想法</p></section><section><h3>张宇 1000 基础 1 刷第 10 章<a href="#张宇-1000-基础-1-刷第-10-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlpq0KkpPP0laO_cWMOtQv3jkRM9nwACxBNrG6jniFbkr-0DFux_xAEAAwIAA3gAAz0E" alt="10.3" /><figcaption>10.3</figcaption></figure><p></p><p>本题采用估算，结果估算算半天不如正常算。估算还估错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBltq0Klgl1Q_m0buSvmAxYFfGnP-kgACxhNrG6jniFYS84sbt3YGPAEAAwIAA3gAAz0E" alt="10.6" /><figcaption>10.6</figcaption></figure><p></p><p>经典错误，积分上下限错了，直接填的 <span><span>[0,π][0,\pi]</span><span><span><span></span><span>[</span><span>0</span><span>,</span><span></span><span>π</span><span>]</span></span></span></span>，而没有根据题目意思是 <span><span>[0,1][0,1]</span><span><span><span></span><span>[</span><span>0</span><span>,</span><span></span><span>1</span><span>]</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBlxq0Klx2EtM8FwYD4Fuf7KIwp-agAACxxNrG6jniFZUXVQzNyKBJwEAAwIAA3gAAz0E" alt="10.8" /><figcaption>10.8</figcaption></figure><p></p><p>单纯是因为没有认真分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBl1q0KmrRzqFA3_yI5HZfybKkDD4oAACyBNrG6jniFbaEqbhcokeJAEAAwIAA20AAz0E" alt="10.9" /><figcaption>10.9</figcaption></figure><p></p><p>牛莱公式最后一步代入错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBl5q0Km91SI6LnVxTzstAAHIkdOuDxMAAsoTaxuo54hWYgABd9zija8HAQADAgADeAADPQQ" alt="10.11" /><figcaption>10.11</figcaption></figure><p></p><p>算半天结果就是合起来算不如分开来算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBl9q0KnPq75mwhAxE9lXsOMUB87HJAACyxNrG6jniFZcfxeazs7TNAEAAwIAA3gAAz0E" alt="10.14" /><figcaption>10.14</figcaption></figure><p></p><p>第 14 题积分求解错误，多约了一个 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>。</p><p>第 15 题单纯是因为积分没积出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmBq0Kn9OI80E5r-zi_ELUREIvHS4wACzBNrG6jniFZG9kksBTGHfgEAAwIAA20AAz0E" alt="10.19" /><figcaption>10.19</figcaption></figure><p></p><p>本题属于一个印象很深的错误，积分是升次，我算成了降次。</p></section><section><h3>张宇 1000 基础 1 刷第 11 章<a href="#张宇-1000-基础-1-刷第-11-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmFq0KoP1kLfVMipFT5GG0boWourdwACzRNrG6jniFaAJZ3plb2iwQEAAwIAA3gAAz0E" alt="11.1" /><figcaption>11.1</figcaption></figure><p></p><p>第 1 题完全没想到用基本的求导 + 零点定理就可以解决。</p><p>第 2 题也是完全没想到可以利用分部积分。</p><p>个人认为是熟练度问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmJq0KpJuiRWiZGq2Gol8Angaf5PGgACzhNrG6jniFZ0NtBuf7bbNAEAAwIAA20AAz0E" alt="11.11" /><figcaption>11.11</figcaption></figure><p></p><p>不会做。</p></section><section><h3>张宇 1000 基础 1 刷第 12 章<a href="#张宇-1000-基础-1-刷第-12-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmNq0KwRfDMo5jzHuA4GCLmA2BfOWgAC1BNrG6jniFa69Djg55XGLgEAAwIAA3gAAz0E" alt="12.1" /><figcaption>12.1</figcaption></figure><p></p><p>全部贴在这里，就不分析了。这里的每一题我其实都记忆深刻。</p></section><section><h3>张宇 1000 基础 1 刷第 13 章<a href="#张宇-1000-基础-1-刷第-13-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmRq0KwyguN5JVPhuxIKuz7hXlvjzQAC1RNrG6jniFYJNeE96tWVVwEAAwIAA3gAAz0E" alt="13.4" /><figcaption>13.4</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmVq0KxBvTIQwu3GsYYQVm6obHJkHQAC1hNrG6jniFbiOGoLq5frZgEAAwIAA20AAz0E" alt="13.8" /><figcaption>13.8</figcaption></figure><p></p><p>第 8 题，事实上这道题我都不知道在做什么，令 <span><span>uvuv</span><span><span><span></span><span>uv</span></span></span></span> 即可。</p><p>第 9 题，二刷时才真正理解这道题的具体意思，把 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 当成常数来讨论，而不是当成变量来讨论。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmZq0KxVPdFMUsrd-9ZXHodP9olxnAAC1xNrG6jniFYNlNEqsOjxkwEAAwIAA3gAAz0E" alt="13.13" /><figcaption>13.13</figcaption></figure><p></p><p>一个计算量超级大的题，算错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmdq0Kz1XY-Hqtm-Sbtxs7-uw8vshQAC2BNrG6jniFbXxAyZSpCJzwEAAwIAA3gAAz0E" alt="13.18" /><figcaption>13.18</figcaption></figure><p></p><p>没想到怎么做，令 <span><span>⋯=0\cdots=0</span><span><span><span></span><span>⋯</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 即可</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmhq0K0EBRbocafW34XuC_zgaGOVbgAC2RNrG6jniFYcsKvhHQNWggEAAwIAA20AAz0E" alt="13.21" /><figcaption>13.21</figcaption></figure><p></p><p>计算错误。</p></section><section><h3>张宇 1000 基础 1 刷第 14 章<a href="#张宇-1000-基础-1-刷第-14-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmlq0K1Ful8SZONoHz7v7GiMGkLAwgAC2hNrG6jniFb5ixl57PXC4gEAAwIAA3gAAz0E" alt="14.9" /><figcaption>14.9</figcaption></figure><p></p><p>对于这类题的处理手法当时不清晰。先绘制出积分区域，然后再判断对称性。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmpq0K1Zj_n1IpreEpZ_oxjhdbFvXwAC2xNrG6jniFYJNgHLcQQoiQEAAwIAA3gAAz0E" alt="14.13" /><figcaption>14.13</figcaption></figure><p></p><p>第 13 题属于计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmtq0K1wSox1icjDJqDLiKnCx3umswAC3BNrG6jniFbzFqaVswYq4AEAAwIAA3gAAz0E" alt="14.15" /><figcaption>14.15</figcaption></figure><p></p><p>第 15 题漏抄一个乘 2。</p><p>第 16 题也是错在拆根号，当初没有意识到，结果就是二刷的时候也错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBmxq0K2IEg6oSSptYsW0KEeEOCGPswAC3RNrG6jniFb6Ds9lr50LKQEAAwIAA20AAz0E" alt="14.18" /><figcaption>14.18</figcaption></figure><p></p><p>错的乱七八糟的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBm1q0K2fwAGMdW2uzok_nS7SqECLlAAC3hNrG6jniFYOGiev29uf-wEAAwIAA3gAAz0E" alt="14.20" /><figcaption>14.20</figcaption></figure><p></p><p>跳了，没想到用极坐标去做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBm5q0K2yTwkNFiIhJ4vUzZW8m6q1TwAC3xNrG6jniFbgdxgZfW0hhwEAAwIAA3gAAz0E" alt="14.22" /><figcaption>14.22</figcaption></figure><p></p><p>方法复杂。本体就是想多了，直接轮换对称 + 正常地 <span><span>x=rcos⁡θx=r\cos\theta</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>cos</span><span></span><span>θ</span></span></span></span> 即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBm9q0K3wNQof85oZ1bt9oQt-bJsJKAAC4BNrG6jniFYmw8ruXoSM3wEAAwIAA3gAAz0E" alt="14.24" /><figcaption>14.24</figcaption></figure><p></p><p>本题对于积分换元法的理解不够充分，已经把 <span><span>p2p^2</span><span><span><span></span><span><span>p</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 凑进去了，然后不会做了。</p></section><section><h3>张宇 1000 基础 1 刷第 15 章<a href="#张宇-1000-基础-1-刷第-15-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnBq0K4elMK4PNuLbfjnsZ9TGrXdMgAC4RNrG6jniFaILWCmH2UbNAEAAwIAA3gAAz0E" alt="15.1" /><figcaption>15.1</figcaption></figure><p></p><p>第 1 题代入的时候把特解想当然为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p>第 2 题没有注意到法线。</p><p>第 3 题其实稳扎稳炸分析列出来就能做了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnFq0K40EEzTcQnYASJU8Y3comHI5QAC4hNrG6jniFbpDQbOBAGHCwEAAwIAA3gAAz0E" alt="15.5" /><figcaption>15.5</figcaption></figure><p></p><p>这两题都没想到换元。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnJq0K5FbyUhek19nU8FkVJyJj-8SQAC4xNrG6jniFaZ6FMov6_GqQEAAwIAA3gAAz0E" alt="15.9" /><figcaption>15.9</figcaption></figure><p></p><p>本题少抄了一个 <span><span>+1+1</span><span><span><span></span><span>+</span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnNq0K5hldnchpnhWWcTI5ENDQwXBQAC5BNrG6jniFZ9LsqEe6bpLQEAAwIAA3gAAz0E" alt="15.12" /><figcaption>15.12</figcaption></figure><p></p><p>注意到 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 轴的距离应该是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>。</p></section><section><h3>张宇 1000 基础 1 刷线代第 1 章<a href="#张宇-1000-基础-1-刷线代第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnRq0K6UTrfaYjvVxAeI6B8buGVlIQAC5RNrG6jniFapCaTrd4VZ9AEAAwIAA20AAz0E" alt="1.8" /><figcaption>1.8</figcaption></figure><p></p><p>利用余子式计算的时候 <span><span>±\pm</span><span><span><span></span><span>±</span></span></span></span> 号错误。注意并非 <span><span>±\pm</span><span><span><span></span><span>±</span></span></span></span> 轮替，而是必须得用 <span><span>(−1)i+j(-1)^{i+j}</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>i</span><span>+</span><span>j</span></span></span></span></span></span></span></span></span></span></span></span> 去研究。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnVq0K7pS6U5yRL0K3TBrOoDP1xscgAC5hNrG6jniFaa5oZFx7y1LAEAAwIAA3gAAz0E" alt="1.11" /><figcaption>1.11</figcaption></figure><p></p><p>利用基础方法做，不如根据回头来看的经验去做（也就是相似性）</p></section><section><h3>张宇 1000 基础 1 刷线代第 2 章<a href="#张宇-1000-基础-1-刷线代第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnZq0K8PnFqnb1PO5NqHE3ckViKZMgAC6BNrG6jniFbVhlg2860rswEAAwIAA3gAAz0E" alt="2.8" /><figcaption>2.8</figcaption></figure><p></p><p>第 8 题。算半天的 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的逆和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 的逆，不如好好展开分析。</p><p>第 9 题属于超级低级的错误，2 刷的时候错的也是一模一样的原因，懒得喷了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnhq0K__fWiMh1ATmM9a_sdvBSQxFwAC6RNrG6jniFZ0TRmKTjBZnwEAAwIAA3gAAz0E" alt="2.15" /><figcaption>2.15</figcaption></figure><p></p></section><section><h3>张宇 1000 基础 1 刷线代第 3 章<a href="#张宇-1000-基础-1-刷线代第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnlq0LANTU2NVPLahS4jHFRxHsxdVQAC6hNrG6jniFZz1b_PNPXOqwEAAwIAA3gAAz0E" alt="3.8" /><figcaption>3.8</figcaption></figure><p></p></section><section><h3>张宇 1000 基础 1 刷线代第 4 章<a href="#张宇-1000-基础-1-刷线代第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnpq0LGsrmm5cmk1OE4XmsyrR1jMswAC-xNrG6jniFYtSoYadgFmtwEAAwIAA3gAAz0E" alt="4.6" /><figcaption>4.6</figcaption></figure><p></p><p>2 刷犯了一模一样的错误，上界和下界不能漏。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBntq0LG9YB7ft3zl-3CSgXwkmUnKJQAC_BNrG6jniFYFO0TyNqgdRAEAAwIAA3gAAz0E" alt="4.8" /><figcaption>4.8</figcaption></figure><p></p><p>第 8 题，对于 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 注意是行满秩才满足，而这道题是列满秩。当初的对行，列的定义理解地非常不清晰。</p><p>第 9 题需要注意这里是非齐次的，所以得 <span><span>+1+1</span><span><span><span></span><span>+</span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBnxq0LHXG45o2pziD3-DE1lP5ySoVwAC_RNrG6jniFbPUNwRYKuCsgEAAwIAA3gAAz0E" alt="4.11" /><figcaption>4.11</figcaption></figure><p></p><p>第 11 题当初是完全没有理解什么意思。显然三个无关的向量可以表示任意向量，然后根据这个去做。</p><p>第 12，13 放一起讲，也是对行满秩，列满秩的理解，以及对于线性方程组有解秩的理解。</p><p>第 14 题则是用了三秩相等，但是没有理解为什么这么用，所以导致的错误。</p></section><section><h3>张宇 1000 基础 1 刷线代第 5 章<a href="#张宇-1000-基础-1-刷线代第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBn1q0LH1g3IIL40XSzmgq10qfMsETAAC_hNrG6jniFb66hnqZn86HgEAAwIAA3gAAz0E" alt="5.1" /><figcaption>5.1</figcaption></figure><p></p><p>当初对本章的理解极为匮乏。对于 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 的变形，特征值可以变，然后特征向量不变（可以证明过去）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBn5q0LIixcbMAVqkIkyxEvreg-_z9gADFGsbqOeIVjYhdFArXaGyAQADAgADeAADPQQ" alt="5.9" /><figcaption>5.9</figcaption></figure><p></p><p>单纯不会做。事实上利用初等矩阵去做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBn9q0LI9yhevEMJWBpGyeNPbDLAe-QACARRrG6jniFaqXFsxG3KawgEAAwIAA3gAAz0E" alt="5.12" /><figcaption>5.12</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBoBq0LJQm8yO7PouxFBSCL8YhPyF4wACAhRrG6jniFY1-iGXFsMfTQEAAwIAA3gAAz0E" alt="5.17" /><figcaption>5.17</figcaption></figure><p></p><p>本章的 12-23 题全部都做的非常神秘，我认为也是对线代理解地不完善，就不一道题一道题地解释了。在做完杨威线性代数之后，对线代地理解加深了非常多，从而对这类题也理解了很多。</p></section><section><h3>张宇 1000 基础 1 刷线代第 6 章<a href="#张宇-1000-基础-1-刷线代第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBoFq0LJ9ReEvUkXBZyXH6f3lQWBWQwACBRRrG6jniFZcRXuPnzRzkQEAAwIAA3gAAz0E" alt="6.7" /><figcaption>6.7</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBoJq0LKoqNv4-12QvYZJmxkXO2mpxgACBxRrG6jniFbsT_D-xhJzmAEAAwIAA3gAAz0E" alt="6.11" /><figcaption>6.11</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBoNq0LK2osMp7-h3100GExJ4U-upVAACCBRrG6jniFaDrmQ0_wwkkwEAAwIAA3gAAz0E" alt="6.16" /><figcaption>6.16</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBoRq0LLHu7XhTwABNT1O6Ju3IsbSs_oAAgkUaxuo54hWXkwtjCAU9gsBAAMCAANtAAM9BA" alt="6.22" /><figcaption>6.22</figcaption></figure><p></p><p>这些都是第一次学不懂的产物。</p></section></section>
<section><h2>武忠祥高数强化 1 刷（补）<a href="#武忠祥高数强化-1-刷补"><span>#</span></a></h2><section><h3>武忠祥高数强化 1 刷第 1 章<a href="#武忠祥高数强化-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBN1qz3Hp2yH2vGJ24lsQjOtjLlUD4AACIBRrG7fmeVYp36pKLxGYMQEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>本题 1 刷时没求定义域，错题重刷时候定义域写漏了 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBN5qz3H_JLLfliqkVRIlKdWjQgt-2QACIRRrG7fmeVbnF5yrWadpYgEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题 1 刷时定义域求解错误，<span><span>1−x≥11-x\ge1</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span></span><span>≥</span><span></span></span><span><span></span><span>1</span></span></span></span> 求出来并非 <span><span>x≤2x\le2</span><span><span><span></span><span>x</span><span></span><span>≤</span><span></span></span><span><span></span><span>2</span></span></span></span>。错题重刷时绘图错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBN9qz3IX8ITkciz4SNEmudNy924MwwACIhRrG7fmeVbZXMmWqzSv6QEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>1 刷，错题重刷时均错误，从下面可以得知，2 刷时也错了。1 刷时候，没想到 1 为什么是错的。错题重刷时则没有考虑到：该点极限不一定为该点的值，需要尤其注意。</p><p>考虑这类定义题的时候，一定要先考虑不连续的情况。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOBqz3I6Rw2IVSlF-uo6gLdv33_dLAACIxRrG7fmeVY96NtGWAABcGUBAAMCAAN4AAM9BA" alt="4" /><figcaption>4</figcaption></figure><p></p><p>属于低级错误，这道题忘记自己在选必为偶函数了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOFqz3JVHyjMU0uM76y1MUzEB5aEwAACJBRrG7fmeVYEL4Do4_Mk6QEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>这道题需要注意，尤其是 <span><span>∣f(x)∣=0|f(x)|=0</span><span><span><span></span><span>∣</span><span>f</span><span>(</span><span>x</span><span>)</span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 那个结论。以及这道题在选择题上的技巧，也就是直接法和排除法的应用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOJqz3JnnSd18Jrybr9JoK0VUAHAYgACJRRrG7fmeVaJShqbOVr9dAEAAwIAA20AAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>对于这道题的第 1 问利用极限的保号性。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBONqz3J7jjmdHWm_pEL1XierpvDPiQACJhRrG7fmeVbqPcBaomgZgwEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>这道题是单调有界，但是这道题直接展开 <span><span>ln⁡n\ln n</span><span><span><span></span><span>ln</span><span></span><span>n</span></span></span></span> 的思想其实是不对的，应该是判断 <span><span>an&gt;0a_n&gt;0</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 和用 <span><span>an+1−ana_{n+1}-a_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 来算，然后发现可以化简。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBORqz3KRdlfb_Wb8z5sbGY53rGcRzgACJxRrG7fmeVaCxeNm7G9LXgEAAwIAA20AAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>对于泰勒公式的应用不要考虑弯弯绕绕，用最低次幂原则展开到不能约分即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOVqz3KiOMMWbkXO5CWI-uPRUun-3QACKBRrG7fmeVYaou1JYdNhvgEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>对于这道题利用定积分定义的时候变成了 <span><span>1+x21+x^2</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOZqz3K02ewIxphhTBOEzHuIkfsPVwACKRRrG7fmeVYpf0aT16lc5wEAAwIAA20AAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>这道题是对经典极限的定义把握不明确，<span><span>x2−ln⁡(1+x)x^2-\ln(1+x)</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>ln</span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span>)</span></span></span></span>，泰勒展开后应该是 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，而不是 <span><span>−12-\frac{1}{2}</span><span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOdqz3LFMSohja574kIT9QXjDaetYgACKhRrG7fmeVabxAHAAAFKXBoBAAMCAANtAAM9BA" alt="11" /><figcaption>11</figcaption></figure><p></p><p>利用泰勒公式的经典问题，即要全部展开，并且 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 可以和 <span><span>x3x^3</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span> 匹配。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOhqz3Lm919RW-6__dOkj1bjDhJXYwACKxRrG7fmeVYXx0L8hLFNhgEAAwIAA20AAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>对 <span><span>cos⁡x\cos x</span><span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 的泰勒展开不明确。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOlqz3L0KPvqy3zbPmA82d23tZZtXwACLBRrG7fmeVYkQSAFWI6H2gEAAwIAA20AAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>认为提出 e 是非法操作，本质是对概念理解不清晰。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOpqz3MCCGvbZs33ildOOdNzDSiCQwACLhRrG7fmeVYI_TGToV3u1AEAAwIAA20AAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>对泰勒展开的理解问题，一定是要展开到不能约掉为止。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOtqz3MSYtejXnbJ57ZKa-EHlnU-xwACLxRrG7fmeVbFxVssyaGEuAEAAwIAA20AAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>对 <span><span>cos⁡x\cos x</span><span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 相关的泰勒展开不明确。<span><span>1−cos⁡x1-\cos x</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span>，对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 进行变换和对 <span><span>cos⁡x\cos x</span><span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 的次数进行变换是两码事。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBOxqz3Mfq9yyHYC5loXveW9NzR2rMAACMBRrG7fmeVYSPl0F_CFW_AEAAwIAA20AAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><span><span><span>arcsin⁡x−x∼16x3\arcsin x-x \sim \frac{1}{6}x^3</span><span><span><span></span><span>arcsin</span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span></span><span>∼</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>6</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span></span><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBO1qz3MrxqN66Bak7WOJ7NhGmOy09QACMRRrG7fmeVanhHN21TnGcgEAAwIAA20AAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>错题重刷也错了，<span><span>uv\frac{u}{v}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>v</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>u</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 一整个求导不要和 <span><span>1u\frac{1}{u}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>u</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 求导混用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBO5qz3M4xyDqQE7Iy_bn98sSD5FDLAACMhRrG7fmeVa5H57jcRlDDQEAAwIAA20AAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>没想到怎么做。</p><p>连续取 2 次 e 就好了，其实不会难。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBO9qz3NFoxstBu6Hs2OH8MX4OlutnwACMxRrG7fmeVbyF-5Lg67dTAEAAwIAA20AAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题想当然认为 <span><span>nnn^n</span><span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>(n−1)n−1(n-1)^{n-1}</span><span><span><span></span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 相关可以直接去掉。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPBqz3NSL5q9gmlGkuhNqdEz0IS41wACNBRrG7fmeVYvKSdT9XViZAEAAwIAA20AAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>忘记等比数列求和公式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPFqz3NhuFErvIokHCCmJkqxqCFqqAACNRRrG7fmeVZ2R3emrnYBlQEAAwIAA20AAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>对于这类题需要注意 <span><span>nn−1\frac{n}{n-1}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 之类的去凑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPJqz3NtkW7LG6BKJmydq43MgfCVIgACNhRrG7fmeVYRiA0KrwaryAEAAwIAA20AAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>这类题需要注意 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 和 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 的区别。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPNqz3N41_e16bHGEGLESjn7upuGCAACNxRrG7fmeVbk3V5PDZ3efQEAAwIAA20AAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>没有思路。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPRqz3OD9Ob6R2AsIl3Ln3WzDHgaLQACOBRrG7fmeVb0djyGHmx5cQEAAwIAA20AAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>没有思路。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPVqz3OQ6HPE4d8iPgpK0tcMEG4kzQACORRrG7fmeVare0otkGfq5QEAAwIAA20AAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>没有思路。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPZqz3Oe6xuLLvv_cPhakRQlVJpangACOhRrG7fmeVazQvPt74AZegEAAwIAA3gAAz0E" alt="26" /><figcaption>26</figcaption></figure><p></p><p>这道题证明上界用的是数学归纳法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBNxqz3G6WxiIP6gCyrZZEvJK0kmndgACHhRrG7fmeVbQBX0IP9J3kwEAAwIAA20AAz0E" alt="27" /><figcaption>27</figcaption></figure><p></p><p>对于这道题，<span><span>ex≥x+1e^x\ge x+1</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span></span><span>≥</span><span></span></span><span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>，如果将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 替换为 <span><span>−x-x</span><span><span><span></span><span>−</span><span>x</span></span></span></span>，符号不变。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPhqz3O7AAF9Lg6ra1jFimuZuIMc9iIAAjsUaxu35nlW1RPpoAxdgnUBAAMCAAN4AAM9BA" alt="28" /><figcaption>28</figcaption></figure><p></p><p>没想到怎么做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPlqz3PKPJ2DG_Bc2yZ4EGgGJg1HeAACPBRrG7fmeVZUNEVIe4uHiAEAAwIAA3gAAz0E" alt="29" /><figcaption>29</figcaption></figure><p></p><p>知道要去把后面的消掉，但是不知道怎么消。显然不是利用三角不等式去消（因为带了尾巴）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPpqz3Pa2ko-GIdMKdKxKUGXGiGVaQACPRRrG7fmeVZh1RlzRgZ2MwEAAwIAA20AAz0E" alt="30" /><figcaption>30</figcaption></figure><p></p><p>提取 <span><span>−x-x</span><span><span><span></span><span>−</span><span>x</span></span></span></span> 后直接利用泰勒展开。尤其注意这道题是提取 <span><span>−x-x</span><span><span><span></span><span>−</span><span>x</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPtqz3Ptpmws95-VaGvcN4gNzz-ZvQACPhRrG7fmeVaDDoVj3b1EqQEAAwIAA3gAAz0E" alt="31" /><figcaption>31</figcaption></figure><p></p><p>完全没有理解 <span><span>mn=1mn=1</span><span><span><span></span><span>mn</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBPxqz3P-jFQBSvjktWTShT0NU_pJEAACPxRrG7fmeVbyqJ_BysKVLgEAAwIAA3gAAz0E" alt="32" /><figcaption>32</figcaption></figure><p></p><p>生搬硬套结论，不如硬算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBP1qz3QS9Izf46dYt5yssrU2SLetBwACQBRrG7fmeVYeb8mjtER3DwEAAwIAA3gAAz0E" alt="33" /><figcaption>33</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBP5qz3QbOr_HhpAoQTrHBz9I932txgACQRRrG7fmeVYVuBzUQOgXkwEAAwIAA3gAAz0E" alt="34" /><figcaption>34</figcaption></figure><p></p><p>没有考虑 <span><span>kπk\pi</span><span><span><span></span><span>k</span><span>π</span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBP9qz3QrkjHmDtyeC9E1qOV5yianSAACQxRrG7fmeVaVjCAoknnMgQEAAwIAA3gAAz0E" alt="35" /><figcaption>35</figcaption></figure><p></p><p>对于这类题，一定是一条路：没有条件要创造条件。显然设 <span><span>g(x)g(x)</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span></span></span></span>，然后利用第一个条件，同时除以 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，然后就很轻松可以去证明了。</p></section><section><h3>武忠祥高数强化 1 刷第 2 章<a href="#武忠祥高数强化-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQABas90Rb7Lj0bJgZoeDLeaQ76pFAMAAkQUaxu35nlWFawqKFhv7HEBAAMCAAN4AAM9BA" alt="1" /><figcaption>1</figcaption></figure><p></p><p>洛与不洛的问题，需要深度辨析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQFqz3TniPjWftzh8xVGB3JhqZMZ6QACRRRrG7fmeVZx4vvBzpg2PAEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>泰勒公式，使用配凑法的时候，跳步导致 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 系数配错（分母）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQJqz3T43a5KRyAkgjOazRbv7Uc_RwACRxRrG7fmeVb1ODoXsGMYigEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>注意直接法和间接法的问题。对于 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span>，经典的反例，也就是 <span><span>∣x∣|x|</span><span><span><span></span><span>∣</span><span>x</span><span>∣</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQNqz3UKWFUAAe3JYUH_kDEHiV-5qyoAAkkUaxu35nlWo8kTOiWV08sBAAMCAAN4AAM9BA" alt="4" /><figcaption>4</figcaption></figure><p></p><p>这道题尤其需要注意，前面的 <span><span>−3-3</span><span><span><span></span><span>−</span><span>3</span></span></span></span> 本身也是不可导点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQRqz3UZzWO75rjdrCAscMLz2M9ZqgACShRrG7fmeVbhl-V6YC0VzQEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>细致分析即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQVqz3U2zhIBrx-ax5LV63mfi4e62gACSxRrG7fmeVb6mhhm46z2UQEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>只需要把握 <span><span>tan⁡x\tan x</span><span><span><span></span><span>tan</span><span></span><span>x</span></span></span></span> 的几何意义即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQZqz3VMHzyM4uswxYjdgPb_4YVwdQACTBRrG7fmeVbhdbkwXyFvbwEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>二刷犯了类似的错误，忘记把平方算进去了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQdqz3VZdgABxrPDrxZC2XpAbStU8ToAAk0Uaxu35nlWlpfDA7aL50EBAAMCAAN4AAM9BA" alt="8" /><figcaption>8</figcaption></figure><p></p><p>注意导数的链式法则可以直接用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQhqz3VqwQlqafRAHh0rrceIAlOw4wACThRrG7fmeVYESULBvh61cwEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题主要就是变量太多了，容易混淆，事实上搞清楚即可。对于这道题，错题重刷的时候也是错的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQlqz3ZlFmgCdqX0KC8x9FkULTUcKQACTxRrG7fmeVbf8yfy3JadGgEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>使用硬求算错了。注意公式法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQpqz3ZzrhumfG_xxVaH85NHue4jLwACUBRrG7fmeVaRfI2k1_Xx9AEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>谁是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，谁是 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span>，属于是经典的问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQtqz3ctxfMi1gk4S9a0qOGyEtuKtAACUxRrG7fmeVZjNQMzH4wrpQEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>注意使用泰勒展开的时候是把 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 带进去的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQxqz3dGQvr1wYx_92BgYyz5ok8RRAACVBRrG7fmeVYWpYwi0cKnlgEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题的问题是脑子抽了想错了，所以最后选错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQ1qz3giNUJOac3gHaJZI3vS3FOeEQACWhRrG7fmeVaPZGxXtC-IzwEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>关于这道题的辨析详见 2 刷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQ5qz3g1tUO3uormOK-eKZYssu8XtQACWxRrG7fmeVbiMJqbw2i9DAEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>洛不洛的问题，当然这道题也可以直接用领域法去做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBQ9qz3hMXNMzR5yKgjusVKXJc-HJcwACXBRrG7fmeVY-Uur9f_q_SQEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>罗尔定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRBqz3hfjZrf1C1nzv7zdksEQe0-4AACXRRrG7fmeVYAAVlsLmNj8WUBAAMCAANtAAM9BA" alt="17" /><figcaption>17</figcaption></figure><p></p><p>罗尔定理推论。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRFqz3hvnSSAh4nFiyosBWinFrvJGAACXhRrG7fmeVbW55pID1wHJwEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>分离参数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRJqz3h-Zs9g4vOn6DPSZKnQwZkQAgACXxRrG7fmeVZjDHqkFeKQxAEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>这道题主要是分析方法，可以很容易得到 <span><span>f′(1)&lt;0f'(1)&lt;0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>1</span><span>)</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，从而由于单调递减，可以得到之多一个零点。</p><p>当然这道题也可以采用泰勒公式进行分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRNqz3iU6P4HHtAFZ9s1jRhF9QFyJgACYBRrG7fmeVYnWQmoJkRzYwEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>主要注意可以用泰勒公式和拉格朗日中值定理进行分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRRqz3ioG-N62U5X_YjhZsSyxaQWVwACYRRrG7fmeVaNFouRfLvJhQEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>不要盲目套公式，可以逐项分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRVqz3i3ByZ4K-ZxOUNXUJadEKeSMwACYhRrG7fmeVa2PT7qJicRHAEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>变限积分这里可以用分段函数来表达。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRZqz3jJ8jWOy1O3mbyWUjAYJJClqQACYxRrG7fmeVYuVc5mhyq9ygEAAwIAA3gAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>自己构造出来的函数如果还是带有‘，再网上想一层。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRdqz3jasSvg8asDf3WlEGJf77E30QACZBRrG7fmeVYc2V8Muc1rWAEAAwIAA3gAAz0E" alt="24" /><figcaption>24</figcaption></figure><p></p><p>次数问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBRhqz3jnz7D5-qjjVNnMD18aww1KKQACZRRrG7fmeVapPlIhxV5RtAEAAwIAA3gAAz0E" alt="25" /><figcaption>25</figcaption></figure><p></p><p>这种题被这道题的上一题影响了，想着一定是 <span><span>f(c)=1−cf(c)=1-c</span><span><span><span></span><span>f</span><span>(</span><span>c</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>c</span></span></span></span>。</p></section><section><h3>武忠祥高数强化 1 刷第 3 章<a href="#武忠祥高数强化-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBVtq0H4MXnPp-ZXcxML0oa4QsvwqmQACjBJrG6jniFbWWlRAYb6cjgEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>路是对的，主要的问题是做到最后一步的时候没想到直接利用原条件进行化简。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBVxq0H4lSuQlHX5XPtcFlF-VUakLJQACjRJrG6jniFbcCyZNOkNcXgEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>没想到用积分中值定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBV1q0H6Pkj_-YPzwcNFfLwINIGdNLQACjhJrG6jniFZZ6O0bV8ktCwEAAwIAA20AAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>这道题被当初基础 1000 的那道题给绊住了，老是想着分部积分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBV5q0IDMO-4ow81NOaBRifq1J9qpBwACkBJrG6jniFZYWznUSyroUwEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>这道题尤其需要注意，尽管变限积分表示的是面积，但是，这道题当 <span><span>x&lt;0x&lt;0</span><span><span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 的时候，应该上下限变一下，从容改变 <span><span>±\pm</span><span><span><span></span><span>±</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBV9q0IDk410Rc6JoBfVAw9WG0tYndAACkRJrG6jniFZqon0wj4gzGgEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>没想到利用变限积分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWBq0IELOb2WwIVtofB8kPLhwreL1AACkhJrG6jniFZOrNgD7JoD1QEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>主要是计算问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWFq0IEijhVjqQ4YQPVBAvwyQyJfDQACkxJrG6jniFYPxEUHQtCAswEAAwIAA20AAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>这类题经典需要注意变元怎么变。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWJq0IEye0iMrmnghzR6PZqlv35S5QAClBJrG6jniFZtcVxOVSFRFAEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>1 刷的时候不会做，错题冲刷得时候没有注意 <span><span>52×x\frac{5}{2}\times x</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>5</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>×</span><span></span></span><span><span></span><span>x</span></span></span></span>，结果求导了之后 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 还保留。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWNq0IFkc3JXAAFkW-be_jzxNmDdqocAApUSaxuo54hWKxXyIRTAhYgBAAMCAAN4AAM9BA" alt="9" /><figcaption>9</figcaption></figure><p></p><p>本题是对的，但是需要再看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWRq0IF7xSPM-GHz7djNJ5B7_Lq-jAAClhJrG6jniFansQfu79mVJAEAAwIAA3gAAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>柯西积分不等式，没招，这个回头和二重积分最后那里专门去看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWVq0IGQlDp-VrrPECDaAr6ewhEEaQAClxJrG6jniFYSI4yEhLwrtgEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>事实上，这道题直到 2 刷完基础 1000 之后才彻底理解了怎么做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWZq0IGilVUxSvaEGXqVFE5oJ_o_owACmBJrG6jniFZsYAM3W8LkqQEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>理解了就不难了，之前始终没有理解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWdq0IGynE-TCa-gk3wS-yo3wQ3gPAACmRJrG6jniFYq0DLbibtYtQEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>第 3 问为低级错误，<span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 凑进去的时候系数配错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWhq0IHH3b2t9qMBn8zKs8mbJf7s6QACmhJrG6jniFYFjMK0Unub_wEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>对于本题的 1，对 <span><span>rr</span><span><span><span></span><span>r</span></span></span></span> 积分不要和对 <span><span>ee</span><span><span><span></span><span>e</span></span></span></span> 积分搞混淆。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWlq0IHYW0-NnDMnacK_a5WzcT9HYQACmxJrG6jniFbcVVjPuZEyxwEAAwIAA20AAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>对于这道题，利用换元法的思想 + 二重积分来理解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWpq0IIQFH8FAmpa818hPtkhDGzp_wACnRJrG6jniFa10_-rRionDwEAAwIAA3gAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>没想到可以计算出抛物线。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWtq0IJm2rCJ9sgq8AkUFF53PCaLIwACnhJrG6jniFb3PPhmduaJPgEAAwIAA3gAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>抽水做功是对重力做功。</p></section><section><h3>武忠祥高数强化 1 刷第 4 章<a href="#武忠祥高数强化-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBWxq0IKFmec-7TS9GyBk9fGlttlkUAACnxJrG6jniFZZBccEg585GAEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>对于第 1 题，属于基本功问题，C（fx）直接把 c 忽略了。注意多个常系数。</p><p>对于第 2 题，尤其要注意特解。特解的情况下可以不求出完整的再解系数，可以先猜后解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBW1q0IKyKRF0TwQBAvH-wR4qqE1XMAACqBJrG6jniFY6gp6zzrckmQEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>注意对变限积分的求导问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBW5q0ILDu1KRj_gfyekUjitbLE6u7QACqRJrG6jniFbfK6tFe7nzXAEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>注意两个问题：谁是 <span><span>XX</span><span><span><span></span><span>X</span></span></span></span> 谁是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>；可以利用面积相减来化简，不一定要求出直线坐标方程。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBW9q0ILSR3ZSEVMl3zP5GnridfH90QACqhJrG6jniFZWyHjfGyklzgEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>1 刷的时候没做，错题重刷的时候三角形是什么错了。</p><p>其实也是一个经典的错误，坐标值不等于长，而应该坐标值之差。</p></section><section><h3>武忠祥高数强化 1 刷第 5 章<a href="#武忠祥高数强化-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXBq0ILi9qaSpi-eQscBykpPcsY-kAACqxJrG6jniFZR7yMDq627BgEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>先求后代？先代后求？忽略了定义。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXFq0IL61hErR2RH11k-VPswtqKpZwACrBJrG6jniFaeq0a5sDUEcAEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本质是对高阶无穷小的理解错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXJq0IMJZEuV_8L-wQEhjTkB_VMcTQACrRJrG6jniFauIReq7TYOvgEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>这道题其实是不会求最后的不等式？我在 2 刷时的想法是拆成 <span><span>y&gt;xy&gt;x</span><span><span><span></span><span>y</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>x</span></span></span></span> 和 <span><span>y&lt;xy&lt;x</span><span><span><span></span><span>y</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>x</span></span></span></span> 讨论，这道题则是直接判断有界。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXNq0IMlaMXq_tKktr-3qmhBzKUjbgACrhJrG6jniFYxmTDnWubGXgEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>不多评价，这个是懂得都懂。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXRq0IM1u8tfr6nGj9Q6jD9CkMZ6-wACrxJrG6jniFaqZPmAQmpSHAEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>在先代后求的时候，一定要注意谁是常量，谁是自变量。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXVq0INErWSqCtJ6DJ83pFticYjtEgACsBJrG6jniFbtN2VfYTvrtAEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>没做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXZq0INW-gYjY_xU9qGEQWfq6rz20wACsRJrG6jniFbBPx09lfZP9wEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>本质是对记号的理解问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXdq0INn6pf0DzoHlMRO2bCDLJdsvgACshJrG6jniFZIjW5UMaD75QEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>本题无从下手，事实上上对于这种提，先不管必要性还是充分性，反正直接写先证谁推谁就可以了。</p><p>然后再进行其他的分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXhq0IN4VqXAkNDef3InjBZ6bhXzFAACsxJrG6jniFYUXN4Qxf2T5QEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>然而对这道题利用上面的结论根本不会利用，2 刷的时候直接用的通法，反而会做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXlq0IOJy6D7Lh2xMaCCOH3d1NBQaQACtBJrG6jniFaWcY6_6nye9AEAAwIAA20AAz0E" alt="10" /><figcaption>10</figcaption></figure><p></p><p>漏了 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，<span><span>00</span><span><span><span></span><span>0</span></span></span></span> 这个根。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXpq0IOasQMk9LbCFnXj1X982TD5SgACtRJrG6jniFYiWukINGn5zwEAAwIAA3gAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>对于这类题，尤其是要注意区域内的极值和条件最值都要算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXtq0IOp0As36FaXY-df34xSnDaS1AACthJrG6jniFbrm22yZ6CvTwEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本质是没有捋清楚谁是目标函数，显然这道题 <span><span>dd</span><span><span><span></span><span>d</span></span></span></span> 是目标函数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBXxq0IO6ElYMTJ-uyvuivzQmjmFkPAACtxJrG6jniFaIBecomCHTVQEAAwIAA3gAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>求偏导计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBX1q0IPITOdt3naDM63F1sGA8j42_QACuBJrG6jniFY-dLdtlYr5UgEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p></section><section><h3>武忠祥高数强化 1 刷第 6 章<a href="#武忠祥高数强化-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBX5q0IPoyFaRA-vAf7GcOpRDNldtwwACuRJrG6jniFbxAW6005DdBAEAAwIAA3gAAz0E" alt="1" /><figcaption>1</figcaption></figure><p></p><p>对于这类题，尤其注意 <span><span>x2+y2x^2+y^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 不是直接变成 <span><span>RR</span><span><span><span></span><span>R</span></span></span></span>，也是需要代入计算的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBX9q0IQPNZ6RiHwoRfCLXtuOq8o7VAACuhJrG6jniFbT2fw4iLJKSAEAAwIAA3gAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>基本功问题，计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYBq0IQvS5XI_VCKO8j4lf4VmP3W7wACuxJrG6jniFZOnp_f7XMnjQEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>在 <span><span>t2\frac{t}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>t</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 变成 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 的时候，不能想当然，必须要实打实的写出那些经典步骤。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYFq0IRG6mlMk8BMk9UfraFU7CCPNAACvBJrG6jniFZKBPYdit5UzQEAAwIAA20AAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>这个就是范围选择错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYJq0IRbTb_JniVbC-fci-rYfvM-EQACvRJrG6jniFYP2Aa5YPbFlAEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>这道题当时是最后一步的时候，对点火公式的对称性理解错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYNq0IRvWlsLqOLD-jN5YjQC7uuaRAACvhJrG6jniFb8zUE4JsEf9gEAAwIAA3gAAz0E" alt="6" /><figcaption>6</figcaption></figure><p></p><p>没做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYRq0ISFIjQk1UzEK-TFOtAzExsPEAACvxJrG6jniFYUUfwoseOXrQEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>对于这类题的通法其实就是交换一下积分次序然后利用积分中值定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBYVq0ISaz8vu-dsc17TeFS0lvtv-MwACwhJrG6jniFakUUX-30s2hgEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>分析问题了。</p></section></section>
<section><h2>杨威线性代数强化 1 刷<a href="#杨威线性代数强化-1-刷"><span>#</span></a></h2><section><h3>杨威线性代数强化 1 刷第 1 章<a href="#杨威线性代数强化-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBoVq0LM7a3z87KmtsKmhC9zAxEyDZQACChRrG6jniFbb5FlOWl40NgEAAwIAA3gAAz0E" alt="1.4" /><figcaption>1.4</figcaption></figure><p></p><p>对于这种题，一定要想着往范德蒙行列式上面去凑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBoZq0LNPZOMB3Q267OZZ_7gfqpBfDgACCxRrG6jniFYToAJTUUP-lQEAAwIAA3gAAz0E" alt="1.7" /><figcaption>1.7</figcaption></figure><p></p><p>对于这道题，我没有任何思路，用的是排除法。事实上，只需要凑出来 <span><span>AB=EAB=E</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>E</span></span></span></span> 这个式子，那么 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 必然是可逆的（为方阵的前提下）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBodq0LNpDJFFCNEpFMo4LGtRp48aOAACDBRrG6jniFapoRznmhO7swEAAwIAA3gAAz0E" alt="1.9" /><figcaption>1.9</figcaption></figure><p></p><p>这道题做的是对的，但是理解有误，没有理解为什么为什么可以这么做以及这么做的含义在哪里（本质是对知识点串联不起来）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBohq0LN4QUUZGwq1RkYdutz2nNyIBQACDhRrG6jniFYSSaBnNAemIwEAAwIAA3gAAz0E" alt="1.11" /><figcaption>1.11</figcaption></figure><p></p><p>本题为计算问题，即把数字从行列式提出去，一定是 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次方。这点要和 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的行列式区分开来，<span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的行列式是 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次方。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBolq0LOJ595hC-O9BIZ6buTTztKIrAACEBRrG6jniFZovms-lnBsfQEAAwIAA3gAAz0E" alt="1.14" /><figcaption>1.14</figcaption></figure><p></p><p>本题采用特值法求解。对于这类题的核心要义是去凑，以及 <span><span>AT+BT=(A+B)TA^{\mathrm{T}}+B^{\mathrm{T}}=(A+B)^{\mathrm{T}}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBopq0LOgtzbo2GxhQT308iF7bDpcOwACERRrG6jniFZTQ0cGJW0pXwEAAwIAA3gAAz0E" alt="1.16" /><figcaption>1.16</figcaption></figure><p></p><p>计算错误。注意 <span><span>(−1)n×n(-1)^{n\times n}</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>n</span><span>×</span><span>n</span></span></span></span></span></span></span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBotq0LPZGnedNSUGyPPh4mjxUlS-VwACExRrG6jniFaL89PvenvBogEAAwIAA3gAAz0E" alt="1.19" /><figcaption>1.19</figcaption></figure><p></p><p>本题设出来所有的值，然后试图一个个代入计算，这是错误的。事实上应该考虑到他们的内在联系，即 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的联系，从而凑出答案。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBoxq0LPsqaH1gtsJMZJaWBpbYkwt3wACFBRrG6jniFZM1PC71Hyn3wEAAwIAA3gAAz0E" alt="1.20" /><figcaption>1.20</figcaption></figure><p></p><p>对于这道题没有思路。事实上这道题的思路来源应该是第 5 章，也就是 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的每行元素之和均为 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，所以有一个特征值 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，而 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的特征值对应为 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的行列式/特征值，特征向量不变，所以这道题应该是 <span><span>1.51.5</span><span><span><span></span><span>1.5</span></span></span></span>。这道题的本质是在求 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的特征值。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBo1q0LQLy0ELni-g-ocf8RfV4Ev36wACFRRrG6jniFa6D3TBu-gWtAEAAwIAA3gAAz0E" alt="1.21" /><figcaption>1.21</figcaption></figure><p></p><p>概念理解问题，<span><span>A≠−EA\ne-E</span><span><span><span></span><span>A</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>−</span><span>E</span></span></span></span>，只能说明 <span><span>A+E≠OA+E\ne O</span><span><span><span></span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>E</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>O</span></span></span></span>，而不可以说明 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 满秩。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBo5q0LQbKhB2sDG8JrfW9mRk7IH4LQACFhRrG6jniFY0JqK9tfnvuAEAAwIAA3gAAz0E" alt="1.25" /><figcaption>1.25</figcaption></figure><p></p><p>属于小学三年级级别的错误，<span><span>3×7=213\times 7=21</span><span><span><span></span><span>3</span><span></span><span>×</span><span></span></span><span><span></span><span>7</span><span></span><span>=</span><span></span></span><span><span></span><span>21</span></span></span></span>，而不是 <span><span>2424</span><span><span><span></span><span>24</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBo9q0LQp6LQW8WK4iG69YvO7hXH6tgACFxRrG6jniFb2gyjBhYZc6gEAAwIAA3gAAz0E" alt="1.27" /><figcaption>1.27</figcaption></figure><p></p><p>这道题错在两个地方，思路错误以及抄错了。</p><p>对于这类题，首先计算 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次方，然后再 <span><span>aEaE</span><span><span><span></span><span>a</span><span>E</span></span></span></span> 去减即可。本质也是后续知识的串联。</p></section><section><h3>杨威线性代数强化 1 刷第 2 章<a href="#杨威线性代数强化-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBpBq0LQ9oaMVOuaV9KLddcukGZUtnQACGBRrG6jniFZzpn_-5-OozgEAAwIAA3gAAz0E" alt="2.5" /><figcaption>2.5</figcaption></figure><p></p><p>这道题没思路，利用的是最传统的方法去做。对于这类题，可以考虑 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>ATA^{\mathrm{T}}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span></span></span></span> 之间的关系，从而去凑答案。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBpFq0LRODHuf0jlI2NVEFBpUXHEGMwACGRRrG6jniFb5G6YZ_mrYlgEAAwIAA3gAAz0E" alt="2.6" /><figcaption>2.6</figcaption></figure><p></p><p>概念理解问题。等价，不等价，行等价，躐等贾，这个辨析在二刷那里有详细说明。</p><p>此外，对于 <span><span>AB=A+BAB=A+B</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span></span></span></span> 这个式子，一定要记住去凑 <span><span>+E−E+E-E</span><span><span><span></span><span>+</span><span>E</span><span></span><span>−</span><span></span></span><span><span></span><span>E</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBpNq0LTWn1ltsopjE3DJQUpE0bAI_gACHxRrG6jniFYWUgJowdfPCQEAAwIAA3gAAz0E" alt="2.10" /><figcaption>2.10</figcaption></figure><p></p><p>计算 + 思路的双重错误。对于这道题，尤其需要注意能不能取逆。这道题的 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 不可逆，所以必须得配凑去消元。</p><p>而原题是注意到利用 <span><span>(A+E)3/(A−E)3(A+E)^3/(A-E)^3</span><span><span><span></span><span>(</span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>E</span><span><span>)</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span>/</span><span>(</span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>E</span><span><span>)</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span>，我认为考场上我不可能这么注意到。将 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 右乘，然后得到一个式子，再右乘 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 然后带回原式，我认为这个思想才是可取的。</p><p>所以也就是说，对于原始式子可能不只是只利用一次，得蜿蜒曲折地前进。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBpRq0LTxd4jwYFvuwMDzMDq6B8QhkAACIBRrG6jniFZzf8_cPODzYQEAAwIAA3gAAz0E" alt="2.11" /><figcaption>2.11</figcaption></figure><p></p><p>这道题在做的时候采用了特值法。一样也是去提公因子然后去凑就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBpVq0LaIdE00jHQDwQIjQAzc2dG6uwACJBRrG6jniFbU8YWblbGj0wEAAwIAA3gAAz0E" alt="2.12" /><figcaption>2.12</figcaption></figure><p></p><p>对这道题没有什么思路。事实上这道题就是前面说的，蜿蜒曲折地前进，以及去凑。例如对于这个式子，两边同时左乘一个 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，然后再利用原始的式子进行化简，蜿蜒曲折地前进。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBpZq0LaeJMSrXw_4WXwxZ0HbWrBBEwACJhRrG6jniFZmmmE_qwgZrAEAAwIAA3gAAz0E" alt="2.18" /><figcaption>2.18</figcaption></figure><p></p><p>这道题凭感觉，没有使用严格推到。</p><p>对于这类题的变换，一定是要采用乘上可逆矩阵的方法，不可以想当然。例如右乘只能做列变换，左乘只能做行变换，这类东西一定要捋地清清楚楚。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBpdq0LcJHE-KCwIDqHKxv1GKPH_pGAACJxRrG6jniFYIvrBDncGVQgEAAwIAA3gAAz0E" alt="2.20" /><figcaption>2.20</figcaption></figure><p></p><p>凭直觉做对的。对于这类题一定要注意，<span><span>AA∗=∣A∣EAA^*=|A|E</span><span><span><span></span><span>A</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>A</span><span>∣</span><span>E</span></span></span></span>，当 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 不满秩的时候，<span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的行列式为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，从而直接 <span><span>AA∗=OAA^*=O</span><span><span><span></span><span>A</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>O</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBphq0Lca_P0Xr8bhcbMLncS4VxURvwACKBRrG6jniFaVI3OTI_cttAEAAwIAA3gAAz0E" alt="2.23" /><figcaption>2.23</figcaption></figure><p></p><p>这道题利用特值法派出了 CD。事实上对于这类题一定是要利用矩阵的秩不等式，采用类似“夹逼”的思想。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBplq0LeEj58ZhXgLUx1rkMJsvHPM3gACKxRrG6jniFY-AStLhb5o9wEAAwIAA3gAAz0E" alt="2.24" /><figcaption>2.24</figcaption></figure><p></p><p>没有思路，这道题是和后面知识点的关联。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBpxq0LfXr40wZZ7WScbqx5yDsrjl_AACLRRrG6jniFZLVbnSMzVqfAEAAwIAA3gAAz0E" alt="2.25" /><figcaption>2.25</figcaption></figure><p></p><p>行等价一定是做行变换等价，所以是化简为行最简。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBp1q0Lfq8Q9vombAqCnPGqo6NSfPXgACLhRrG6jniFbIqwvY9SF7DAEAAwIAA3gAAz0E" alt="2.26" /><figcaption>2.26</figcaption></figure><p></p><p>有思路，但是分析错误，尤其是对于 C 的特例。</p><p>对于 <span><span>CC</span><span><span><span></span><span>C</span></span></span></span>，显然是举出一个例子，当 <span><span>n=2n=2</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span> 时，对于 <span><span>CC</span><span><span><span></span><span>C</span></span></span></span> 不成立。对于 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 则是利用秩不等式去“夹”出来，对于 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span>，由于 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 列满秩，所以对于 <span><span>m×nm\times n</span><span><span><span></span><span>m</span><span></span><span>×</span><span></span></span><span><span></span><span>n</span></span></span></span> 的矩阵，<span><span>m≥nm\ge n</span><span><span><span></span><span>m</span><span></span><span>≥</span><span></span></span><span><span></span><span>n</span></span></span></span>，且 <span><span>r(A)=nr(A)=n</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span></span></span></span>。利用秩不等式，<span><span>r(AB)≥r(A)+r(B)−nr(AB)\ge r(A)+r(B)-n</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>B</span><span>)</span><span></span><span>≥</span><span></span></span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>n</span></span></span></span>，即 <span><span>r(B)≤r(AB)≤r(B)r(B)\le r(AB)\le r(B)</span><span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span><span></span><span>≤</span><span></span></span><span><span></span><span>r</span><span>(</span><span>A</span><span>B</span><span>)</span><span></span><span>≤</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span></span></span></span>，所以 <span><span>r(AB)=r(B)r(AB)=r(B)</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>B</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span></span></span></span>。同理，<span><span>r(AC)=r(C)r(AC)=r(C)</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>C</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>C</span><span>)</span></span></span></span>，所以 <span><span>r(B)=r(C)r(B)=r(C)</span><span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>C</span><span>)</span></span></span></span>。</p><p>从另一种角度考虑，移过去解方程，方程唯一，所以 <span><span>B=CB=C</span><span><span><span></span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>C</span></span></span></span>。</p></section><section><h3>杨威线性代数强化 1 刷第 3 章<a href="#杨威线性代数强化-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBp5q0LgAAcecOjoOKNAq6pK3njG7Lu4AAjQUaxuo54hWwj5NApvrYN4BAAMCAAN4AAM9BA" alt="3.1" /><figcaption>3.1</figcaption></figure><p></p><p>注意方法的简便性与章节的联系。由于 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 不能由 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 表出，那么显然 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的秩大于 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 的秩。由于 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 满秩，所以 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 不满秩，所以 <span><span>∣B∣=0|B|=0</span><span><span><span></span><span>∣</span><span>B</span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBp9q0LgSAm3ZV8ZhS1F531fm5sjwqAACNRRrG6jniFbPCO65V4lLEgEAAwIAA3gAAz0E" alt="3.2" /><figcaption>3.2</figcaption></figure><p></p><p>属于经典的错误标准的零分。秩不满则是无穷多解，我就写了一个，此外满秩也应该进行讨论。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqBq0Lghg1h5tIgGIaxKgyqciSSOBgACNxRrG6jniFYEIeoVMPdW-AEAAwIAA3gAAz0E" alt="3.5" /><figcaption>3.5</figcaption></figure><p></p><p>采用特值法。这道题最正规的做法就是令 <span><span>γ\gamma</span><span><span><span></span><span>γ</span></span></span></span> 等于两个式子，然后两个式子变形解出来答案。</p><p>但是感觉不如特值法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqFq0Lgx0Fkxyt8G1LZ1VphOLK3tVgACOBRrG6jniFazzauYLQ_ztAEAAwIAA3gAAz0E" alt="3.6" /><figcaption>3.6</figcaption></figure><p></p><p>对于这类题要采用反证法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqJq0LhsVyrdHt-Zd-U5SKLQeDL88AACORRrG6jniFZZFGwRNrFzRwEAAwIAA3gAAz0E" alt="3.10" /><figcaption>3.10</figcaption></figure><p></p><p>没有任何思路，二刷的时候也错了。</p><p>把握 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 的思想，这个思想特别常见。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqNq0LiPY0816LeRdosF9okeFPCBBwACOhRrG6jniFakEhwJZXQWSwEAAwIAA3gAAz0E" alt="3.11" /><figcaption>3.11</figcaption></figure><p></p><p>这道题错在对定义的理解上。对于这种经典的变形，也就是 <span><span>AαA\alpha</span><span><span><span></span><span>A</span><span>α</span></span></span></span> 这种，一定是构造。（第二问）</p><p>对于第一问也没想到用定义的方法去做，对于证明线性无关，采用定义法证明。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqRq0LioPGQVYUbBm-pJMnKRYIKrEgACOxRrG6jniFbaoV6mZ1x5IAEAAwIAA3gAAz0E" alt="3.12" /><figcaption>3.12</figcaption></figure><p></p><p>这道题没有思路。事实上直接令矩阵然后表达出来就可以做出来了。</p><p>大题不要老是想着用特值法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqVq0Li7iuOhnOUOgMxFnnS1E32NQAACPBRrG6jniFZ-xZy00ggDkAEAAwIAA3gAAz0E" alt="3.13" /><figcaption>3.13</figcaption></figure><p></p><p>对这类题没有头绪，也是二刷最开始写的辨析那里的问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqZq0LjObvwXkCwD0BtGAkVXq3ZIBwACPRRrG6jniFbiJgUS91wqgwEAAwIAA3gAAz0E" alt="3.14" /><figcaption>3.14</figcaption></figure><p></p><p>一样也是辨析的问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqdq0LjeroeRKSfbbROtDAn_oJ2ETQACPhRrG6jniFZIHj-87fLC7QEAAwIAA3gAAz0E" alt="3.15" /><figcaption>3.15</figcaption></figure><p></p><p>思路错误，也是之前讨论的“回代”问题，题目条件不一定只使用一次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqhq0LjxY08WK00qRZ_JzrqxuiBgBgACQBRrG6jniFaOGqogmdjK8wEAAwIAA3gAAz0E" alt="3.17" /><figcaption>3.17</figcaption></figure><p></p><p>D. 设矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>、<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 满足 <span><span>AB=EAB=E</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>E</span></span></span></span>，<span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶单位矩阵，则 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的列向量组线性无关，<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 的行向量组线性无关。</p><p>讨论 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 和 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span>。对于 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 是辨析里面的错误，对于 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 则是脑子抽了错了。被之前那题 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 取 <span><span>n=2n=2</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span> 的反例影响了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqpq0Llbob9jCv8turzqdjpmvf4CFQACQRRrG6jniFZGl-83bhu2JgEAAwIAA3gAAz0E" alt="3.18" /><figcaption>3.18</figcaption></figure><p></p><p>等价，行相关，列相关，行等价，列等价之类的问题。</p></section><section><h3>杨威线性代数强化 1 刷第 4 章<a href="#杨威线性代数强化-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqtq0Ll4dZllepdLnbdLLmQyxIgF6QACQhRrG6jniFYesk9VJbWytAEAAwIAA3gAAz0E" alt="4.3 1" /><figcaption>4.3 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBqxq0LmJqs-Bi7Rvk_BnYW_nOTILrwACQxRrG6jniFatrW9E_ZsOoAEAAwIAA3gAAz0E" alt="4.3 2" /><figcaption>4.3 2</figcaption></figure><p></p><p>这道题主要是数列的首项计算错了，以及没想到克拉默法则。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBq1q0LmaeL73yXAf2LTjcE0um-mHwAACRBRrG6jniFY_-16ZMjuDnQEAAwIAA3gAAz0E" alt="4.5" /><figcaption>4.5</figcaption></figure><p></p><p>这道题主要是最后一步理解错误，假设 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的秩和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 的秩均为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 的情况下，那么 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 矩阵就没用了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBq5q0LmyqS4jkHejgVOGOX2EtTdqngACRRRrG6jniFYNXycnrSH-ggEAAwIAA3gAAz0E" alt="4.7" /><figcaption>4.7</figcaption></figure><p></p><p>从原本的式子下手去变形。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBq9q0LnEq9VyE7Kfkf2vYMtkW76v-gACRhRrG6jniFa5UmtYMU4SiwEAAwIAA3gAAz0E" alt="4.16" /><figcaption>4.16</figcaption></figure><p></p><p>没有任何思路。其实逐项分析即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrBq0LnXtzYMYEfHoY0gdh7vAr8m5wACRxRrG6jniFaWAzm5NZpf-AEAAwIAA3gAAz0E" alt="4.18" /><figcaption>4.18</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrFq0Lnkov9NssfGBaK7rpZK_n5iuAACSBRrG6jniFYnYKGK0RW6EgEAAwIAA3gAAz0E" alt="4.19" /><figcaption>4.19</figcaption></figure><p></p><p>这两题属于同质错误，具体在 2 刷那里讲的很清楚了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrJq0Ln1xuBjCu6r22syrfLyXshRZQACSRRrG6jniFYvuSj9GJIh5gEAAwIAA3gAAz0E" alt="4.22" /><figcaption>4.22</figcaption></figure><p></p><p>计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrNq0LoFTuva2OhhX_Hnd2A6K-soUAACShRrG6jniFYwYnlmOLi-2AEAAwIAA3gAAz0E" alt="4.23" /><figcaption>4.23</figcaption></figure><p></p><p>计算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrRq0LoVpwImvYV0hxf4Obr-p595CgACSxRrG6jniFYIZRp9mf40ugEAAwIAA3gAAz0E" alt="4.24" /><figcaption>4.24</figcaption></figure><p></p><p>计算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrVq0LomLs61r4ez41eBWPlWUYqWtgACTBRrG6jniFYDV-N62Fn1sQEAAwIAA3gAAz0E" alt="4.25" /><figcaption>4.25</figcaption></figure><p></p><p>这类题就是我前面说的，可逆变换与不可逆的问题。</p></section><section><h3>杨威线性代数强化 1 刷第 5 章<a href="#杨威线性代数强化-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrZq0LpBgLQpkObo8pIBoTAcpKiENAACTRRrG6jniFatwSwUqg2JgwEAAwIAA3gAAz0E" alt="5.1" /><figcaption>5.1</figcaption></figure><p></p><p>对于这题我其实不知道能不能直接约去 <span><span>x1x_1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x2x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x3x_3</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，按照标准答案来写吧。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrdq0LpRgN5AAAEVmTvwFVK_lQ3pf2EAAk8Uaxuo54hWynepiod2VtQBAAMCAAN4AAM9BA" alt="5.2" /><figcaption>5.2</figcaption></figure><p></p><p>一脸懵逼，不知道怎么做。对于通解可以挖掘出来很多东西，这道题显然 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 为特征值（一定要注意不是 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，这里是把 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 代入），以及 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 为二重特征值且其特征向量分别为。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrhq0Lpj4Wi0A4k6yhLpMij8E-JxxAACURRrG6jniFatHPdB-JG0owEAAwIAA3gAAz0E" alt="5.6" /><figcaption>5.6</figcaption></figure><p></p><p>可以注意一下这一系列的变形。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrlq0Lpz1zdyYNF9Y0GtPHSRRotiTgACUhRrG6jniFZOG9GsPbrg2AEAAwIAA3gAAz0E" alt="5.7" /><figcaption>5.7</figcaption></figure><p></p><p>这道题非常经典，可以注意一下。例如利用 <span><span>tr\mathrm{tr}</span><span><span><span></span><span><span>tr</span></span></span></span></span> 等，主要是证明相似对角化的方法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrpq0LqxKrlB2V_ZFGTfJcjnUcptsAACUxRrG6jniFZSK0U_Rkkb3AEAAwIAA3gAAz0E" alt="5.9" /><figcaption>5.9</figcaption></figure><p></p><p>这道题需要注意分析方法。对于特征值还可以采用直接设特征值的做法去解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrtq0LreCxBGm4aXlBsGVw9h0k015gACVBRrG6jniFYFnTDnWYGgJQEAAwIAA3gAAz0E" alt="5.13" /><figcaption>5.13</figcaption></figure><p></p><p>计算问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBrxq0Lrwq15-xDWK1dvoKCsd3suX-wACVRRrG6jniFaEmkXpMvAfswEAAwIAA3gAAz0E" alt="5.23" /><figcaption>5.23</figcaption></figure><p></p><p>抄错了。</p></section><section><h3>杨威线性代数强化 1 刷第 6 章<a href="#杨威线性代数强化-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBr1q0LsFteoIpr6-83pXXRFkEjGaYgACVhRrG6jniFbWWGkVZ8jH2wEAAwIAA3gAAz0E" alt="6.4" /><figcaption>6.4</figcaption></figure><p></p><p>对这道题，注意记号问题，本质上是不理解记号的含义。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBr5q0LsZu7bIqIO4Mt_bgTQPFmahbgACVxRrG6jniFYYP5qFILZ6_AEAAwIAA3gAAz0E" alt="6.7" /><figcaption>6.7</figcaption></figure><p></p><p>计算过程乱七八糟的，一定要注意 <span><span>aE+BaE+B</span><span><span><span></span><span>a</span><span>E</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span></span></span></span> 的优化。</p><p>后面就基本没写了。</p></section></section>
<section><h2>880 综合 1 刷<a href="#880-综合-1-刷"><span>#</span></a></h2><section><h3>880 综合 1 刷第 1 章<a href="#880-综合-1-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBt9q0ZvUOWOQnt1r3S7H6_NqmRBKJAAC8g9rG6jnkFZJzoGEwHfweAEAAwIAA3gAAz0E" alt="1.1.4" /><figcaption>1.1.4</figcaption></figure><p></p><p>做这种题就不要想着用泰勒公式了，提取之后展开就行（其实和第 2 章那里是一样的，如果不是在 0 处展开，那就不要用泰勒公式了）</p><p>重刷的时候错了。有关于泰勒公式阶数的问题，需要注意在展开的时候，次数得大于下面的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBuFq0Zwu9AldnUratvApxQo5ru9HdgAC9A9rG6jnkFaxoG6JVDmm8QEAAwIAA3gAAz0E" alt="1.1.14" /><figcaption>1.1.14</figcaption></figure><p></p><p>错选为 C。本题只需要举例即可。对于 1 和 2，显然错误，当 <span><span>xn→+∞x_n\to+\infty</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>+</span><span>∞</span></span></span></span> 时，前者趋于 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，而后者肯定不是；对于 3 和 4，<span><span>arcsin⁡x\arcsin x</span><span><span><span></span><span>arcsin</span><span></span><span>x</span></span></span></span> 本身就是有界函数，只要证明其单调性即可。对于 3，由于 <span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 收敛，所以后者肯定收敛于某个特定值，对于 4 即证明其单调性。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBuJq0ZxRHS8VUgPpTMeEa0tHEKy_xAAC9Q9rG6jnkFa32LENLeci4AEAAwIAA3gAAz0E" alt="1.1.18" /><figcaption>1.1.18</figcaption></figure><p></p><p>第 18 题，错选为 A。本题是结论记错了，对于变上限积分函数，如果里面有可去间断点或者连续，那么变上限积分可导；如果是跳跃间断点，那么变上限积分不可导但连续。</p><p>第 19 题，错选为 D。趋于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 的时候判断错了，<span><span>00</span><span><span><span></span><span>0</span></span></span></span> 这一点虽然没有定义，但是其左右极限存在，不是无穷，所以肯定是在 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 的某个领域内是有界的。</p><p>本题理解错一个很重要的东西，那就是该点的极限不存在不意味着该点肯定是无穷。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBuNq0ZxkB6XQwNgHXg-8xZ6DdYNTfwAC9g9rG6jnkFZsKmg53IetVgEAAwIAA3gAAz0E" alt="1.2.1" /><figcaption>1.2.1</figcaption></figure><p></p><p>低级错误。本题犯了一个经典的错误，标准的零分，那就是 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 和 <span><span>cos⁡x\cos x</span><span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 同时展开后（同时展开多项），然后应该每一项都要和每一项匹配，而不是只匹配几项就开始算了。</p><p>本题类似基础三十讲第 1 章的练习最后 1 题，也可以把 <span><span>sin⁡xcos⁡x\sin x\cos x</span><span><span><span></span><span>sin</span><span></span><span>x</span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 三角变换一下。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBuRq0Zx4moPleyZTl5obrRxoAk3X4QAC9w9rG6jnkFas94WDifcrLwEAAwIAA20AAz0E" alt="1.2.4" /><figcaption>1.2.4</figcaption></figure><p></p><p>第 4 题为低级错误，考虑了等价代换和拉格朗日中值定理之后忘记把 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 带进去了。然后重刷错题也错了，<span><span>ε\varepsilon</span><span><span><span></span><span>ε</span></span></span></span> 是 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 没错，但是问题提示拉格朗日中值定理那个是 <span><span>eεe^{\varepsilon}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>ε</span></span></span></span></span></span></span></span></span></span></span></span>，好像第一次刷也是因为这个错了。</p><p>第 5 题为低级错误，计算问题。考虑将 <span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 进行分部积分，然后推导出 <span><span>an−2a_{n-2}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 之间的关系，这条路其实是走不通的（被以前的固定题型给影响了）。对于这种题，应该先考虑夹逼定理，再去考虑分部积分。</p><p>然后重刷也错了，这题其实就是考虑分部积分，而不是用夹逼定理。我自己做出来用夹逼定理另一侧没得放缩，所以本来就是错误的。</p><p>用答案的方法在做一遍其实还是错的，因为这题其实不是分部积分，只是普通的积分罢了。我在计算的时候把他当分部积分去算了，自然是错的。</p><p>这道题给我最大的感想就是：不要被经验影响了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBuVq0ZyxLGJv57D4E0-_aj7XLKWV-gAC-A9rG6jnkFY-4OOJyrOp4QEAAwIAA3gAAz0E" alt="1.2.9" /><figcaption>1.2.9</figcaption></figure><p></p><p>低级错误，为计算问题。在考虑 <span><span>x→0+x\to0^+</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>0−0^-</span><span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>−</span></span></span></span></span></span></span></span></span></span></span> 的时候，想当然然后直接写答案，而没有具体计算。</p><p>第 2 次算的时候惯性思维，认为 <span><span>[x][x]</span><span><span><span></span><span>[</span><span>x</span><span>]</span></span></span></span> 是 <span><span>x−[x]x-[x]</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>[</span><span>x</span><span>]</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBuZq0ZzEMms2JJlEUkL1Tri-uaeFwwAC-Q9rG6jnkFa0kzwisCN1tgEAAwIAA3gAAz0E" alt="1.2.13" /><figcaption>1.2.13</figcaption></figure><p></p><p>特值法解出答案。本题其实没想到怎么做，错题重刷时根据答案提供的泰勒公式解出来。</p><p>事实上我感觉这道题泰勒公式的来源应该是先通分，通分后可以发现使用泰勒公式</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBudq0ZzYpGKcttNz8VfqZAkG8qF53wAC-g9rG6jnkFb3c8po309iGAEAAwIAA3gAAz0E" alt="1.3.3" /><figcaption>1.3.3</figcaption></figure><p></p><p>第 2 小问等比数列求和计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBuhq0ZzmVKWT8NArq9hyKCmUj8avPgAC-w9rG6jnkFYCcyk84kCfrwEAAwIAA20AAz0E" alt="1.3.6" /><figcaption>1.3.6</figcaption></figure><p></p><p>第 6 题 <span><span>1−e1/x1-e^{1/x}</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>1/</span><span>x</span></span></span></span></span></span></span></span></span></span></span></span> 等价无穷小代换错误。</p><p>第 7 题 <span><span>sec⁡πx\sec\frac{\pi}{x}</span><span><span><span></span><span>sec</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，当 <span><span>x→0x\to0</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span>0</span></span></span></span> 时是什么，计算错误。</p><p>错题重刷时诱导公式符号又错了？其实是第一步错了，<span><span>ln⁡(sin⁡πx)\ln(\sin \pi x)</span><span><span><span></span><span>ln</span><span>(</span><span>sin</span><span></span><span>π</span><span>x</span><span>)</span></span></span></span> 求导没有上手去求，想当然认为是 <span><span>−cos⁡πx-\cos \pi x</span><span><span><span></span><span>−</span><span></span><span>cos</span><span></span><span>π</span><span>x</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBulq0Zz6cblRqe72xI1I_10aSjyfxAAC_A9rG6jnkFb5pVS-qDnY-AEAAwIAA3gAAz0E" alt="1.3.11" /><figcaption>1.3.11</figcaption></figure><p></p><p>对泰勒公式和无穷小的计算不熟悉。本题计算量很大，需要慢慢去分析。</p><p>错题重刷的时候没做出来。</p><p>回归基础，这道题洛必达后，是无穷 - 无穷类型，</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBupq0Z0OAAHl1rrWaB5OvXnR-0pUi9kAAv0Paxuo55BWTtMOd_nGXRoBAAMCAANtAAM9BA" alt="1.3.14" /><figcaption>1.3.14</figcaption></figure><p></p><p>高中数学，对于 1，注意到可以乘上一个 <span><span>1−x1-x</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span></span></span></span>；对于 2，注意到可以乘上一个 <span><span>sin⁡x2\sin\frac{x}{2}</span><span><span><span></span><span>sin</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACButq0Z0nfaC4NV3UoGGdspTrURirkQAC_w9rG6jnkFbD0ojZwDAEGgEAAwIAA20AAz0E" alt="1.3.16" /><figcaption>1.3.16</figcaption></figure><p></p><p>高中数学，列项相消没想到。</p></section><section><h3>880 综合 1 刷第 2 章<a href="#880-综合-1-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBuxq0Z0_EsfFHuOVgk_ZcOMdfsE7UgADEGsbqOeQVglH02kDP2rGAQADAgADeAADPQQ" alt="2.1.1" /><figcaption>2.1.1</figcaption></figure><p></p><p>错选为 C。本题是用蓝笔改成正确选项的，应该是知道错了之后再看一眼然后才改的。</p><p>果然，这题我再做一次之后还是 C，无论是利用特值法画出一个这样的函数还是利用定义简单求解，都做出来是 C。</p><p>复盘之下发现：我特值法出来的函数与该函数的导数没有任何的联系，只是各自为营。</p><p>这道题应该是利用构造函数：<span><span>g(x)=f(x)−xg(x)=f(x)-x</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span></span></span></span> 去做，这样就迎刃而解了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBu1q0Z1W1Zp2AaAwQZOmvRslF2wLzgACARBrG6jnkFZ0SeqMouanUAEAAwIAA3gAAz0E" alt="2.1.3" /><figcaption>2.1.3</figcaption></figure><p></p><p>错选为 C，属于低级错误。本题带来的启示是，如果想采用作图法来解这种题的话，一定要注意端点与两侧很可能情况是不一样的，需要单独考虑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBu5q0Z1t_TcZNnAgDHqsmk94s28YLgACAhBrG6jnkFbbVFnfTzxHeAEAAwIAA3gAAz0E" alt="2.1.7" /><figcaption>2.1.7</figcaption></figure><p></p><p>错选为 ACD，本质是对可导以及洛必达这个条件理解地不够深刻。错题重刷时仍然不知道怎么做，前几天刚看的说在一个区间内可导可以用洛必达，怎么现在又不行了？</p><p>回顾基础 30 讲的第 3 章第 7 题，这题的出来的结论是：如果某个函数在一个区间内 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 阶可导，那么在这个区间内可以洛 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 次；如果一个函数在某点处 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 阶可导，那么只能洛 <span><span>k−1k-1</span><span><span><span></span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次。</p><p>确实是这样的，但是回归洛必达本身，洛的前提是知道洛出来的极限存在，而这道题你不知道 <span><span>f′(x)x\frac{f'(x)}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 极限存在，所以不能洛，得用定义去求 <span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span>，而这道题 <span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 你用定义求不出来是多少。</p><p>而我的记忆里为什么会出现洛呢，因为大部分的题目都是 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在某区间内二阶可导，然后这个时候你可以进行 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次洛（<span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次洛必然是合法的），但是对于第 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次洛，你得提前知道这个极限是多少，你才能洛，否则必须得用定义；而对于某点处，必然只能进行 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次洛。</p><p>基于上述可以总结，大部分情况下其实不管是某点处还是区间上都是只能进行 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次洛，对于区间如果已经知道洛完后的答案，那可以洛第 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBu9q0Z2Uz86LIn9lyByvTDEbE3jzFQACAxBrG6jnkFYMK3KC5brn-wEAAwIAA3gAAz0E" alt="2.1.9" /><figcaption>2.1.9</figcaption></figure><p></p><p>错选为 A。我其实没看懂我 1 刷这道题的方法是什么，应该是分别对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 用定义求对 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 的导数（也得分对 <span><span>t+t^+</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>t−t^-</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>−</span></span></span></span></span></span></span></span></span></span></span>），结果算出来都是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，所以直接就选了 A。</p><p>这个逻辑很怪，第一方面，即便是算出来都是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，那么 <span><span>00\frac{0}{0}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>0</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 也是未定式，所以不能判断；第二方面，如果当 <span><span>x&gt;0x&gt;0</span><span><span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时和当 <span><span>x&lt;0x&lt;0</span><span><span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时算出来的导数 <span><span>dydx\frac{\mathrm{d}y}{\mathrm{d}x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，可以发现他们恰好是相反数，算一下当他们分别趋向于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 的时候，前者是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，后者是 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>，也选不出来是 A。</p><p>事实上，对于这种题应该这么思考：首先判断能不能把 <span><span>x=tx=t</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>t</span></span></span></span> 带入 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span>，从而化简为 <span><span>y=f(x)y=f(x)</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 的具体表达式；如果不行的话，考虑直接用 <span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 导数的定义去做，而不是分别去做，分别做只能算出来分别的值，没法得到整体的定义。</p><p>我在错题重刷的时候其实也理解错了，我是直接先求的二者 <span><span>x&gt;0x&gt;0</span><span><span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 和 <span><span>x&lt;0x&lt;0</span><span><span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 的导数然后判断，这样只能判断出 A 是错的，但是判断不出来其他选项是不是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvBq0Z2q8kPwkWaGgzljEzGc3o4NtAACBBBrG6jnkFYwLnFznfDJewEAAwIAA3gAAz0E" alt="2.1.25" /><figcaption>2.1.25</figcaption></figure><p></p><p>错选为 B。低级错误，做出来是对的，选错了。</p><p>本题错题重刷时也只能用画图法做出来正确答案（1 是直接割线的定义，2 是拆开然后移项可以化简为 <span><span>f(1)&lt;f(x)f(1)&lt;f(x)</span><span><span><span></span><span>f</span><span>(</span><span>1</span><span>)</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span>，然后就有点不会证了）。</p><p>事实上，对于割线那里，直接采用拉格朗日中值定理即可证明；对于拆开之后，其实也很简单，因为 f(x) 在 (0,c) 单调递减，在 (c,1) 单调递增。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvFq0Z4Re3x_C8i5aA2ovOeV4jrEygACBhBrG6jnkFaY6fqqSJDddwEAAwIAA3gAAz0E" alt="2.1.26" /><figcaption>2.1.26</figcaption></figure><p></p><p>D 改为 C 又改为 B，错选为 B。这错题重刷时仍然不怎么会，感觉是没有理解透。我记得 1 刷的时候考虑到了特值法，构造了一个分段函数，从而判断不是充分条件。但是这个例子后来复盘一下，发现其实这个例子即使是给他连续起来，也是一样的。</p><p>对于这个割线严格单调递增可以得出一个结论：<span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 是单调递增的，所以这道题可以翻译一下，<span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 严格单调递增是 <span><span>f′′(x)&gt;0f''(x)&gt;0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 的什么条件，前提仅仅是在区间内有定义。显然，即便是 <span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 严格单调递增，<span><span>f′′(x)f''(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 仍有可能等于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，例如 <span><span>(x−13)3\left(x-\frac{1}{3}\right)^3</span><span><span><span></span><span><span><span><span>(</span></span><span>x</span><span></span><span>−</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span>。所以这题是必要不充分条件。</p><p>但是这么理解启示是有问题的，凹函数只能推导出所有割线斜率递增，然后推导出固定端点割线递增；固定断电割线递增推导不出来导数递增，导数严格递增也推导不出来是凹函数（凹函数的定义是不可以有刚好为 0 的点）</p><p>割线斜率单调递增意味着函数只要在定义端点两侧构成的直线的下面，而具体的构造可以随意，如果是凹函数，那么可以天然的保证都在下面。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvJq0Z4vU_rV9SKq6MX6tx0-WNc5mQACBxBrG6jnkFY824AhwKDnfwEAAwIAA20AAz0E" alt="2.1.26 解 1" /><figcaption>2.1.26 解 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvNq0Z4_SnPQRJhfOac608i6_RZgAwACCBBrG6jnkFZrIqodCOGxGAEAAwIAA20AAz0E" alt="2.1.26 解 2" /><figcaption>2.1.26 解 2</figcaption></figure><p></p><p>这道题还是画图最好理解，严谨证明感觉会很神秘。</p><p>其实本质上感觉这道题的后推前应该利用凹函数的定义，直接说明这个成立就好了（因为所有的点都落在割线之下，所以可以推导出割线单调递增），而割线单调递增不可以推导出凹函数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvRq0Z5TLLANI2-95k9l49XKO6F2mgACCRBrG6jnkFaWxp-XpFIy1gEAAwIAA3gAAz0E" alt="2.1.28" /><figcaption>2.1.28</figcaption></figure><p></p><p>第 28 题错选为 A。为低级错误。重刷错题时依旧跳入这个坑。导函数连续不意味着该点导数存在，例如可去间断点？并不是这么理解的。</p><p>这道题有点偷换概念的意思在这里，函数左极限等于右极限等于这个点的值，那么才是连续的，函数左极限等于右侧极限只能说明在该点处极限存在，这个概念很久以前就搓过，但是 1 刷的时候没反应过来。导函数的左右极限相等等于某个值也是一个道理，题目并没有说它等于该点的具体值，所以 A 是错的。</p><p>第 29 题错选为 D。低级错误，本题是考察导函数连续，而我自己在做的时候只考虑了普通的连续，从而只推导出后面那个条件，并且在做这题的时候错误的使用了等价无穷小来解这道题，应该使用定义推导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvVq0Z5uXeNV_nNukPoaxUFPDk1ZJwACChBrG6jnkFb_OuJngUnnqgEAAwIAA3gAAz0E" alt="2.2.6" /><figcaption>2.2.6</figcaption></figure><p></p><p>第 2 空错答为 2，重刷又错了。对于第 1 空，考虑零点以及改变正负性的点，所以可以得到 x1，x3，O，x4，对于第 2 空，考虑改变单调性的点，所以可以得到 x2，x5，x6。尤其是注意 x6，x6 是驻点，但是不是极值点，但是它是拐点，因为它改变了单调性，被迷惑了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvZq0Z6BHyvPqeBe3Ebk3hf8Uu5h3AACCxBrG6jnkFaw0e6HD_mIZwEAAwIAA3gAAz0E" alt="2.3.6" /><figcaption>2.3.6</figcaption></figure><p></p><p>第 2 问思路混乱。利用罗尔原话来捋清楚思路，重刷的时候猛然理解。两边同时加上一个 f’(η)，构造一次函数 g(x)，这个 g(x) 是需要两个零点可以得到证明得到答案，从而知道 g(x) 再往上构造一次的函数 f(x) 需要三个零点，从而很轻松的推导出逻辑。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvdq0Z6QxV86ZLRtt6Bz11uBzAlPJQACDBBrG6jnkFYoWI3Gk1ghdwEAAwIAA3gAAz0E" alt="2.3.8" /><figcaption>2.3.8</figcaption></figure><p></p><p>第 8 题缪用泰勒展开，例如想对 <span><span>exp⁡(ln⁡(x+1)x)\exp\left(\frac{\ln(x+1)}{x}\right)</span><span><span><span></span><span>exp</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>l</span><span>n</span></span><span>(</span><span>x</span><span>+</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span> 展开，那得先对 <span><span>ln⁡(x+1)\ln(x+1)</span><span><span><span></span><span>ln</span><span>(</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span> 对 <span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 展开，然后再对 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 进行展开，也可以直接对 <span><span>exp⁡(ln⁡(x+1)x)\exp\left(\frac{\ln(x+1)}{x}\right)</span><span><span><span></span><span>exp</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>l</span><span>n</span></span><span>(</span><span>x</span><span>+</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span> 对 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 展开，但得二次展开，否则你的得到的只是 <span><span>ln⁡(x+1)x\frac{\ln(x+1)}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>l</span><span>n</span></span><span>(</span><span>x</span><span>+</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的表达式。
然后在做这题的时候要注意计算，先展开再合并，不要跳步。</p><p>第 9 题在基础 30 讲第 6 章的第 3 题是一样的题目，具体是利用费马定理，也就是可导取极值导函数必为 0。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvhq0Z7lZcRRwAsa7dLG9CafrJF-RgACDRBrG6jnkFbatIKGd0Ns_AEAAwIAA3gAAz0E" alt="2.3.17" /><figcaption>2.3.17</figcaption></figure><p></p><p>第 17 题，误用洛必达法则，和之前的情况一样，在不能洛的地方洛了。并且在错题重刷的时候超时，且没有注意到这题应该 x 有多个选项。本题有两种思路，第一种是利用微分，第二种是利用 f(x)=***+O(x) 去做，而对于后面那种方法，尤其需要注意***是什么。另外还有低级错误，面对因式分解提取公共项，一定也要算出来。</p><p>并且这题其实可以不用导数的定义去做，直接求导就好了</p><p>第 18 题不想算，所以没做。重做的时候在进行计算的时候需要注意从根号里提东西的时候的次数，此外还需要注意一件事，那就是利用链式法则的时候是相乘，而不是相加。另外还需要注意，这道题求的是弧长，而不是距离长度。变限积分不一定要立刻算出来，可以看看有没有求导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvlq0Z8L1xzLNYziB_WLrW2lsF8ZewACDhBrG6jnkFa4imVeJGiNdwEAAwIAA3gAAz0E" alt="2.3.20" /><figcaption>2.3.20</figcaption></figure><p></p><p>属于低级错误，求导错误，这道题直接令其中一个 x 为变量然后求导去算就好了，1 刷时是求导错误。</p></section><section><h3>880 综合 1 刷第 3 章<a href="#880-综合-1-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvpq0aArnkr_lmQPUKNFNBoN0NFj1gACDxBrG6jnkFYvTNCaV44iiwEAAwIAA3gAAz0E" alt="3.1.2" /><figcaption>3.1.2</figcaption></figure><p></p><p>本题没有上手做，纯凭感觉，错题重刷时也没什么头绪。再次看了答案才反应过来，这道题的做法应该是：看到 <span><span>ene^n</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>xnx^n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>，所以想到去凑 <span><span>(xe)n\left(\frac{x}{e}\right)^n</span><span><span><span></span><span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>e</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>，或者反过来，去凑无穷小。尤其需要注意的是，这道题在化简前者的时候，应该将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 视为一个常量，而不是变量看待。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvtq0aBPqww75FzAcQtni_CfSX2GNAACEBBrG6jnkFZTikw_JDwlGgEAAwIAA3gAAz0E" alt="3.1.9" /><figcaption>3.1.9</figcaption></figure><p></p><p>第 9 题采用特值法。比较好的做法是数形结合，然后利用凹凸函数，割线去做。另外以后看到这种题，可以考虑一下两边同时积分，而不是直接变成变限积分，思路来源于莫名其妙出现的 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。</p><p>第 10 题是函数求导问题，求导求错了，但是即便是当时订正，我也是直接根据选项去设函数去计算，本质也算特值法？但是感觉也只能用这种方法来计算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBvxq0aBkN34NlRlNp0XXsIgGsA7bbQACERBrG6jnkFZIllhLIZt5pAEAAwIAA3gAAz0E" alt="3.2.3" /><figcaption>3.2.3</figcaption></figure><p></p><p>本题错误原因来自于在进行最后几步构建函数的时候，理解错误。理解错误大致来源于直接对 <span><span>y′y\frac{y'}{y}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>y</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 脑子构建，没有踏踏实实算。现在回想起来，应该是对微分方程理解不熟练。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBv1q0aB1M_PIAmPzW5jCvuQ27ts67wACEhBrG6jnkFax7YaUfW1p4QEAAwIAA3gAAz0E" alt="3.2.17" /><figcaption>3.2.17</figcaption></figure><p></p><p>第 17 题没有想明白为什么可以先算出来再去积分，现在想来，应该是被中间需要断开给误解了。事实上只需要算出来积分，然后分别求极限即可。</p><p>第 18 题属于低级错误，把积分下限 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 看成了 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p>第 19 题想到了洛，但是洛的合理性在哪里？事实上，这道题是趋于 <span><span>0+0^+</span><span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span>，所以将区间分为两部分，<span><span>0∼10\sim1</span><span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span>1</span></span></span></span> 和 <span><span>1∼+∞1\sim+\infty</span><span><span><span></span><span>1</span><span></span><span>∼</span><span></span></span><span><span></span><span>+</span><span>∞</span></span></span></span>，显然，后面那部分是收敛的，但是前面那部分不是，所以上面是无穷！</p><p>第 20 题错误原因和 17 题类似。</p><p>第 21 题错误原因为换元法经典错误，也就是想当然的积分上下限，而对于错题重刷的时候，抄错了符号。</p><p>第 22 题对积分的定义理解不深刻，只理解了 <span><span>1n\frac{1}{n}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，没有理解其他的。事实上，应该这么理解定义：底边边长和采样点。对于区间 <span><span>[u,v][u,v]</span><span><span><span></span><span>[</span><span>u</span><span>,</span><span></span><span>v</span><span>]</span></span></span></span>，假设分为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 份，那么底边边长自然是 <span><span>v−un\frac{v-u}{n}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>v</span><span>−</span><span>u</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，而采样点则是 <span><span>u+(v−u)inu+\frac{(v-u)i}{n}</span><span><span><span></span><span>u</span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span>v</span><span>−</span><span>u</span><span>)</span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，这道题和前面第 15 章最后一题二刷那里错误类似，对于坐标的理解。一定要画图。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBv5q0aCQARV5--t6tZ4KWFZB8hgSUQACExBrG6jnkFYCmP4MAAEXObEBAAMCAANtAAM9BA" alt="3.3.1" /><figcaption>3.3.1</figcaption></figure><p></p><p>第 1 题的第 1 问使用牛莱公式代入的时候错误；第 2 问错误来源是变限积分的上限没有求导。</p><p>第 2 题直接没做。感觉是没敢作，但是其实把 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 解出来就做出来了。可能是思路走错了，被第 1 问影响了认为是分部积分。</p><p>第 3 问没想到怎么做。错题重刷时其实也想错了，不应该先想分部积分，把希望放在赌老师刚好凑出来，应该先去思考怎么凑进去，尤其是 e 以及三角函数。</p><p>第 4 问没去做，应该是嫌麻烦。重刷时想当然了，注意 <span><span>ee</span><span><span><span></span><span>e</span></span></span></span> 的上面是 <span><span>−sin⁡x-\sin x</span><span><span><span></span><span>−</span><span></span><span>sin</span><span></span><span>x</span></span></span></span>，而不是 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span>，我在换元法的时候用的是 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span>，然后 <span><span>ee</span><span><span><span></span><span>e</span></span></span></span> 却没变。</p><p>第 5 问题目抄错了，上面的 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 本来是代对了，然后再抄一次抄成了 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBv9q0aCqTUb7ceO17CRMs0gOLJG-dAACFBBrG6jnkFYmzQ9jRng1ZgEAAwIAA20AAz0E" alt="3.3.7" /><figcaption>3.3.7</figcaption></figure><p></p><p>第 7 题。本题属于低级错误，将 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 以为可以直接提到外面去做。</p><p>第 8 题。本题没有注意到一个条件，那就是 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 仅为连续，所以不可以换元后直接求导，而是注意到 <span><span>f(x)x\frac{f(x)}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 存在，从而去把 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 给消去，错题重刷的时候犯了一个经典的错误标准的零分，把已经提取到外面的 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 给漏了，提的时候还提醒了自己要记得，结果回头就忘了。</p><p>第 9 题。本题没敢做。重刷一下，其实只是计算量有点大，不难。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwABatGgv4B8Xdfv3MIHrzjSNtf_dnAAAhUQaxuo55BWSK8PBLBYNsABAAMCAAN4AAM9BA" alt="3.3.19" /><figcaption>3.3.19</figcaption></figure><p></p><p>本题第 2 问计算错误，使用牛莱公式时的带入正负号计算错误，没有稳扎稳打写出来，只是脑测。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwFq0aDe1P5bvbMjZGyvH_5Y23ISoQACFhBrG6jnkFbfpydiGOJLuAEAAwIAA3gAAz0E" alt="3.3.22" /><figcaption>3.3.22</figcaption></figure><p></p><p>第 22 题，答案采用三角换元，我自己是采用分部积分计算出 <span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>an−2a_{n-2}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的关系，然后不会做了。对于这种题，联想一下单调性便可以迎刃而解（类似 <span><span>cos⁡x\cos x</span><span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span>，也就是基础 30 讲第 2 讲的题）</p><p>都 23 题，没想到怎么做。但是考虑将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 凑进去，会发现此路不通，所以只能试着把 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 凑进去，就是别人凑好的。对于第 2 问其实也没想到，但是其实也是和 22 题类似，利用简单的单调性就可以放缩出来，对于这类题一定要注意单调性。</p><p>第 24 题求出递推关系之后想当然认为 <span><span>In−1I_{n-1}</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 递推出来的东西还是 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>。</p><p>第 25 题采用了将下面凑进去的方法（直接消耗 2 次方），此路不通，所以换路，只能直接分部积分。我是觉得，这道题应该先考虑我自己方法的合理性，显然是不合理的，因为还得额外去讨论 <span><span>n=1n=1</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 的情况（毕竟是直接凑进去一个 2 次方）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwJq0aD0AblPhUhRYFYrQufn8X5cCwACFxBrG6jnkFZAjjI5fWyZogEAAwIAA3gAAz0E" alt="3.3.28" /><figcaption>3.3.28</figcaption></figure><p></p><p>第 28 题想到了把 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 代换为 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，但是落实的时候没有处理好 <span><span>x−ax-a</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span></span></span></span>，导致计算困难。答案采用了一个很神秘的方法，我认为这不是我能掌握的。但是对于这题，只要把 <span><span>x−ax-a</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span></span></span></span> 乘过去，然后用拉格朗日中值定理就可以很轻松的证明。</p><p>第 29 题第一反应是设 <span><span>g(x)g(x)</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span></span></span></span> 把上面两个条件串起来然后求导。但是应该是有问题的，这样不可以充分利用条件。对于这道题，知道是一定要中间踩一个点，但是这个点是什么。由于原函数是 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span>，那么也就是要找一个 <span><span>F(x0)=0F(x_0)=0</span><span><span><span></span><span>F</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，所以考虑分部积分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwNq0aEOvb4VqIhWlLXr4Sn34qEOzAACGBBrG6jnkFYlfHO6kQJ6cQEAAwIAA3gAAz0E" alt="3.3.43" /><figcaption>3.3.43</figcaption></figure><p></p><p>第 43 题极限求错了，原因是没想明白 <span><span>0−1=0\frac{0}{-1}=0</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>0</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，而不是 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>。</p><p>第 44 题没写。</p><p>第 45 题到这里才想明白抽球做功（或者水）都是对重力做功。</p><p>第 46 题没写。</p><p>第 47 题没想明白 <span><span>x=r(θ)cos⁡θx=r(\theta)\cos\theta</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>θ</span><span>)</span><span></span><span>cos</span><span></span><span>θ</span></span></span></span>，把这个想明白之后就解出来了</p><p>第 48 题没算完。与基础 30 讲第 10 讲课后题最后一题是一样的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwRq0aEkCv8Pa_PmsKtSmdxzEyT_8wACGRBrG6jnkFY1GXYBQGAyNwEAAwIAA3gAAz0E" alt="3.3.49" /><figcaption>3.3.49</figcaption></figure><p></p><p>第 49 题没算完。</p><p>第 50 题求导错误：<span><span>f(x)=(ln⁡2)−xxf(x)=\frac{(\ln 2)^{-x}}{x}</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span><span>l</span><span>n</span></span><span></span><span>2</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>−</span><span>x</span></span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，求导没有对下面的 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 求导。</p><p>第 51 题没想出来第 1 步怎么推。</p><p>第 52 题搞错积分上下限。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwVq0aE4OWRcNuVuLZW45B08V7xXQwACGhBrG6jnkFYqCcZPw2iaKwEAAwIAA3gAAz0E" alt="3.3.54" /><figcaption>3.3.54</figcaption></figure><p></p><p>第 54 题没想明白 <span><span>cos⁡θ\cos\theta</span><span><span><span></span><span>cos</span><span></span><span>θ</span></span></span></span> 是什么。</p><p>第 55 题没有证明出来=是对的。</p></section><section><h3>880 综合 1 刷第 4 章<a href="#880-综合-1-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwZq0aFWPp8y21a0oY4f15q5qehpewACGxBrG6jnkFbz0a7FU5D4bQEAAwIAA3gAAz0E" alt="4.1.2" /><figcaption>4.1.2</figcaption></figure><p></p><p>本题错选为 A，为低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwdq0aFo7QpAIE9h_6JoD5LrOxb1jQACHBBrG6jnkFZurkYjLO1BsAEAAwIAA3gAAz0E" alt="4.1.7" /><figcaption>4.1.7</figcaption></figure><p></p><p>本题没做。现在突然反应过来，这道题就是隐函数存在定理，也就是基础 30 讲第 13 章感觉到懵逼的点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwhq0aGT0Rnlqo_TFXQpkbmKFZu1awACHRBrG6jnkFbOvg6EBQABGzUBAAMCAANtAAM9BA" alt="4.2.3" /><figcaption>4.2.3</figcaption></figure><p></p><p>本题没考虑将 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 和 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 代入导致错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwlq0b9oHc0NgYy9AczPbS8pn92jwQACNxBrG6jnkFbudNalJcExbwEAAwIAA20AAz0E" alt="4.3.1" /><figcaption>4.3.1</figcaption></figure><p></p><p>计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwpq0b-konEnipwZf2_twCbCUaC3ngACORBrG6jnkFZXGvnvm4wqxQEAAwIAA3gAAz0E" alt="4.3.4" /><figcaption>4.3.4</figcaption></figure><p></p><p>条件最值没有求出全的可能最值，只求了一部分。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwtq0b-3mQIx_D04V3o52D0hzMJTigACOhBrG6jnkFbLpKZF8ltaRwEAAwIAA20AAz0E" alt="4.3.9" /><figcaption>4.3.9</figcaption></figure><p></p><p>本题想利用圆的极值去做，但是忽略了极值也是被底下分母 <span><span>y2y^2</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 所影响。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBwxq0b_IkYH2v-gb-X2gg7CHmeLtlgACOxBrG6jnkFZrPt3P1-AQHQEAAwIAA3gAAz0E" alt="4.3.16" /><figcaption>4.3.16</figcaption></figure><p></p><p>第 16 题对记号的理解不够深刻，但是背后的本质是没有理解 <span><span>d\mathrm{d}</span><span><span><span></span><span>d</span></span></span></span> 这个符号（答案的做法太麻烦了）。D，也就是取全微分，利用全微分稳扎稳打去计算即可。</p><p>第 17 题对偏导数在点的连续判断错误（没有稳扎稳打去算，而只是猜了一个值）。</p><p>第 18 题则是完全没有想到转换为到圆点的最值（现在也没想明白），但是仔细想想，是不是椭圆的长半轴就是椭圆到原点的最大值？椭圆的短半轴是不是就是椭圆到原点的最小值？所以这道题就可以转换为条件最值去做。</p><p>第 19 题没具体去算。</p><p>第 20 题想用不等式去做，没做出来，其实用拉格朗日乘数法去做就可以了。</p></section><section><h3>880 综合 1 刷第 5 章<a href="#880-综合-1-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBw1q0b_nuDKSH3r4ecXKVfQqXEhD7AACPBBrG6jnkFZgo-nLhjW0uQEAAwIAA3gAAz0E" alt="5.1.3" /><figcaption>5.1.3</figcaption></figure><p></p><p>第 3 题错选为 C。属于低级错误，<span><span>arctan⁡1=π4≠π2\arctan 1=\frac{\pi}{4}\ne\frac{\pi}{2}</span><span><span><span></span><span>arctan</span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>第 4 题错选为 A。属于低级错误，<span><span>rcos⁡θ=x≠yr\cos\theta=x\ne y</span><span><span><span></span><span>r</span><span></span><span>cos</span><span></span><span>θ</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>y</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBw5q0cBbQMm6Fvmtr2MthbQflQABW6cAAj4Qaxuo55BWwIQLw6iX_KwBAAMCAAN4AAM9BA" alt="5.1.6" /><figcaption>5.1.6</figcaption></figure><p></p><p>本题一刷时没看完题目，且没理解题目意思，错题重刷时完全没思路去解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBw9q0cB-MTp30BhSjpG1uHijAAHcZT0AAj8Qaxuo55BW9Im1VlbS7bIBAAMCAAN4AAM9BA" alt="5.1.7" /><figcaption>5.1.7</figcaption></figure><p></p><p>本题理解错上下限的定义，将 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 当为第二变量的上限，而不是正确的值。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxBq0cCaq6xvuP-Yg3vNoQnGWSf8aQACQBBrG6jnkFaufN_lv7TLSAEAAwIAA3gAAz0E" alt="5.3.1" /><figcaption>5.3.1</figcaption></figure><p></p><p>1 刷时理解错对称性；错题重刷时候，在 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span> 到 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 化简成 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 时，同时在外侧和内测乘了一个 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，最后算出来答案的两倍。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxFq0cHHx2R8Sub9MEORYruAJO9WXgACQhBrG6jnkFZ6dtt5tbOtTAEAAwIAA3gAAz0E" alt="5.3.4" /><figcaption>5.3.4</figcaption></figure><p></p><p>第 4 题一直想着用对称性化简，但是事实上这道题基本上是硬算。需要注意的是，在硬算的时候可以采用一个技巧，也就是不要把式子放在一起。例如我要硬算 <span><span>x2−yx^2-y</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>y</span></span></span></span> 的积分，那么可以先算 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 的积分，再去处理 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的积分，不要放在一起，放在一起非常容易乱。</p><p>第 5 题为理解问题，将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 代入为 <span><span>−x-x</span><span><span><span></span><span>−</span><span>x</span></span></span></span>，<span><span>−y-y</span><span><span><span></span><span>−</span><span>y</span></span></span></span> 是关于原点对称。此外在错题重刷的时候，一定要想清楚自己这么化简是为了什么。显然这道题要求出 <span><span>r=r(θ)r=r(\theta)</span><span><span><span></span><span>r</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>θ</span><span>)</span></span></span></span>，从而进行换元法，而不是一开始就想着直接去拆开化简，最后画出来自己都不知道自己在做什么。做数学题一定不可以抱着试试的态度去做，一定要想清楚我这么做可能能得到什么。在计算积分的时候，对于三角函数，首先先直接考虑能不能用 <span><span>sec⁡\sec</span><span><span><span></span><span>sec</span></span></span></span>，而不是先化简（被以前写的东西误解了）</p><p>第 6 题需要注意对称性，前面一直在那里错误的使用对称性，这道题应该使用对称性的反而没有用对称性。</p><p>第 7 题为低级错误。令 <span><span>2θ=t2\theta=t</span><span><span><span></span><span>2</span><span>θ</span><span></span><span>=</span><span></span></span><span><span></span><span>t</span></span></span></span>，结果求 <span><span>d\mathrm{d}</span><span><span><span></span><span>d</span></span></span></span> 的时候忘记系数了。</p><p>第 8 题为低级错误。<span><span>Y=(1−x4)1/4Y=(1-x^4)^{1/4}</span><span><span><span></span><span>Y</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>1/4</span></span></span></span></span></span></span></span></span></span></span></span>，而不是开根号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxJq0cHgf1uFLZSVesdL2Pv30M2uEwACQxBrG6jnkFZj_rRiWyFyhQEAAwIAA3gAAz0E" alt="5.3.10" /><figcaption>5.3.10</figcaption></figure><p></p><p>第 10 题为低级错误，积分上下限错误。</p><p>第 11 题我其实没有看懂我那个时候是怎么做的，感觉本质是因为没有理解清楚积分中值定理。现在是理解了，这里还包括变限积分求导，可以把二维的变限积分，里面的那个写成一个函数，因为本质上其实就是一个函数来看待，这样的话会非常舒服。这道题积分中值定理是走不下去的。</p><p>第 12 题应该是直接用的 <span><span>f(x,y)−f(0,0)f(x,y)-f(0,0)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>f</span><span>(</span><span>0</span><span>,</span><span></span><span>0</span><span>)</span></span></span></span>。想当然解，没有根据具体的定义去具体代入。</p><p>第 13 题为低级错误，在最后使用牛莱公式代入得时候错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxNq0cH2Nm3tObjjs4UJBYWB3mx7ZAACRBBrG6jnkFYWXMBGBPXZcQEAAwIAA3gAAz0E" alt="5.3.15" /><figcaption>5.3.15</figcaption></figure><p></p><p>第 15 题没算完，处理技巧不好。</p><p>第 16 题积分上下限错误。</p><p>第 17 题我这边打印出来的题错了，且需要注意这道题是求得是一个点，而不是函数，所以和函数的处理手段不一样。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxRq0cIM_RnatQ4x515krUSh2LDt7AACRRBrG6jnkFaAA8bqGl5tjgEAAwIAA3gAAz0E" alt="5.4.19" /><figcaption>5.4.19</figcaption></figure><p></p><p>第 19 题跳。错题重刷时应该知道，对于这种题先是变限积分，变形到只有一维的时候，再往下走只能用一维积分的中值定理，然后再用泰勒公式展开。这里对定义的理解感觉也有偏差。微分的定义。另外还需要注意，如果用积分中值定理得到的东西，需要夹逼定理之类的去搞，而不能想当然地去让它等价于 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>。</p><p>第 20 题求的是 <span><span>f(x,y)f(x,y)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span>。求出来 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 之后没有带回去。</p><p>第 21 题没有考虑定义域，导致积分上下限错误。</p><p>第 22 题积分错误，为 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span>，<span><span>xsin⁡xx\sin x</span><span><span><span></span><span>x</span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 之类的变形积分错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxVq0cId9E7ZzAZEy9nhPeQDDJiDqgACRhBrG6jnkFYAAW2UxCLHzRQBAAMCAAN4AAM9BA" alt="5.4.25" /><figcaption>5.4.25</figcaption></figure><p></p><p>错用积分中值定理，对于变量的积分中值定理需要慎用。</p></section><section><h3>880 综合 1 刷第 6 章<a href="#880-综合-1-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxZq0cI3WhtbudtSEwYl9ChLKxV2cQACRxBrG6jnkFZz0FWuvPUQgAEAAwIAA3gAAz0E" alt="6.1.4" /><figcaption>6.1.4</figcaption></figure><p></p><p>本题没有能做到稳扎稳打去分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxdq0cJH1YB-p1snE-qFmXouq_2nsgACSBBrG6jnkFZ1O5WWkgOM_gEAAwIAA3gAAz0E" alt="6.1.6" /><figcaption>6.1.6</figcaption></figure><p></p><p>第 6 题，注意正整数。</p><p>第 7 题，最后一小步错误，属于非常低级的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxhq0cJWEDcx3RZAW_qI88Rv_kUaLQACSRBrG6jnkFZ4eUfTWZjHWwEAAwIAA3gAAz0E" alt="6.2.3" /><figcaption>6.2.3</figcaption></figure><p></p><p>没想到怎么做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxlq0cJrb2af5YKiJL527P5-xQ9bgwACShBrG6jnkFZkLkrLji-3fgEAAwIAA3gAAz0E" alt="6.2.6" /><figcaption>6.2.6</figcaption></figure><p></p><p>第 6 题，错误在于算出 <span><span>N=12N=\frac{1}{2}</span><span><span><span></span><span>N</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 时，想当然写余项，而不是代入。</p><p>第 7 题，用了一个神秘的方法，解出来之后，没有思考二阶导只有 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 个 <span><span>CC</span><span><span><span></span><span>C</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxpq0cJ-7zlAgzATD2eml40Sw3-xBQACSxBrG6jnkFbEE0Esg3H87QEAAwIAA3gAAz0E" alt="6.2.9" /><figcaption>6.2.9</figcaption></figure><p></p><p>第 9 题没去做。</p><p>第 10 题属于低级错误，有一个问题就是 <span><span>ecos⁡xe^{\cos x}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>c</span><span>o</span><span>s</span></span><span></span><span>x</span></span></span></span></span></span></span></span></span></span></span></span>，其后面是无界的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxtq0cKaBSJ7asDa5U93QgOaNOg7VQACTBBrG6jnkFb1hAlmTNQXTgEAAwIAA3gAAz0E" alt="6.3.7" /><figcaption>6.3.7</figcaption></figure><p></p><p>没见过这类题。错题重刷时其实也没想到怎么做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBxxq0cLBfhR3U0UusAyJjpU4pDvBFgACTRBrG6jnkFYHDBGlJwiLVQEAAwIAA3gAAz0E" alt="6.3.9" /><figcaption>6.3.9</figcaption></figure><p></p><p>第 9 题最后一步错误，<span><span>cos⁡2π=1≠\cos 2\pi=1\ne</span><span><span><span></span><span>cos</span><span></span><span>2</span><span>π</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span></span></span></span> 其他。</p><p>第 10 题最后一步错误，解出来了 <span><span>y′y'</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 之后，进行下一步的时候抄错了符号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBx1q0cLSjaQskJBNkM2U7O2-dSpGbQACThBrG6jnkFasWDuFabopwAEAAwIAA3gAAz0E" alt="6.3.12" /><figcaption>6.3.12</figcaption></figure><p></p><p>没见过这类题，看到这种题应该是要往上凑的，错题冲刷的时候没想到。</p><p>然后后面都没做了。</p></section></section>
<section><h2>张宇 30 讲基础高数 2 刷<a href="#张宇-30-讲基础高数-2-刷"><span>#</span></a></h2><section><h3>张宇 30 讲基础高数 2 刷第 1 章<a href="#张宇-30-讲基础高数-2-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADdmrEb62USAdkSRChuw7Fc2RuVZMeAAL_EmsbxNooVlGqqujdvEEFAQADAgADbQADPQQ" alt="1.2.11" /><figcaption>1.2.11</figcaption></figure><p></p><p>本题做错，原因是只考虑了 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 范围是 <span><span>[−π2,π2]\left[-\frac{\pi}{2},\frac{\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span> 的情况。</p><p>做这题首先都考虑定义域，可知定义域就是 <span><span>R\mathbb{R}</span><span><span><span></span><span>R</span></span></span></span>。所以需要讨论其他情况。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAY9qx01ad4h8X1kLUlHnW42s851YZgACzg9rGz_BOFaeVWRedpSCDwEAAwIAA3kAAz0E" alt="1.2.11 订" /><figcaption>1.2.11 订</figcaption></figure><p></p><p>这道题订正下来其实也是瞄到了答案才做出来的，无从下手分析，对于绘制函数图像，从函数的四个性态出发，显然本题应该从周期性考虑。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 2 章<a href="#张宇-30-讲基础高数-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAY1qxoV-8qo0C7vkqyuVB4BiylLrlAAC9A5rGz_BOFaPxORlF5YYLgEAAwIAA3gAAz0E" alt="2.1.14" /><figcaption>2.1.14</figcaption></figure><p></p><p>这一题可以注意一下，没说做错了，但是在证明有下界的时候，我是直接说他 <span><span>&gt;0&gt;0</span><span><span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，所以有下界，从而必然有极限，但是可以更优雅一点。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 3 章<a href="#张宇-30-讲基础高数-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAZBqx02IBBENlkOcJE8rDvir_TrPegACzw9rGz_BOFbAh5lmmsHpKAEAAwIAA3gAAz0E" alt="3.2.2" /><figcaption>3.2.2</figcaption></figure><p></p><p>本题考虑了复数。但是需要注意一件事，以 <span><span>x3−1x^3-1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 举例，其虽然有 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 个复根，但是它们并没有对函数的性态产生影响（指的是并没有在 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 轴上产生多余的零点）。所以不需要考虑复根。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 4 章<a href="#张宇-30-讲基础高数-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVdqxl9d1JcWM-gTed-dTnNN95wQrQACwxRrGz_BMFaq0qF9fvScmgEAAwIAA3gAAz0E" alt="4.1.10" /><figcaption>4.1.10</figcaption></figure><p></p><p>经典的错误，标准的零分：除以 <span><span>11+t2\frac{1}{1+t^2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>1</span><span>+</span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 一定不是直接把这个写在分母，一刷也错在这个知识点上面。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAZNqx05Y_sbY0lkosgJRaAmKPy7-HAAC0g9rGz_BOFaN-bLmB6ciKAEAAwIAA3kAAz0E" alt="4.1.10 订" /><figcaption>4.1.10 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVhqxl-jZwGwg9rQOXETh76lqtWQEQACxBRrGz_BMFYII1TkMFaCoQEAAwIAA3gAAz0E" alt="4.1.11" /><figcaption>4.1.11</figcaption></figure><p></p><p>做了一阵子之后意识到要取对数，也意识到应该答案里不可以带 <span><span>y′y'</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span>，但是最后一步的时候，忘了把 <span><span>y′y'</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 展开。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAZVqx1AZAAEpwAbY-LTA_LWfDx25kHgAAtMPaxs_wThWFmDoCgr7pWgBAAMCAAN5AAM9BA" alt="4.1.11 订" /><figcaption>4.1.11 订</figcaption></figure><p></p><p>不过这道题订正的时候采用的是往回带的形式，我觉得比取对数更好想出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAVtqxl_kR-KgUhTK8ucSLLym-vWo6AACyBRrGz_BMFa7R576nCaxBAEAAwIAA3gAAz0E" alt="4.1.19" /><figcaption>4.1.19</figcaption></figure><p></p><p>利用泰勒公式，先展开后面，但是在进行乘 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 时，只同步缩小了下面的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>，没有同步缩小上面的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>。尤其需要注意该漏洞。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAZdqx1DaQrqrX1HXvi0PHp_HEHtITwAC1A9rGz_BOFa599KtClTZ2QEAAwIAA3kAAz0E" alt="4.1.19 订" /><figcaption>4.1.19 订</figcaption></figure><p></p></section><section><h3>张宇 30 讲基础高数 2 刷第 5 章<a href="#张宇-30-讲基础高数-2-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAZhqx1Drl1QOffJM5TW2D1I5uMPugwAC1Q9rGz_BOFZ7goukcpkE4wEAAwIAA20AAz0E" alt="5.1.6" /><figcaption>5.1.6</figcaption></figure><p></p><p>错选为 B。</p><p>当准则失效了，那么就利用最基本的东西去看，也就是当 <span><span>x&lt;0x&lt;0</span><span><span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 的时候，<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的二阶导的性质，当 <span><span>x&gt;0x&gt;0</span><span><span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 的时候，<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的二阶导的性质。</p><p>回归本源。</p><p>另外对于拐点，极值点的东西，可以去翻一下 p149 页的二级结论（感觉也不大会去看）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAZpqx1JXwvda4J48mphXIqsWTpBJzwAC1w9rGz_BOFbqJgU0DLx8qwEAAwIAA3kAAz0E" alt="5.1.6 订" /><figcaption>5.1.6 订</figcaption></figure><p></p><p>其实意思就是无定义点看附近。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWZqxn98AuJ0pcKHvgoNFphELIYKzAACIRVrGz_BMFYpkV4DC14DigEAAwIAA3gAAz0E" alt="5.2.1" /><figcaption>5.2.1</figcaption></figure><p></p><p>做对了，但是这题需要着重注意：</p><p>1.特值法只能排除，不可以确定答案
2.针对这道题无从下手，为什么，因为没判断出函数的性质，所以需要对整体进行求导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAZxqx1KpdBbNRmhf2hGoMcmBpjViXwAC2g9rGz_BOFaS0VwicniTlAEAAwIAA20AAz0E" alt="5.2.5" /><figcaption>5.2.5</figcaption></figure><p></p><p>低级错误。<span><span>uvuv</span><span><span><span></span><span>uv</span></span></span></span> 型求导的想当然：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAZ1qx1K7iijkK0xnUe9MC5e90D2R5wAC2w9rGz_BOFa6zCUlCVdvEQEAAwIAA3gAAz0E" alt="5.2.5 订" /><figcaption>5.2.5 订</figcaption></figure><p></p><p>关于这里，所有需要变动正负号的时候都必须要注意作用范围。</p><p>错题重刷的时候有歧义，主要是在 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 是不是拐点的讨论上。化简到最后，可以注意分母有一个是 <span><span>x4x^4</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span></span></span></span>，所以 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 显然是不影响的。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 6 章<a href="#张宇-30-讲基础高数-2-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAWlqxn-7fcbWOVT3FjLQTSwC9P2fVAACJBVrGz_BMFbsnrTJDP6JIQEAAwIAA3gAAz0E" alt="6.1.3" /><figcaption>6.1.3</figcaption></figure><p></p><p>2 刷时，知道不妨令以及用导数定义区表达，并且可以通过画图得出结论，但是不知道怎么表达。</p><p>忽略了费马定理：某点可导且为极值，该点导数值为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAW9qxoCIELiOKArSZ0J1mLFn3jRhGAACKhVrGz_BMFbUg_WzH-p7AAEBAAMCAAN4AAM9BA" alt="6.1.12" /><figcaption>6.1.12</figcaption></figure><p></p><p>错选为 B。属于低级错误。意识到了是凹函数和凸函数的定义，但是直接想当然选选项，而没有细致分析。其实再多想一小下就可以意识到凹函数 <span><span>f′′(x)&gt;0f''(x)&gt;0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，然后列出定义就可以做出来。</p><p>正推法，泰勒展开，在 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 处展开；排除法，显然可以通过直线排除 A 和 C，然后通过特例，也就是 <span><span>(x−12)2−1\left(x-\frac{1}{2}\right)^2-1</span><span><span><span></span><span><span><span><span>(</span></span><span>x</span><span></span><span>−</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 相关排除掉 B</p><p>错题重刷也是用的特值法，特值法比较好想出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAaBqx1U4yTncD2Frk0Gxk1JmSuay-wAC5A9rGz_BOFaKBZNzBSeA_wEAAwIAA20AAz0E" alt="6.1.19" /><figcaption>6.1.19</figcaption></figure><p></p><p>知道大概怎么做，但是不知道怎么表达。利用罗尔原话！</p><p>或者讨论 <span><span>sin⁡xx\frac{\sin x}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>s</span><span>i</span><span>n</span></span><span></span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></p><p>回过头来思考一下这道题。</p><p>如果是利用罗尔原话，那么得在闭区间上讨论，求二阶导之后发现至多有 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 个零点，并且被端点占了，所以闭区间内必然没有零点，所以随便找一点就可以说明其正负性</p><p>而这道题也可以直接讨论，因为区间就是在 <span><span>[0,π2]\left[0,\frac{\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span>0</span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span>，不需要给自己加戏</p><p>然后，这道题直接用凸函数弦弧法即可，也就是因为两端点为 0，且二阶导恒负，所以是上凸的，可以直接说明。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAaFqx1Vl74402RSZnhJJ1b0GXOPqeAAC5g9rGz_BOFaZnJUubOMJwAEAAwIAA3gAAz0E" alt="6.2.8" /><figcaption>6.2.8</figcaption></figure><p></p><p>被强化的一道题影响了，注意这道题给定区间是 <span><span>[0,1][0,1]</span><span><span><span></span><span>[</span><span>0</span><span>,</span><span></span><span>1</span><span>]</span></span></span></span>，而不是 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span></p></section><section><h3>张宇 30 讲基础高数 2 刷第 8 章<a href="#张宇-30-讲基础高数-2-刷第-8-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAaJqx1YQ3rtJ4K7aw1ybFFb0E3zE6gAC6Q9rGz_BOFYKIoETAoSZ9AEAAwIAA20AAz0E" alt="8.1.3" /><figcaption>8.1.3</figcaption></figure><p></p><p>1 刷时没搞清楚原函数、定积分、变限积分和反常积分的概念，而二刷时这题也错了。</p><p>这里总结一下，如果一个函数的导数在该区间内有第一类间断点或者无穷间断点，那么一定没有原函数。如果有震荡间断点，那么不一定。</p><p>一个函数在某区间内可积的条件是连续，或者有界 + 有限个不包含无穷的间断点，或者单调，或者有有限个间断点。</p><p>对于这题，通过上面的判别法可知，1 不存在原函数，但存在定积分；2 存在原函数，但是不存在定积分。这里判断定积分存不存在的粗浅的办法是可以看导函数的这个是不是无穷振荡间断点；4 存在原函数，由于他是趋于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 的震荡间断点，所以可积分（有界 + 有一个震荡间断点）；3 没有原函数，也没有不定积分。</p><p>这里又得和变限积分区别开来，假设变限积分里面的 <span><span>f(t)f(t)</span><span><span><span></span><span>f</span><span>(</span><span>t</span><span>)</span></span></span></span> 连续或者有可去间断点，那么变限积分可导，如果有跳跃间断点，那么是连续，如果有无穷间断点，那么是不连续。</p><p>那么，变限积分和定积分在判别法上的区别是什么？我们讨论的是定积分存在与否，而变限积分这里有更高的要求，要求判断这个变限积分函数的性质。</p><p>【定理】：如果函数 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在闭区间 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上的定积分存在，那么 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上必定是有界函数！</p><p>如果导函数 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在有限区间上【有界】，那么原函数 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 必然【有界】！</p><p>在有限区间上：若原函数 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span>【无界】，导函数 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 必然【无界】！</p><p>重刷的时候是没问题的，判断出来 2 的导函数是无穷震荡间断点，所以定积分不存在（定积分存在得该函数是有界的，在 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 处无界）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAaNqx1a2hQLyGGm-X8RZE4dowQ3PHwAC7g9rGz_BOFZ3DJKn9b8x1wEAAwIAA3gAAz0E" alt="8.1.7" /><figcaption>8.1.7</figcaption></figure><p></p><p>积分中值定理证明这题会导致循环论证。</p><p>必然存在一点 <span><span>cc</span><span><span><span></span><span>c</span></span></span></span> 是正的，然后取微小区间，用矩阵面积来算。</p><p>重刷，利用任取一点的附近证明，主要是思路得会（不可以用积分中值定理，因为涉及到循环论证）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAaRqx1b-8zB09vI5lH1benibdtkBWwAC8A9rGz_BOFZMr1lVYAHbwgEAAwIAA3gAAz0E" alt="8.1.8" /><figcaption>8.1.8</figcaption></figure><p></p><p>本题变成先用介质定理创造一个 <span><span>f(ε)f(\varepsilon)</span><span><span><span></span><span>f</span><span>(</span><span>ε</span><span>)</span></span></span></span> 了，对介质定理理解错了。值得注意的是，这道题如果改成开区间，那么可以用拉格朗日中值定理证明。</p><p>重刷，应该利用最大值最小值定理，而不可以用拉格朗日中值定理（后者是开区间）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAaVqx1c70QMy5DHqfZKKZ96716jBZwAC8Q9rGz_BOFZ7V4wGQhPNcQEAAwIAA20AAz0E" alt="8.2.5" /><figcaption>8.2.5</figcaption></figure><p></p><p>想当然没有把具体的过程写出来，导致原积分是什么写错了。经典的错误，标准的零分，可以注意 <span><span>1n\frac{1}{n}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 只是形式，而不是要把 <span><span>1n\frac{1}{n}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 写成 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>。而应该把 <span><span>in\frac{i}{n}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 记作 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>。</p><p>错题重刷时没问题，主要是这类题比较经典，利用夹逼定理放缩一下就可以了。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 9 章<a href="#张宇-30-讲基础高数-2-刷第-9-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAaZqx1eaKHAGFZxXDUQto4ef8AUgUAAC8g9rGz_BOFZwTX7ttBMQCgEAAwIAA20AAz0E" alt="9.1.5" /><figcaption>9.1.5</figcaption></figure><p></p><p>本题没想到用还原法，而是直接硬解，结果就是即便是把下面的东西凑出去了，也算不出来。事实上，观察到这题 <span><span>x=tan⁡tx=\tan t</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>tan</span><span></span><span>t</span></span></span></span> 可以很方便的解出来。</p><p>重刷的时候没有具体计算，因为第一反应就是换元法了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAadqx1fiiwZhW9D6Rr-OfSDcv3GnHwAC8w9rGz_BOFanSpvAZR14qQEAAwIAA20AAz0E" alt="9.1.8" /><figcaption>9.1.8</figcaption></figure><p></p><p>本题轻视。需要着重注意这种带有重根式的项如何拆，以及计算问题：采用增广矩阵求方程组的时候，一定要注意是 <span><span>ax+by+cz=uax+by+cz=u</span><span><span><span></span><span>a</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span>y</span><span></span><span>+</span><span></span></span><span><span></span><span>cz</span><span></span><span>=</span><span></span></span><span><span></span><span>u</span></span></span></span>，而不是四个相加等于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p>重刷的时候把拆项的式子列出来了，这道题的主要问题就是不知道应该怎么拆项（或者说拆项的时候分子的系数不知道写什么）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAahqx1g7gDXJ7owoYNqgsHMXuKlkmAAC9A9rGz_BOFaD8Jai6LvB5QEAAwIAA20AAz0E" alt="9.1.11" /><figcaption>9.1.11</figcaption></figure><p></p><p>1 刷没错，2 刷反而错了。想当然的将式子拆开然后没有验算是不是合理的。</p><p>错题重刷的时候这道题没做，错的是低级错误，这更应验了要做一步算一步（我的速度肯定是够的）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAalqx1ioywIROs5GsHmRscx56v0LRwAC9g9rGz_BOFZ4Ip5P6g7W_QEAAwIAA20AAz0E" alt="9.1.14" /><figcaption>9.1.14</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAapqx1i_wjAkdbsTMF3X71ElithiiQAC9w9rGz_BOFbqCmTLPiVrswEAAwIAA20AAz0E" alt="9.1.15" /><figcaption>9.1.15</figcaption></figure><p></p><p>2 刷时这两题计算错误！！！！！！！</p><p>这两题可以放一起讲，应该都是滥用区间再现导致的计算错误。利用区间再现的时候，尤其需要注意三角函数的变形，也就是诱导公式。<span><span>sin⁡(π2−x)=cos⁡x\sin\left(\frac{\pi}{2}-x\right)=\cos x</span><span><span><span></span><span>sin</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>−</span><span></span><span>x</span><span><span>)</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span>，<span><span>cos⁡(π−x)=−cos⁡x\cos(\pi-x)=-\cos x</span><span><span><span></span><span>cos</span><span>(</span><span>π</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span></span><span>cos</span><span></span><span>x</span></span></span></span>。诱导公式需要尤其注意。</p><p>然后有一个经典的错误，标准的零分，<span><span>arcsin⁡(sin⁡x)\arcsin(\sin x)</span><span><span><span></span><span>arcsin</span><span>(</span><span>sin</span><span></span><span>x</span><span>)</span></span></span></span> 想拆开，需要注意其定义域！</p><p>区间再现的本质其实就是对称性，如果算出来是“奇”的，那么恰巧就可以拆掉变成 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，如果算出来是“偶”的，那么假设是对 <span><span>0∼π0\sim\pi</span><span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span>π</span></span></span></span> 区间再现，那么可以优化为 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 倍的 <span><span>0∼π20\sim\frac{\pi}{2}</span><span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>错题重刷这两题都没问题，太经典了，尤其是考虑定义域的时候，这道题如果没有采用区间再现化简的话，会出现 <span><span>arcsin⁡(sin⁡x)\arcsin(\sin x)</span><span><span><span></span><span>arcsin</span><span>(</span><span>sin</span><span></span><span>x</span><span>)</span></span></span></span>，其中 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的范围是 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 到 <span><span>π\pi</span><span><span><span></span><span>π</span></span></span></span>，所以非常阴。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAatqx1jjDQp6IDpFgj9TroY_pF6UeAAC-A9rGz_BOFYXUTdEYRGKQwEAAwIAA3gAAz0E" alt="9.1.23" /><figcaption>9.1.23</figcaption></figure><p></p><p>这题是对的，不过可以注意一下原函数的表达，也就是利用变限积分 <span><span>+C+C</span><span><span><span></span><span>+</span><span>C</span></span></span></span>。固定 <span><span>(a,0)(a,0)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>0</span><span>)</span></span></span></span> 点只是某点的，而不是全局的，最终还是要 <span><span>+C+C</span><span><span><span></span><span>+</span><span>C</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAaxqx1j-dMD5PdJTYOwKEGf0wAw9uwAC-Q9rGz_BOFY4LHi8uyp2TAEAAwIAA20AAz0E" alt="9.1.26" /><figcaption>9.1.26</figcaption></figure><p></p><p>这题是对的，不过方法麻烦了，可以注意一下积分计算。对于 <span><span>1x2±a\frac{1}{\sqrt{x^2\pm a}}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>±</span><span>a</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 来讲的原函数，一定要记住 <span><span>ln⁡(x±⋯)\ln\left(x\pm\sqrt{\cdots}\right)</span><span><span><span></span><span>ln</span><span></span><span><span>(</span><span>x</span><span></span><span>±</span><span></span><span><span><span><span><span><span></span><span><span>⋯</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span>)</span></span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAa1qx1knLrMzHiU-CqrHe8M-UbjshwAC-w9rGz_BOFaQ8d1NmoCp3AEAAwIAA3gAAz0E" alt="9.1.29" /><figcaption>9.1.29</figcaption></figure><p></p><p>这道题没去背伽马函数，感觉也不需要去背，没考概率论。唯一就是需要注意一下，对 <span><span>e−x2/ae^{-x^2/a}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>/</span><span>a</span></span></span></span></span></span></span></span></span></span></span></span> 的积分是 <span><span>aπa\sqrt{\pi}</span><span><span><span></span><span>a</span><span><span><span><span><span><span></span><span><span>π</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span>，如何推导？感觉不需要会推导。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAa5qx1k-a_Y0HfIOGuVEbQRbi--dCgAC_A9rGz_BOFYAAW0b9OuAJXsBAAMCAANtAAM9BA" alt="9.2.10" /><figcaption>9.2.10</figcaption></figure><p></p><p><span><span>arctan⁡(tan⁡x2)\arctan\left(\frac{\tan x}{\sqrt{2}}\right)</span><span><span><span></span><span>arctan</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>t</span><span>a</span><span>n</span></span><span></span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span>，当 <span><span>x=π4x=\frac{\pi}{4}</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的时候，里面算出来不是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，从而推不出来 <span><span>π4\frac{\pi}{4}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，属于低级错误。</p><p>错题重刷没去做，主要就是注意一下几个低级错误：<span><span>arctan⁡1=π4\arctan 1=\frac{\pi}{4}</span><span><span><span></span><span>arctan</span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，<span><span>arctan⁡(π2)\arctan\left(\frac{\pi}{2}\right)</span><span><span><span></span><span>arctan</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span> 不存在，<span><span>arctan⁡(22)\arctan\left(\frac{\sqrt{2}}{2}\right)</span><span><span><span></span><span>arctan</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span> 是推不出来是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAa9qx1mSKwu71QQGUm3Jx7VSCIaZlwAC_g9rGz_BOFYqwwpFm0_sjAEAAwIAA20AAz0E" alt="9.2.12" /><figcaption>9.2.12</figcaption></figure><p></p><p>属于低级错误，<span><span>−a(−b−b)-a(-b-b)</span><span><span><span></span><span>−</span><span>a</span><span>(</span><span>−</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>b</span><span>)</span></span></span></span> 算成 <span><span>ab2ab^2</span><span><span><span></span><span>a</span><span><span>b</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>。</p><p>错题重刷没去做，思路比较经典，区间再现然后第一换元法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbBqx1nIlpbi548tCCistG0kwgR6SQADEGsbP8E4VsezQva95mvbAQADAgADbQADPQQ" alt="9.2.16" /><figcaption>9.2.16</figcaption></figure><p></p><p><span><span>+C+C</span><span><span><span></span><span>+</span><span>C</span></span></span></span>。但是这题为什么要 <span><span>+C+C</span><span><span><span></span><span>+</span><span>C</span></span></span></span> 呢？<span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 的原函数是 <span><span>x(cos⁡x+C)x(\cos x+C)</span><span><span><span></span><span>x</span><span>(</span><span>cos</span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>C</span><span>)</span></span></span></span>。当 <span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，显然不可以说 <span><span>C=0C=0</span><span><span><span></span><span>C</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbFqx1nj8lBUupNzHi3aRm2Juip_BAACARBrGz_BOFbbWX8gLhbCOgEAAwIAA20AAz0E" alt="9.2.17" /><figcaption>9.2.17</figcaption></figure><p></p><p>无厘头错误，想到了要分 <span><span>x&lt;0x&lt;0</span><span><span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 等情况讨论然后没写，然后区间在 <span><span>0∼10\sim1</span><span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span>1</span></span></span></span> 内的算错了。</p><p>其实这个无厘头问题感觉是一个新问题，也就是对 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 从 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 积分，忘记积分直接用上下限相减了，同时这道题也没意识到其实对 <span><span>t2t^2</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 的积分可以直接算出来。</p><p>然后，再次重刷之后发现了一个新的错误，那就是：</p><p><span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 在 <span><span>0∼10\sim1</span><span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span>1</span></span></span></span> 时，对于 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 的取值范围的前半段，并不和 <span><span>x&lt;0x&lt;0</span><span><span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时一致，反而是和 <span><span>x&gt;1x&gt;1</span><span><span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>1</span></span></span></span> 时一致。我认为的原因是我们讨论拆绝对值（在此处），应该是先讨论 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的范围，然后根据 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 去确认 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 的取值范围，毕竟是对 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 的积分，所以才会出现不能连续的情况。无论取取多少，<span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 的积分范围始终是 <span><span>0∼10\sim1</span><span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span>1</span></span></span></span>，而根据 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 进行拆开只不过是去绝对值的手段。</p><p>还有一个问题，是关于长除法的如果长除法最后一步要 <span><span>×(−1)\times(-1)</span><span><span><span></span><span>×</span><span>(</span><span>−</span><span>1</span><span>)</span></span></span></span>，那么即便是 <span><span>×(−1)\times(-1)</span><span><span><span></span><span>×</span><span>(</span><span>−</span><span>1</span><span>)</span></span></span></span>，也是对分解因式出来的东西的，而不是对于式子本身乘一个 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>，毕竟你已经是对因子进行长除了。</p><p>错题重刷没去做，主要是神秘的计算问题，就略过了。</p><p>其实会发现一个现象，对于计算问题，一旦这个式子非常难算，要么就是一遍算对，要么就是这错那错，我认为唯一的解决办法还是稳住心态一点一点咬下来计算，然后做一步检查一步。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 10 章<a href="#张宇-30-讲基础高数-2-刷第-10-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbJqx1pGk6SQlUweIrMglmpWizDUzQACAxBrGz_BOFbywU9xlxL0ZwEAAwIAA20AAz0E" alt="10.1.3" /><figcaption>10.1.3</figcaption></figure><p></p><p>对于这类题始终没有搞懂怎么计算 <span><span>θ\theta</span><span><span><span></span><span>θ</span></span></span></span> 的取值范围。但是事实上这道题属于低级错误，当 <span><span>θ\theta</span><span><span><span></span><span>θ</span></span></span></span> 取 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的时候，会发现后面是 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>。本质和下面的第 5 题错误类似，也就是没搞清楚积分区间就开始算。</p><p>错题重刷没做，因为 880 二刷刚做过了一模一样的题目。</p><p><span><span>θ\theta</span><span><span><span></span><span>θ</span></span></span></span> 的定义域或者说积分定义域也一直是我的一个高频错误点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbNqx1qNq4ZSx5w5GppcIe0xuCOuRgACBBBrGz_BOFYwp9zr1y7LawEAAwIAA20AAz0E" alt="10.1.4" /><figcaption>10.1.4</figcaption></figure><p></p><p>算的是没问题的，但是没算 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 趋于无穷时的结果。</p><p>错题重刷没做，这道题是 2019 年的真题。但是值得注意的是，在 26 李 4 卷有一道题是这道题的改变，那道题因为牛莱公式代入计算错误了。</p><p>所以，积分定义域和牛莱公式的错误我是需要引发高度重视。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbRqx1rhpDwVDjZ_pEy5ZDes6MnqHAACBRBrGz_BOFYeBdpgN3iRYwEAAwIAA3gAAz0E" alt="10.1.5" /><figcaption>10.1.5</figcaption></figure><p></p><p>属于低级错误，算一半题抄错了，把右边的根号抄到 <span><span>ee</span><span><span><span></span><span>e</span></span></span></span> 的幂上去了，而且也没考虑定义域。</p><p>在订正的时候，还是一上手就算了。一定要先考虑定义域，一定要先考虑定义域（也就是积分范围）</p><p>错题重刷没做，880 二刷刚做过一模一样的题目，并且也错了。</p><p>定义域。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbVqx1sPYlB-59p5z8WPriUxQdymgwACBhBrGz_BOFZDJpAG6hUAAUMBAAMCAAN4AAM9BA" alt="10.1.9" /><figcaption>10.1.9</figcaption></figure><p></p><p>忘记形心坐标公式了。在重做的时候，犯了一个新的低级错误，就是在进行定积分的带入计算时，<span><span>a+(b−c)a+(b-c)</span><span><span><span></span><span>a</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>c</span><span>)</span></span></span></span>，算这种式子的时候，上面的带入了所有的，但是下面的那个只带入了局部的去算。</p><p>用二重积分去记，而不是用一重积分去背诵。</p><p>错题重刷没做，这道题是某年的真题。依旧是牛莱公式问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbZqx1tDNzKO5ha2a6HF0Izy5MfeAAMJEGsbP8E4Vv-j6EdSxRUyAQADAgADeAADPQQ" alt="10.1.10" /><figcaption>10.1.10</figcaption></figure><p></p><p>属于低级错误。<span><span>2(11−x2)2\left(\frac{1}{1-x^2}\right)</span><span><span><span></span><span>2</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>1</span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span>，拆项后没算最前面的 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。</p><p>错题重刷没做，这道题也是一个比较大的问题，同时在 26 李 4 卷 4 中也犯了这个错误。</p><p>之前扫过 R 神的帖子，对于系数，一定是要放在积分号外面，这样不容易忘记。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbdqx1t-LqMXxKB9aZKdFHpCYneV7QACChBrGz_BOFbILCGnnoXiIAEAAwIAA3gAAz0E" alt="10.2.3" /><figcaption>10.2.3</figcaption></figure><p></p><p>属于超级低级错误，这道题是 19 号晚上在数学结束之前写的，一方面是水群，另一方面是忘记走一步算一步，例如 <span><span>14\frac{1}{4}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 开根没开根，并且 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的积分忘记 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的多连环错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbhqx1uSaKYu1IFJXFvy_5dSgY2ACwACCxBrGz_BOFYAAd6rcnlT18kBAAMCAAN4AAM9BA" alt="10.2.6" /><figcaption>10.2.6</figcaption></figure><p></p><p>积分上下限错误，绘图错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAblqx1upscW_TvXR3UWv7LCefrrs5AACDBBrGz_BOFYqJ79i4hqpcQEAAwIAA3gAAz0E" alt="10.2.7" /><figcaption>10.2.7</figcaption></figure><p></p><p>尽管采用轮椅法，但是忘记 <span><span>2π2\pi</span><span><span><span></span><span>2</span><span>π</span></span></span></span>。忘记 <span><span>2π2\pi</span><span><span><span></span><span>2</span><span>π</span></span></span></span> 的情况非常常见感觉。</p><p>这道题错题重刷没做，是某一年的真题。采用武忠祥老师二重积分算面积体积一定要注意是当成周长来算，所以要 <span><span>+2π+2\pi</span><span><span><span></span><span>+</span><span>2</span><span>π</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbpqx1vmTF6XnFVToGnoBgX1y82yeQACDRBrGz_BOFYU7wO7SYDDogEAAwIAA3gAAz0E" alt="10.2.8" /><figcaption>10.2.8</figcaption></figure><p></p><p>有两个非常非常低级的错误，第一，<span><span>1−cos⁡t=2sin⁡2t21-\cos t=2\sin^2\frac{t}{2}</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>cos</span><span></span><span>t</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span></span><span><span>sin</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>t</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，而不是 <span><span>=cos⁡=\cos</span><span><span><span></span><span>=</span><span></span></span><span><span></span><span>cos</span></span></span></span> 啥的东西；第二，化简完了最后的那一小部分之后（也就是 <span><span>324×2×2=2\frac{32}{4\times2\times2}=2</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span><span>×</span><span>2</span><span>×</span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>32</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span> 后，没有乘上 <span><span>33</span><span><span><span></span><span>3</span></span></span></span>）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbtqx1v7ba2IqJCTzbpQnUEqUZjq9AACDhBrGz_BOFZcc6CV6UVTBAEAAwIAA3gAAz0E" alt="10.2.9" /><figcaption>10.2.9</figcaption></figure><p></p></section><section><h3>张宇 30 讲基础高数 2 刷第 11 章<a href="#张宇-30-讲基础高数-2-刷第-11-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAbxqx1xvVYWbZCimCRHctioFrPECpwACEBBrGz_BOFZEeoea73_tBwEAAwIAA3gAAz0E" alt="11.1.1" /><figcaption>11.1.1</figcaption></figure><p></p><p>柯西中值定理，这里需要注意，记错了柯西中值定理的形式。这道题和一类题混淆了，也就是和同一个区间内多个可以相同的 <span><span>ε\varepsilon</span><span><span><span></span><span>ε</span></span></span></span> 和 <span><span>η\eta</span><span><span><span></span><span>η</span></span></span></span> 的问题，那个是利用多次柯西中值定理/拉格朗日中值定理。但是对于单独的每次柯西中值定理，得出来的项是相同的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAb1qx1yNh5OPSD5ShEAXLcsHZkBVBgACERBrGz_BOFaKTWNG8UfD0gEAAwIAA3gAAz0E" alt="11.1.5" /><figcaption>11.1.5</figcaption></figure><p></p><p>感觉是 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，这道题忘了一个极为重要的思想，也就是夹逼定理。</p><p>对于这个经典函数，两个思考方向，放缩（夹逼）和图像化面积。</p><p>错题重刷没做，这道题我觉得最重要的问题是没想到夹逼定理。碰到这类式子一定要绘图 + 想夹逼定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAb5qx1zLy5Fvwu-w-4zLgO6Jfmg5aQACEhBrGz_BOFZI-7xgycmscQEAAwIAA3gAAz0E" alt="11.1.8" /><figcaption>11.1.8</figcaption></figure><p></p><p>有想到说在中间砍一刀，但是没想到中间可以是变量。为什么可以想到中间要切一刀，其实来自于不切一刀只能求出来 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，所以要切。这道题本来的想法是凑一个 <span><span>x−14x-\frac{1}{4}</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，这样可以恰好出来是 <span><span>14\frac{1}{4}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，奈何如果加了绝对值算的话，积分的时候会超。</p><p>但是这道题即便看了正确解法也没做出来，感觉会很奇怪。本质上是对放缩的想法问题。</p><p>错题重刷做出来了，不过草稿很乱，就不放上来了。上面的问题这次重刷我也卡了一下，主要的原因在于没想清楚谁是 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span>，谁是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，应该对谁进行讨论。</p><p>总结一下莫名其妙出现的 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 怎么凑：</p><ol>
<li><span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的 0 到 1 的积分</li>
<li>积分中间砍一刀分批算</li>
<li>和 1 类似的，只不过是利用凹凸性的割线</li>
</ol><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAb9qx15Oh60XoMs42W5VXICB1g0fzAACFxBrGz_BOFYsuaz0f3xAMgEAAwIAA3gAAz0E" alt="11.1.10" /><figcaption>11.1.10</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcBqx15lGyE2haLP6c-09J9F7j0BpgACGBBrGz_BOFZJoloIHcXDhgEAAwIAA3gAAz0E" alt="11.2.6" /><figcaption>11.2.6</figcaption></figure><p></p><p>这两题放一起讲，属于低级错误，不相信自己，其实再做几步就做出来了。这两道题提醒自己，放缩的时候可能两边用的不是同一个套路，例如前半边采用的是直接算出来，后半边可以是 <span><span>cos⁡x&lt;1\cos x&lt;1</span><span><span><span></span><span>cos</span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 12 章<a href="#张宇-30-讲基础高数-2-刷第-12-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcFqx159jPEgk1sAAeqJMAPInO4jtdUAAhkQaxs_wThWzYA23IU5stcBAAMCAAN4AAM9BA" alt="12.1.3" /><figcaption>12.1.3</figcaption></figure><p></p><p>错题重刷没做。其实我对物理应用生物痛觉，不过经历了一整个暑假的研究，现在对这类题只要不是看错题目条件，其实都问题不大。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 13 章<a href="#张宇-30-讲基础高数-2-刷第-13-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcJqx17QvGAnexUMr08GVWGxd3kldQACGhBrGz_BOFbHdIQ1a54nAAEBAAMCAANtAAM9BA" alt="13.1.5" /><figcaption>13.1.5</figcaption></figure><p></p><p>主要犯了以下几个问题：在令 <span><span>xt2=u2xt^2=u^2</span><span><span><span></span><span>x</span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>u</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，并且正确求得换元前的一切信息（包括 <span><span>du\mathrm{d}u</span><span><span><span></span><span>d</span><span>u</span></span></span></span>）后，代入的时候，想当然塞了一个 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span>，导致全盘错误；在纠正了这个错误后（订正过程中），想当然的认为 <span><span>1x\frac{1}{\sqrt{x}}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>x</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 求导就是它本身。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcNqx172lrUQ90dr4sjlqJCDLgl_JQACHBBrGz_BOFYccCCRuIw-ogEAAwIAA3gAAz0E" alt="13.1.14" /><figcaption>13.1.14</figcaption></figure><p></p><p>想不出来怎么做——忘记了隐函数存在定理。隐函数存在定理：对于 <span><span>F(x,y)=0F(x,y)=0</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，确定的隐函数 <span><span>y=f(x)y=f(x)</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span>，当 <span><span>Fy′(x,y)≠0F'_y(x,y)\ne0</span><span><span><span></span><span><span>F</span><span><span><span><span><span><span></span><span><span>y</span></span></span><span><span></span><span><span><span>′</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span> 时，有 <span><span>dydx=−FxFy\frac{\mathrm{d}y}{\mathrm{d}x}=-\frac{F_x}{F_y}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>F</span><span><span><span><span><span><span></span><span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>F</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。所以充分性可证。
对于这道题的反例，可以举 <span><span>F(x,y)=y3−x3F(x,y)=y^3-x^3</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span>。</p><p>错题重刷没做，我记得这道题是哪一年的真题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcRqx184vPVAefTpJsJWyEPYMy37LQACHhBrGz_BOFY28cnDnqVAGwEAAwIAA3gAAz0E" alt="13.1.17" /><figcaption>13.1.17</figcaption></figure><p></p><p>本题没问题，但事实凭感觉做的（前者需要四面八方而后者只需要两根线）。并且这里混淆了充分条件的概念，以前一直记的是小推大，但是其实应该记住的是严格推宽松。</p><p>对于本题的反例，考虑 <span><span>F(x,y)=x2−y2F(x,y)=x^2-y^2</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>。</p><p>还可以举同一极值但二元无极值的反例：<span><span>f(x,y)=(y−x2)(y−2x2)f(x,y)=(y-x^2)(y-2x^2)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>y</span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span><span>(</span><span>y</span><span></span><span>−</span><span></span></span><span><span></span><span>2</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcVqx19T19bXKPFvlu0ZOdQv1ZVNswACHxBrGz_BOFYAAQ4brx7P4uMBAAMCAAN4AAM9BA" alt="13.1.18" /><figcaption>13.1.18</figcaption></figure><p></p><p>没做出来。可以取反例 <span><span>F(x,y)=−x2−y2F(x,y)=-x^2-y^2</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，以及 <span><span>F(x,y)=−x4−y4F(x,y)=-x^4-y^4</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span></span></span></span> 排除。</p><p>这里可以总结一下一些经典的反例（本章的），其实无外乎都是 <span><span>xm+ynx^m+y^n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>，中间的符号可以变，总体的符号也可以变，<span><span>m=nm=n</span><span><span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span></span></span></span>。</p><p>错题重刷的思路是这样的，首先 <span><span>ABAB</span><span><span><span></span><span>A</span><span>B</span></span></span></span> 可以很容易排除，而对于 <span><span>AC−B2AC-B^2</span><span><span><span></span><span>A</span><span>C</span><span></span><span>−</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 的判定，如果为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，那么是无法判断，所以再举一个特例就可以了。所以选 D。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcZqx1_g6_yFOOg9l2R5WBSg8DfQbQACIBBrGz_BOFYfqboFKBcp5QEAAwIAA3gAAz0E" alt="13.1.22" /><figcaption>13.1.22</figcaption></figure><p></p><p>本题做的是对的，只是放在这里注意一下。对于这种范围的题需要从两方面考虑，第一，函数本身的极值（利用 <span><span>AC−B2AC-B^2</span><span><span><span></span><span>A</span><span>C</span><span></span><span>−</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>），第二，边界的极值（利用拉格朗日乘数法或者带入计算或者不等式）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcdqx1_6bKyj0I2kvdV4iEj50-F2GAACIRBrGz_BOFZ0-FmhlYP41wEAAwIAA3gAAz0E" alt="13.2.11" /><figcaption>13.2.11</figcaption></figure><p></p><p>对于全微分的不变性理解问题：对于这类题，采用全微分的不变性去做比采用隐函数求导法更方便，而求全微分的方法是将两边同时取 <span><span>d\mathrm{d}</span><span><span><span></span><span>d</span></span></span></span>，例如对于 <span><span>sin⁡(xy)=y\sin(xy)=y</span><span><span><span></span><span>sin</span><span>(</span><span>x</span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>y</span></span></span></span> 而言，同时取 <span><span>d\mathrm{d}</span><span><span><span></span><span>d</span></span></span></span> 即 <span><span>d(sin⁡(xy))=dy\mathrm{d}(\sin(xy))=\mathrm{d}y</span><span><span><span></span><span>d</span><span>(</span><span>sin</span><span>(</span><span>x</span><span>y</span><span>))</span><span></span><span>=</span><span></span></span><span><span></span><span>d</span><span>y</span></span></span></span>，而 <span><span>d\mathrm{d}</span><span><span><span></span><span>d</span></span></span></span> 的求导法则是将所有东西都当成单独的变量去算，所以是 <span><span>cos⁡(xy)(y dx+x dy)=dy\cos(xy)(y\,\mathrm{d}x+x\,\mathrm{d}y)=\mathrm{d}y</span><span><span><span></span><span>cos</span><span>(</span><span>x</span><span>y</span><span>)</span><span>(</span><span>y</span><span></span><span>d</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span></span><span>d</span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>d</span><span>y</span></span></span></span>。</p><p>错题重刷没做，这道题提醒我不可以某类方法入脑（我记得这道题也是某年真题来着）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAchqx2A3i6rDV2iAGwTNH-DkFzO6PwACIhBrGz_BOFbvDM49Arnz2gEAAwIAA3gAAz0E" alt="13.2.14" /><figcaption>13.2.14</figcaption></figure><p></p><p>对于这题，其实做的是对的，但是没敢继续往下写。</p><p>需要注意的是，利用拉格朗日乘数法算完后得出极值，但是这道题有 <span><span>x≥0x\ge0</span><span><span><span></span><span>x</span><span></span><span>≥</span><span></span></span><span><span></span><span>0</span></span></span></span>，<span><span>y≥0y\ge0</span><span><span><span></span><span>y</span><span></span><span>≥</span><span></span></span><span><span></span><span>0</span></span></span></span> 的条件，当时在做的时候脑子抽了没想到这个条件，想着 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 不是可以取无穷吗。</p><p>对于这道题，辨析一下拉格朗日乘数法。拉格朗日乘数法算出来的只能是驻点，所以题目里不会为难算出来的再去判断极大值极小值，带入边界条件去算就可以了。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 14 章<a href="#张宇-30-讲基础高数-2-刷第-14-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAclqx2C1t0KYGyJIkXcOO_6QE0AjvQACJBBrGz_BOFYdxxWRTlEffwEAAwIAA20AAz0E" alt="14.1.5" /><figcaption>14.1.5</figcaption></figure><p></p><p>属于低级错误，对于这种题应该先绘制出完整的积分范围（而不是只绘制一部分甚至不绘制）</p><p>错题重刷碾过去了，还是要画出积分区间。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcpqx2Dwl-iiSFe0yVoFBspQFO58NAACJRBrGz_BOFYTFmTeoh3Q4gEAAwIAA20AAz0E" alt="14.1.13" /><figcaption>14.1.13</figcaption></figure><p></p><p>关于这题，如何求 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 完全没有任何头绪。事实上应该利用极限的 <span><span>o(x)o(x)</span><span><span><span></span><span>o</span><span>(</span><span>x</span><span>)</span></span></span></span> 去做？</p><p>并非啊，事实上这道题属于低级错误，当上下同时化简了之后是 <span><span>00\frac{0}{0}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>0</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的式子，所以上面肯定是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，从而可以算出来 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 的值。</p><p>错题重刷：这道题我也不知道为什么会做错，这类题属于非常基础非常经典的题目。我做下来怀疑是当时把 <span><span>ex2e^{x^2}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> 除下来的时候，直接没管 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 那一项，所以分析的很怪。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAcxqx2G1Pd4NvWhU9N_-BeuYSl1FSgACKRBrGz_BOFYntWYvjZoBywEAAwIAA20AAz0E" alt="14.2.9" /><figcaption>14.2.9</figcaption></figure><p></p><p>对于这题没想到怎么做，但是隐约知道应该拆开来进行讨论……复盘了一下，发现想的是对的，但是没去算，这里的 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>y2y^2</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 只是数值而已，并不是积分区间。</p><p>错题冲刷的时候想起来 26 李 4 卷 3 的倒数第二题，其实这类题都是类似的，通过 <span><span>max⁡\max</span><span><span><span></span><span>max</span></span></span></span> 得到积分区间，然后分区间讨论即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAc1qx2IQSDl3NXhSdbEkd1VVMCA-ZQACLxBrGz_BOFZ_a95-2vxDDgEAAwIAA3gAAz0E" alt="14.2.10" /><figcaption>14.2.10</figcaption></figure><p></p><p>对于本题，犯了一个经典的低级错误（我自己错了很多次了，甚至在化简的时候每次都会提醒自己：<span><span>x=rcos⁡θx=r\cos\theta</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>cos</span><span></span><span>θ</span></span></span></span>，<span><span>y=rsin⁡θy=r\sin\theta</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>sin</span><span></span><span>θ</span></span></span></span>。</p><p>错题重刷的时候，想起来了这个，其实对于数 2 的来讲，大多数时候都是经典变形，也就是 <span><span>x=ρcos⁡θx=\rho\cos\theta</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>ρ</span><span></span><span>cos</span><span></span><span>θ</span></span></span></span>，<span><span>y=ρsin⁡θy=\rho\sin\theta</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>ρ</span><span></span><span>sin</span><span></span><span>θ</span></span></span></span>，很少出现其他的，因为数 2 没有雅可比矩阵。</p><p>当时错的时候应该把 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 想反了。</p></section><section><h3>张宇 30 讲基础高数 2 刷第 15 章<a href="#张宇-30-讲基础高数-2-刷第-15-章"><span>#</span></a></h3><p>本章需要注意一下，感觉掌握得不是很好，强化的时候当时应该也过的很快。</p><p>错题重刷时想起来 09 年真题还是哪一年真题，忘记了形式。微分方程主要就是背诵了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAc5qx2KNU6fa3erraK4nNKIPoTudVwACMBBrGz_BOFbQXBXqZNm8fgEAAwIAA20AAz0E" alt="15.1.4" /><figcaption>15.1.4</figcaption></figure><p></p><p>本题犯了一个经典的错误，标准的零分，那就是 <span><span>+C+C</span><span><span><span></span><span>+</span><span>C</span></span></span></span>，应该在化简到 <span><span>ln⁡\ln</span><span><span><span></span><span>ln</span></span></span></span> 那个时候就 <span><span>+C+C</span><span><span><span></span><span>+</span><span>C</span></span></span></span> 了，而不是等到算完之后最后再 <span><span>+C+C</span><span><span><span></span><span>+</span><span>C</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAc9qx2KjasTk_zI5q3hsCBi3f8GilQACMRBrGz_BOFYro2yOhPdkvwEAAwIAA3gAAz0E" alt="15.1.6" /><figcaption>15.1.6</figcaption></figure><p></p><p>关于这题没想到怎么直接用 <span><span>yx\frac{y}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 做，而是先同时平方然后做，结果就是没做出来。如果要取平方的话，最后会变成以 <span><span>y′y'</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 的方程，得解方程然后求出来 <span><span>y′y'</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 的表达式然后算。但是这道题其实是可以先判断齐次性。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdBqx2QHLUtWz9GRYRDrwV6EkHkUNAACNxBrGz_BOFYlQFNynblq1wEAAwIAA3gAAz0E" alt="15.1.9" /><figcaption>15.1.9</figcaption></figure><p></p><p>关于这题，其实有想过正确想法，但是没敢往下推进。本题利用的是洛必达，也就是在推进的时候，忘记了自己正在讨论什么，在那里向自己应该怎么化简那个式子，却忘记了我们讨论的本来就是 y。</p><p>叽里咕噜说啥呢？两边同时取极限就算出来了。</p><p>错题重刷的时候利用的是洛必达法则，上下同时乘一个 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，推导出 <span><span>xy′=0xy'=0</span><span><span><span></span><span>x</span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，继而 <span><span>y′=0y'=0</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p>或者感觉用下面的做法更严谨：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdhqx2g_D-or6opZKCsC8idKINA18wACRBBrGz_BOFYjN7EREKJ8-wEAAwIAA3kAAz0E" alt="15.1.9 订" /><figcaption>15.1.9 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdFqx2RIggtmBp0mSox7hiiAEe0iGQACORBrGz_BOFZy-Mqye6sIYAEAAwIAA3gAAz0E" alt="15.1.12" /><figcaption>15.1.12</figcaption></figure><p></p><p>对于这道题，虽然说不难，但是有几个点需要注意一下。首先是可以算一半的时候把常数项计算出来，这样可以提供一些化简的思路，然后就是和第 6 题类似的，我完全没有意识到其实 <span><span>y′y'</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 也可以被当作一个变量看待，然后将其解出来进行讨论，也就是忽略了“分离变量”这个最为核心的准则。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdJqx2TvIskGW4yPmcWZcOuBcNyNxgACOhBrGz_BOFZQ7HmOiXqAmwEAAwIAA20AAz0E" alt="15.1.17" /><figcaption>15.1.17</figcaption></figure><p></p><p>错题重刷的时候也有点忘了公式，还是想了一下才想出来的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdNqx2URmeDhmdLUMO0TcooHn8ahzgACPBBrGz_BOFa9anxgOGMg5gEAAwIAA3gAAz0E" alt="15.1.21" /><figcaption>15.1.21</figcaption></figure><p></p><p>关于这题，我完全没有理解如何构建物理模型。感觉是被题目误导了，这题不要想什么自行车前后轮的接触点，也不要想什么物理，直接就是：</p><p>两个点 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span>，<span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span>，<span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 的初始值是 <span><span>(0,0)(0,0)</span><span><span><span></span><span>(</span><span>0</span><span>,</span><span></span><span>0</span><span>)</span></span></span></span>，<span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span> 的初始值是 <span><span>(1,0)(1,0)</span><span><span><span></span><span>(</span><span>1</span><span>,</span><span></span><span>0</span><span>)</span></span></span></span>，保持 <span><span>PQ=1PQ=1</span><span><span><span></span><span>P</span><span>Q</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，令 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 向上移动，求 <span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span> 的轨迹，完全不用考虑哪里是地面。</p><p>由于当 <span><span>P(0,t)P(0,t)</span><span><span><span></span><span>P</span><span>(</span><span>0</span><span>,</span><span></span><span>t</span><span>)</span></span></span></span>，<span><span>t≥1t\ge1</span><span><span><span></span><span>t</span><span></span><span>≥</span><span></span></span><span><span></span><span>1</span></span></span></span> 时，<span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span> 就变成直线向上运动了，所以仅考虑 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 在 <span><span>0∼10\sim1</span><span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span>1</span></span></span></span> 的范围内。尤其需要注意，<span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span> 不一定在 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 轴上，这也是我陷入迷糊的点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdRqx2U8klOmMBK_oM3xmwhwKn6BawACPRBrGz_BOFaTkSlFrqv94QEAAwIAA3gAAz0E" alt="15.2.9" /><figcaption>15.2.9</figcaption></figure><p></p><p>对于这种题完全没有任何头绪。但是呢，其实这道题并不是我想象中的强化阶段的那类题，所以还是那句话，没敢下手是现在最严重的问题？其实不是，这道题好像就是那类不一定是常系数的题？并非啊。</p><span><span><span>yh=(C1+C2x)exy_h=(C_1+C_2x)e^x</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>x</span><span>)</span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span></span><p>好好写一遍这个解，本质上是忘了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdVqx2ViBMqnVqWO3Yb5JhvX0dWC7QACPhBrGz_BOFarpLo87_0bFwEAAwIAA20AAz0E" alt="15.2.11" /><figcaption>15.2.11</figcaption></figure><p></p><p>对于这题，本质上是忘记了公式，也就是和例 17 相同的问题，是 <span><span>C1cos⁡x+C2sin⁡xC_1\cos x+C_2\sin x</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>cos</span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>sin</span><span></span><span>x</span></span></span></span>，而不是 <span><span>A(cos⁡x+sin⁡x)A(\cos x+\sin x)</span><span><span><span></span><span>A</span><span>(</span><span>cos</span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>sin</span><span></span><span>x</span><span>)</span></span></span></span>。</p><p>此外对于第 2 问，三阶无穷小不等于等价三阶无穷小，所以三阶泰勒展开后，不需要三次为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，只需要不为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAdZqx2V_CIEFw1Aw0RvKwj3LNF54wwACPxBrGz_BOFb7rnIWd1BD9wEAAwIAA3gAAz0E" alt="15.2.12" /><figcaption>15.2.12</figcaption></figure><p></p><p>直线方程的斜率是什么？是 <span><span>k=tan⁡αk=\tan\alpha</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span>tan</span><span></span><span>α</span></span></span></span>，而不是 <span><span>k=arctan⁡αk=\arctan\alpha</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span>arctan</span><span></span><span>α</span></span></span></span>。后续计算与例 12 类似。</p><p>错题重刷安：不过这道题其实是个真题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACAddqx2WoLMODTuY2vTJsjXb2Wlz74AACQBBrGz_BOFYboS1okwvI6AEAAwIAA3gAAz0E" alt="15.2.13" /><figcaption>15.2.13</figcaption></figure><p></p><p>本题错因为三角形底错误，三角形的底不是 <span><span>TT</span><span><span><span></span><span>T</span></span></span></span> 的横坐标，而是 <span><span>P−TP-T</span><span><span><span></span><span>P</span><span></span><span>−</span><span></span></span><span><span></span><span>T</span></span></span></span>。</p><p>错题重刷安：这道题也是一个真题。</p></section><section><h3>张宇 30 讲基础高数 2 刷错题总结<a href="#张宇-30-讲基础高数-2-刷错题总结"><span>#</span></a></h3><p>小总结</p><p>综合上面来看，还是低级错误比较多，主要综合为以下几类：</p><p>1.定积分使用牛莱公式时 <span><span>±\pm</span><span><span><span></span><span>±</span></span></span></span> 号问题
2.漏抄系数以及最后忘记乘法乘进去
3.<span><span>arctan⁡\arctan</span><span><span><span></span><span>arctan</span></span></span></span> 相关的计算
4.怀疑自己，不敢往下继续算
5.对于公式的背诵错误（尤其是关于第 10 章的计算）
6.积分上下限的判断</p></section><section><h3>张宇 30 讲基础高数 2 刷错题重刷总结<a href="#张宇-30-讲基础高数-2-刷错题重刷总结"><span>#</span></a></h3><p>错题重刷以及过了一遍错题，我发现其实基础部分最重要的问题还是计算，思路谬误并不多。</p><p>包括从我写了真题以及模拟卷几份再回头看这些，思路都是一眼出的，拟合肯定也是到位了的，所以最严重的问题就是非思路性丢分。</p></section></section>
<section><h2>张宇 30 讲基础线代 2 刷<a href="#张宇-30-讲基础线代-2-刷"><span>#</span></a></h2><section><h3>张宇 30 讲基础线代 2 刷第 1 章<a href="#张宇-30-讲基础线代-2-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4JqyQH5xkiXwc-1bPOsEsNKHGWUXgACzBNrG6T-SFZYNtP2N2kGAwEAAwIAA20AAz0E" alt="1.1.9" /><figcaption>1.1.9</figcaption></figure><p></p><p>一边是对的，另一边计算错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4NqyQIUFdJ-QFfZ1cKebqVgy3ayjwACzRNrG6T-SFbqKvvv8l9xCgEAAwIAA20AAz0E" alt="1.2.5" /><figcaption>1.2.5</figcaption></figure><p></p><p>属于低级错误，本题在做的时候最后一步在那里换行，明明换了 2 行，填了+，又想了一下注意换行，然后填了-。尤其注意。</p></section><section><h3>张宇 30 讲基础线代 2 刷第 2 章<a href="#张宇-30-讲基础线代-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4VqyQKnYCBR0a8YuJ3xAWdJfu7_xQACzhNrG6T-SFYd6YnVwcbZswEAAwIAA3gAAz0E" alt="2.1.4" /><figcaption>2.1.4</figcaption></figure><p></p><p>再次看到这道题才意味着藏得有多深，这道题在 880 的大题里也出现过类似的化简手段，1 刷的时候是排除法做对的。
这道题的变形是去凑，<span><span>ab=a+bab=a+b</span><span><span><span></span><span>ab</span><span></span><span>=</span><span></span></span><span><span></span><span>a</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span></span></span></span>；<span><span>ab−a−b=0ab-a-b=0</span><span><span><span></span><span>ab</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span></span><span>−</span><span></span></span><span><span></span><span>b</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>；<span><span>a(b−1)−b=0a(b-1)-b=0</span><span><span><span></span><span>a</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>b</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>；<span><span>a(b−1)−(b−1)=1a(b-1)-(b-1)=1</span><span><span><span></span><span>a</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>；即 <span><span>(a−1)(b−1)=1(a-1)(b-1)=1</span><span><span><span></span><span>(</span><span>a</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4ZqyQK-AAGcjfq6sxkCJETz73o2ciMAAs8Taxuk_khWYW_ofIjsI2kBAAMCAAN4AAM9BA" alt="2.1.14" /><figcaption>2.1.14</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4dqyQLOSiPyVOiV8uicaW8exI9ObAAC0BNrG6T-SFb9tKITJcp1fQEAAwIAA3gAAz0E" alt="分块矩阵的逆" /><figcaption>分块矩阵的逆</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4hqyQLkgKISLh1Ml0vuRlB7hQ2tRgAC0RNrG6T-SFaxH5NjZxW_0wEAAwIAA3gAAz0E" alt="2.1.18" /><figcaption>2.1.18</figcaption></figure><p></p><p>第 2 问没有考虑到“可逆”，算出来通解了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4lqyQL4dHajlkOkZ5V_4UhSk2gljgAC0hNrG6T-SFb1QT9AioJoGQEAAwIAA3gAAz0E" alt="2.2.9" /><figcaption>2.2.9</figcaption></figure><p></p><p>属于低级错误，没有考虑成到取逆之后，数字也得取倒数。并且想当然，其实这道题我做出来的答案是 <span><span>A−EA-E</span><span><span><span></span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>E</span></span></span></span>。</p></section><section><h3>张宇 30 讲基础线代 2 刷第 3 章<a href="#张宇-30-讲基础线代-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4tqyQZo9yYb3V1sFTDgCAUYrOaFWwAC1xNrG6T-SFZDSRHhSbzXwwEAAwIAA20AAz0E" alt="3.1.9" /><figcaption>3.1.9</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4xqyQaCo8C6HxPsDQ-V-y3z6JCH0QAC2BNrG6T-SFa8ZJ0lqCVD2gEAAwIAA3gAAz0E" alt="3.1.10" /><figcaption>3.1.10</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA41qyQabWvmF8fJyf8xtwlzl5-Je4gAC2RNrG6T-SFYhuiizmKnLqgEAAwIAA3gAAz0E" alt="3.1.11" /><figcaption>3.1.11</figcaption></figure><p></p><p>这三题 1 刷的时候直接跳了，2 刷的时候想做，但是没想出方法。</p><p>对于 9-10，这类题应该转换为向量组去做。</p><p>对于 11，应该利用经典恒等式去证明，这道题是想复杂了。</p><p>以下为错题重刷：</p><p>若向量组 (I) 可由向量组 (II) 线性表出，则向量组 (I) 的极大线性无关组容量（秩）不超过向量组 (II) 的极大线性无关组容量（秩）</p><p>只要证 <span><span>Aβj=β1jα1+β2jα2+⋯+βnjαnA\beta_j=\beta_{1j}\alpha_1+\beta_{2j}\alpha_2+\cdots+\beta_{nj}\alpha_n</span><span><span><span></span><span>A</span><span><span>β</span><span><span><span><span><span><span></span><span><span>j</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>β</span><span><span><span><span><span><span></span><span><span><span>1</span><span>j</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>β</span><span><span><span><span><span><span></span><span><span><span>2</span><span>j</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span><span>β</span><span><span><span><span><span><span></span><span><span><span>nj</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACA4pqyQVc1sCZx1oY7mJuPoXcAAG2zggAAtUTaxuk_khWGl-A5NSl14EBAAMCAAN4AAM9BA" alt="3.9 解" /><figcaption>3.9 解</figcaption></figure><p></p><p>这三题做一个标记，回头必须回来再看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBx5q0cOuCLJBoPA6t2mjU-foinMtowACTxBrG6jnkFYVWoveuQKSqwEAAwIAA3gAAz0E" alt="3.2.5" /><figcaption>3.2.5</figcaption></figure><p></p><p>注意本题是不正确的一项。CD 可以用秩不等式判断出 D 是对的。AB 选错为非常低级的错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBx9q0cPSg1l_wp-CJ63_KloxdKHPJQACUBBrG6jnkFajEQ2ymMaqJwEAAwIAA3gAAz0E" alt="3.2.6" /><figcaption>3.2.6</figcaption></figure><p></p><p>第 6 题没做出来，A 和 D 正确的大前提是 A 和 B 同型。对于向量等价，可以有三种判别法：第一，双向表示；第二，单向表示 + 秩相等；第三，三秩相等。</p><p>同型指的是 <span><span>m×nm\times n</span><span><span><span></span><span>m</span><span></span><span>×</span><span></span></span><span><span></span><span>n</span></span></span></span> 一样</p><p>二刷错题本题依旧错误，需要格外重视，没有意识到同形。</p></section><section><h3>张宇 30 讲基础线代 2 刷第 4 章<a href="#张宇-30-讲基础线代-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhdq0JtYJXKrfRBd3a8kclCynrAE5gACZxNrG6jniFb2lfd0rHH0kAEAAwIAA3gAAz0E" alt="4.1.6" /><figcaption>4.1.6</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACByFq0cP8tH3tl3Q3m3pP0MCi2M867QACURBrG6jnkFZlZl1LDx6QBQEAAwIAA3gAAz0E" alt="4.1.6 解" /><figcaption>4.1.6 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBhhq0Jtk9OOGWegicpPAb8l6rySt3wACaBNrG6jniFYw97_qgOV9wgEAAwIAA3gAAz0E" alt="4.1.7" /><figcaption>4.1.7</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACByNq0cYOassw5Ee58VxpZ2Hpg30HLQACUhBrG6jnkFZC1eo4wiay1QEAAwIAA3gAAz0E" alt="4.1.7 解" /><figcaption>4.1.7 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACByRq0cYggQIsvXtmFCKk3LbRyBvMdgACUxBrG6jnkFZ0b54cd2L-fwEAAwIAA3gAAz0E" alt="4.1.11" /><figcaption>4.1.11</figcaption></figure><p></p><p>本题如果采用原始的方法去做的话，反而可以做对，我这道题用解反过来构造化简后的增广矩阵，结果就是构造反了。本题直接将解代入也可以做出来。</p><p>然后，反过来构造的时候尤其需要注意，一定要搞清楚行和列的意思。列意味着几个变量，显然这道题是 <span><span>44</span><span><span><span></span><span>4</span></span></span></span>，那么行是多少？不知道，但是一定有效行是 <span><span>33</span><span><span><span></span><span>3</span></span></span></span> 行！而不是 <span><span>44</span><span><span><span></span><span>4</span></span></span></span> 行。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACByVq0cY1sAPlzyInUdGbLCHXw2BImQACVBBrG6jnkFbe3HDNIIMQiwEAAwIAA3gAAz0E" alt="4.2.4" /><figcaption>4.2.4</figcaption></figure><p></p><p>本题需要辨析清楚基础解系，等价向量组之间的概念及其延申。尤其需要注意，等价向量组不一定要和原向量组个数相等，只需要保证每一个都可以由对方组合即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACByZq0cdU3nzuys8W7Rla5XDTVf0hMgACVxBrG6jnkFY5D5TVNJ_nigEAAwIAA3gAAz0E" alt="4.2.7" /><figcaption>4.2.7</figcaption></figure><p></p><p>本题没想到好的方法。事实上，本题又陷入了三秩相等的逻辑，<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 是方程组的解，那么显然满足最下面一条，也满足 <span><span>Ax=0Ax=0</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，所以 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 可以用 <span><span>ε1\varepsilon_1</span><span><span><span></span><span><span>ε</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>ε2\varepsilon_2</span><span><span><span></span><span><span>ε</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 表示，所以行列式为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，即可以解出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBydq0cdq1oJ0uidjBXkrM7tH1An55AACWBBrG6jnkFZ4o_CyeYG-vwEAAwIAA3gAAz0E" alt="4.2.10" /><figcaption>4.2.10</figcaption></figure><p></p><p>本题问题在于，第一，求第一问的时候急躁了，<span><span>44</span><span><span><span></span><span>4</span></span></span></span> 个 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 只写了 <span><span>33</span><span><span><span></span><span>3</span></span></span></span> 个，第二，应该研究一下同解除了三秩相等之外的两个方法。例如我把我的解代入你的方程 + 秩相等即可。</p></section><section><h3>张宇 30 讲基础线代 2 刷第 5 章<a href="#张宇-30-讲基础线代-2-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBiNq0J2glr4P0bVAyvywk2f0C1whSwACdhNrG6jniFZ9O5P-QGurGgEAAwIAA3gAAz0E" alt="5.1.5" /><figcaption>5.1.5</figcaption></figure><p></p><p>本题采用特值法，没有意识到 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 与 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的关系。<span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 与 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的特征向量相同，则 <span><span>32\frac{3}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBypq0cfbY-1OBrVRzbvsmqcrhOwbXQACWhBrG6jnkFYYWZNGO98-swEAAwIAA3gAAz0E" alt="5.1.18" /><figcaption>5.1.18</figcaption></figure><p></p><p>求 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>，<span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span>。</p><p>本题的想法一直是把 A 想办法先解出来特征值再去求，但是这条路是不通的，原因主要是这几个。第一，这道题直接求特征值十分复杂；第二，本题没有告诉你他的第 1 列特征值是单根且其他特征值是重根。</p><p>所以这道题应该回到最朴素的想法，<span><span>Aα=kαA\alpha=k\alpha</span><span><span><span></span><span>A</span><span>α</span><span></span><span>=</span><span></span></span><span><span></span><span>k</span><span>α</span></span></span></span> 去解。果不其然，解出来的 <span><span>λ\lambda</span><span><span><span></span><span>λ</span></span></span></span> 没有重根。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBi1q0J76eyndX2bkdgjpb-3AOJLhbQACgxNrG6jniFbEkdPbUm7a5AEAAwIAA3gAAz0E" alt="5.2.2" /><figcaption>5.2.2</figcaption></figure><p></p><p>本题对与 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 相关的特征值和特征向量不熟悉，在做这题的时候忘记了。<span><span>P−1APP^{-1}AP</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>A</span><span>P</span></span></span></span> 所对应的特征值为 <span><span>λ\lambda</span><span><span><span></span><span>λ</span></span></span></span>，所对应的特征向量为 <span><span>P−1λP^{-1}\lambda</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>λ</span></span></span></span>，对于本题对应进去即可以得到 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>。</p><p></p><figure><img alt="5.2.6" loading="lazy" width="415" height="20" src="/_astro/1792133453995.Cc_D617J_17siru.webp" /><figcaption>5.2.6</figcaption></figure><p></p><p>与一刷时一样的错误，没有考虑到 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的行列式不能套用 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的行列式去解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBy5q0cll7x1dZgABf0Ezl7YXdt1-5NkAAmAQaxuo55BWDZjXQhWsSpwBAAMCAAN4AAM9BA" alt="5.2.10" /><figcaption>5.2.10</figcaption></figure><p></p><p>这里应该是特征值求错了，想当然是 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>？有这方面因素，但是更多的，<span><span>∣A∣=−1|A|=-1</span><span><span><span></span><span>∣</span><span>A</span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>1</span></span></span></span> 抄过来的时候抄错了。</p></section><section><h3>张宇 30 讲基础线代 2 刷第 6 章<a href="#张宇-30-讲基础线代-2-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBy9q0cmDEQeJl5enNTUcpudq-nqrFAACYRBrG6jnkFYIActgHsj7dQEAAwIAA3gAAz0E" alt="6.1.5" /><figcaption>6.1.5</figcaption></figure><p></p><p>想当然直接选了，而没有切实去算，属于理解错误 + 嫌麻烦没有去算。这里的特征向量即便怎么取，取 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 也好，还是取 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>。都不会影响到特征值，只有位置会影响。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzBq0cmXV7qHSzzRcRqVutKP9jfEPgACYhBrG6jnkFbV3psn-FzCXAEAAwIAA3gAAz0E" alt="6.1.11" /><figcaption>6.1.11</figcaption></figure><p></p><p>本题完全没想到怎么做，还是想着拆。除了拆之外还有什么做法？这里的意思是说换元法。这种方法是可能会导致不可逆，所以只要让凑出来的这个式子不可逆就好了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBjpq0KBSZkYc145qYyn4PN0Wd9g0igAClxNrG6jniFaFO6_Ppw4TzAEAAwIAA3gAAz0E" alt="6.2.7" /><figcaption>6.2.7</figcaption></figure><p></p><p>低级计算错误，这道题就是仗着计算简单没去算，<span><span>4−5t2−4−4t&gt;04-5t^2-4-4t&gt;0</span><span><span><span></span><span>4</span><span></span><span>−</span><span></span></span><span><span></span><span>5</span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>4</span><span></span><span>−</span><span></span></span><span><span></span><span>4</span><span>t</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，结果跳步化简化简完变成了 <span><span>t(5t−4)&lt;0t(5t-4)&lt;0</span><span><span><span></span><span>t</span><span>(</span><span>5</span><span>t</span><span></span><span>−</span><span></span></span><span><span></span><span>4</span><span>)</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzJq0cpC6t-j-94oUNeGYhp4N2RxpQACZRBrG6jnkFbSqYuuPd4iBQEAAwIAA3gAAz0E" alt="6.2.8" /><figcaption>6.2.8</figcaption></figure><p></p><p>关于这道题，不知道为什么是这个意思。比如说，假设存在一项 <span><span>x1x_1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，那么这个东西其实就不是二次型。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzNq0cpY_kR3ypJ9uqec5M-IEIg8GgACZhBrG6jnkFbMg0ukZhom7wEAAwIAA3gAAz0E" alt="6.2.9" /><figcaption>6.2.9</figcaption></figure><p></p><p>低级计算错误，本题没做第 2 问，不过对于第 1 问，因式分解的时候没有考虑好正负号。</p></section></section>
<section><h2>张宇 1000 基础 2 刷<a href="#张宇-1000-基础-2-刷"><span>#</span></a></h2><section><h3>张宇 1000 基础 2 刷第 1 章<a href="#张宇-1000-基础-2-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzRq0crYvhZGBwT8MHiquIXQo5PwCwACZxBrG6jnkFYx2yw-RUgFvQEAAwIAA3gAAz0E" alt="1.4" /><figcaption>1.4</figcaption></figure><p></p><p>属于低级错误，<span><span>x−πx-\pi</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>π</span></span></span></span> 没代入 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 里算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzVq0crquDrt8wL5jKrQ7awHbG6fcQACaBBrG6jnkFYKP8yhVkPRVQEAAwIAA3gAAz0E" alt="1.8" /><figcaption>1.8</figcaption></figure><p></p><p>做的是对的，但是还是放在这里。主要的问题就是，在进行 <span><span>1+a1+a</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>a</span></span></span></span> 的时候，不是直接 <span><span>1+o(x)1+o(x)</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span>x</span><span>)</span></span></span></span>，而是 <span><span>1+a1+a</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>a</span></span></span></span>，然后下面的乘上去</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzZq0cr6GsFpwh94hY-Z6c2wpkTp0gACaRBrG6jnkFbKc5IkxT3VDgEAAwIAA20AAz0E" alt="1.11" /><figcaption>1.11</figcaption></figure><p></p><p>属于低级错误，泰勒公式背错了，注意 <span><span>n(n−1)/2n(n-1)/2</span><span><span><span></span><span>n</span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>/2</span></span></span></span>，这个 <span><span>/2/2</span><span><span><span></span><span>/2</span></span></span></span> 忘了。</p></section><section><h3>张宇 1000 基础 2 刷第 2 章<a href="#张宇-1000-基础-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzdq0csNotsMiEzVxVhCF7woRaTL3QACahBrG6jnkFZTE1s0wL5VKwEAAwIAA20AAz0E" alt="2.7" /><figcaption>2.7</figcaption></figure><p></p><p>本题错选为 D。想错了当且仅当（算想当然的低级错误）。本题当且仅当应为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，而不是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p></section><section><h3>张宇 1000 基础 2 刷第 3 章<a href="#张宇-1000-基础-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzhq0ctUgDHhxDVOzsd2IH4a74rFsQACaxBrG6jnkFb5G6NocE7jLwEAAwIAA20AAz0E" alt="3.1" /><figcaption>3.1</figcaption></figure><p></p><p>低级错误，<span><span>1−cos⁡x1-\cos x</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 等价无穷小为 <span><span>12x2\frac{1}{2}x^2</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，而不是 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>。</p></section><section><h3>张宇 1000 基础 2 刷第 4 章<a href="#张宇-1000-基础-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzlq0ctoyKqeZ2kJY0hvbIiFzfgRPwACbBBrG6jnkFYyEWjTZUFRLAEAAwIAA20AAz0E" alt="4.7" /><figcaption>4.7</figcaption></figure><p></p><p>低级错误。本题错误原因在于当 <span><span>t=0t=0</span><span><span><span></span><span>t</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 代入的时候，<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 并不是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，而应该计算出对应的值。</p></section><section><h3>张宇 1000 基础 2 刷第 5 章<a href="#张宇-1000-基础-2-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBkZq0KNukv4WzIn5CQJmW5YNOcpZ6wACrBNrG6jniFaQKwbtQvbyMwEAAwIAA3gAAz0E" alt="5.5" /><figcaption>5.5</figcaption></figure><p></p><p>本题错选为 B。其实到这里为止，最终是理解对了，但是呢，想当然了，这道题是 <span><span>f′′f''</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span></span></span></span>，而不是 <span><span>f′f'</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 的函数。</p><p>做这种题要耐心。</p><p>错题重刷再次总结一下，</p><p>如果题目给的是 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 和 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的关系，那么很难判断出拐点，对于极值点，直接观察局部最值即可，对于零点直接观察和 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 轴的交点即可。</p><p>如果题目给的是 <span><span>f′f'</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的关系，那么可以通过 <span><span>f′f'</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的交点（需要变号）或者无穷变号，可以判断出是极值点，可以通过 <span><span>f′f'</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 的极值（包括无穷）判断拐点。</p><p>给的是 <span><span>f′′f''</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的关系，观察其两边变号的 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 点或者无穷点即可。</p><p>本质是要看清楚是什么关系。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBztq0czgF2eeT44PN_6QXvHMQO2XxwACbRBrG6jnkFbNqylf53xLKQEAAwIAA3gAAz0E" alt="5.10" /><figcaption>5.10</figcaption></figure><p></p><p>本题属于低级错误 + 不会做，排除法可以显然知道 A 必然是错的，但是我在排除了 BD 后选了 A。</p><p>从曲率圆的定义出发，显然可以得到 <span><span>y=1y=1</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，<span><span>y′=1y'=1</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，<span><span>∣y′′∣=2|y''|=2</span><span><span><span></span><span>∣</span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span>。但是这一步之后就没法推下去了，因为不知道是取 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 还是 <span><span>−2-2</span><span><span><span></span><span>−</span><span>2</span></span></span></span>。根据曲率圆定义，该点的导数与导数的导数和曲率圆一致，所以可以得到 <span><span>y′′=2y''=2</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span>。尤其需要注意，因为泰勒展开的时候，第 3 项是 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，所以最终 <span><span>c=−1c=-1</span><span><span><span></span><span>c</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>1</span></span></span></span>。</p></section><section><h3>张宇 1000 基础 2 刷第 6 章<a href="#张宇-1000-基础-2-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBzxq0cz4niQAAc915GWsRtYtn0W7jZ8AAm4Qaxuo55BWiIhxJFQg-aYBAAMCAAN4AAM9BA" alt="6.3" /><figcaption>6.3</figcaption></figure><p></p><p>本题错选为 B。属于低级错误，和 16 题类似的，算着算着忘了自己在做什么。我的方法是求 <span><span>x−xln⁡xx-x\ln x</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span></span><span>ln</span><span></span><span>x</span></span></span></span>，其中 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 是 <span><span>ba\frac{b}{a}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，也就是当它小于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 的时候，也就是 <span><span>ba&gt;e\frac{b}{a}&gt;e</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>e</span></span></span></span> 的时候，而不是在算本来的和这个函数有 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 个交点。忘记求什么是一个很严重的问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBz1q0c0MAAGwVx1qp7Z64zA6rBs4Nu8AAm8Qaxuo55BWd99n2nGyE3gBAAMCAAN4AAM9BA" alt="6.12" /><figcaption>6.12</figcaption></figure><p></p><p>第 12 题没有理解清楚泰勒展开。事实上对 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 在 <span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 处的展开，并非是根据已知公式得出最终结论，而是根据泰勒公式本身得到，也就是说，存在 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 项。</p><p>第 13 题属于低级错误，求到三阶导的时候，忘记加负号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBz5q0c0hOu__hO7u6nk-uAABYwLy5uUAAnAQaxuo55BWTKw3zatVX7QBAAMCAAN4AAM9BA" alt="6.16" /><figcaption>6.16</figcaption></figure><p></p><p>本题错选为 D。属于低级错误，忘记自己要做什么了。显然，<span><span>k=xe−ln⁡xk=\frac{x}{e}-\ln x</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>e</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>ln</span><span></span><span>x</span></span></span></span>，求出来图像长啥样了之后，我们应该求的是 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 与函数的交点，而不是求其本身全 <span><span>&gt;0&gt;0</span><span><span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 而导致的没有零点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB0Bq0c1JGSbpV-cDbZQ8aze6euYAATUAAnIQaxuo55BWNXPAkUwP0cABAAMCAAN4AAM9BA" alt="6.21" /><figcaption>6.21</figcaption></figure><p></p><p>本题错选为 C，理解错罗尔原话与罗尔定理的区别。对于罗尔原话，是从底向上，对于 <span><span>f(n)(x)f^{(n)}(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>(</span><span>n</span><span>)</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 不变号且不为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 的系数即为 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 至多有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个零点。从上到下为罗尔定理，为存在以及至少。</p><p>不要想当然，认认真真分析，已知条件是让你用罗尔定理的，用完之后是存在，而不是唯一。</p></section><section><h3>张宇 1000 基础 2 刷第 7 章<a href="#张宇-1000-基础-2-刷第-7-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBz9q0c0zm4OhX4P8NRP7f4TKo_hmtgACcRBrG6jnkFY86riQffW-cgEAAwIAA3gAAz0E" alt="7.4" /><figcaption>7.4</figcaption></figure><p></p><p>第 4 题没想到圆柱体的表面积不只是有侧面积，还有底面积。</p><p>第 5 题则是做出来 <span><span>510=a10\frac{5}{10}=\frac{a}{10}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>10</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>5</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>10</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>a</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，然后脑子抽了选了 B。</p></section><section><h3>张宇 1000 基础 2 刷第 8 章<a href="#张宇-1000-基础-2-刷第-8-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9Fq0y833nJ0obbetpAErx0OZLjcUQACkBlrG-BrmFaclzQQTHZ6igEAAwIAA3gAAz0E" alt="8.7" /><figcaption>8.7</figcaption></figure><p></p><p>本题错选为 D。理解错误，函数不等式两边同时求导，这个符号可能会变。移过去然后积分中值定理就好了。</p><p>其实这道题移过去设函数就好了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9Jq0y9NEiVTw5ZkS3cHtTqL2MV6qQACkRlrG-BrmFZAGAc9StUvCAEAAwIAA3gAAz0E" alt="8.21" /><figcaption>8.21</figcaption></figure><p></p><p>本题错选为 D。对于这道题，已经捋清楚 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 积分了，所以从中间拆。但是，需要注意的是，拆完之后，后面那一项仍然是对 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>，也就是对有限值，所以得 <span><span>p&lt;1p&lt;1</span><span><span><span></span><span>p</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p></section><section><h3>张宇 1000 基础 2 刷第 9 章<a href="#张宇-1000-基础-2-刷第-9-章"><span>#</span></a></h3><p>一元积分学的计算，心不在焉。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9Nq0zC_AdT4iDj5med1AWDvxl4ltgACkxlrG-BrmFbn4ipAWZc7ZwEAAwIAA20AAz0E" alt="9.2" /><figcaption>9.2</figcaption></figure><p></p><p>本题采用换元法的时候，忘记 <span><span>dx=⋯ dt\mathrm{d}x=\cdots\,\mathrm{d}t</span><span><span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>⋯</span><span></span><span></span><span>d</span><span>t</span></span></span></span> 了，属于低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9Rq0zD3U9wuLtvbP2ObqiIdgCwskgAClBlrG-BrmFbCH5hZT5iJXAEAAwIAA20AAz0E" alt="9.10" /><figcaption>9.10</figcaption></figure><p></p><p>本题考虑过将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的关系互换，但是还是使用的是 <span><span>dy=⋯ dx\mathrm{d}y=\cdots\,\mathrm{d}x</span><span><span><span></span><span>d</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>⋯</span><span></span><span></span><span>d</span><span>x</span></span></span></span> 的方法。需要注意，得换上下限（本题这里没换上下限，导致算出来非常奇怪）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9Vq0zEVBNBZL-PlXHi747NusomlLwAClRlrG-BrmFZybOfuOBNcegEAAwIAA3gAAz0E" alt="9.13" /><figcaption>9.13</figcaption></figure><p></p><p>本题错选为 A，显然，<span><span>xx=1≠1x\frac{x}{x}=1\ne\frac{1}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>错题重刷仍然错误。我记得答案是 D。然而选了 C。可导性可以讨论，但是导函数连续呢？通过可导的定义求出那一点的导数，然后求出全局的导数再逼近那一个点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9Zq0zEzmEkUrqCC8RKfCIbGVgeNjwAClhlrG-BrmFbAJSe-Fsh3igEAAwIAA3gAAz0E" alt="9.20" /><figcaption>9.20</figcaption></figure><p></p><p>第 20 题采用华理士公式，但是一开始的时候把 <span><span>InI_n</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的华理士公式写错了，从而引发连锁错误。</p><p>第 21 题属于低级错误，拆开后 <span><span>x2−9x^2-9</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>9</span></span></span></span> 写成 <span><span>++</span><span><span><span></span><span>+</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9dq0zFMbxmpPQObPA7attmX_j-T1gAClxlrG-BrmFZtsH2kT-VbOQEAAwIAA20AAz0E" alt="9.25" /><figcaption>9.25</figcaption></figure><p></p><p>本题属于低级错误，误认为可以直接取 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，实则有一个问题，那就是 <span><span>arccos⁡x\arccos x</span><span><span><span></span><span>arccos</span><span></span><span>x</span></span></span></span> 不是偶函数也不是奇函数！</p></section><section><h3>张宇 1000 基础 2 刷第 10 章<a href="#张宇-1000-基础-2-刷第-10-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9hq0zFkQ43FZWf3399zE9Banj65ogACmBlrG-BrmFY2j1kboMw9pwEAAwIAA3gAAz0E" alt="10.3" /><figcaption>10.3</figcaption></figure><p></p><p>本题没做，感觉计算太麻烦了。本题计算感觉麻烦的原因是：分别算 <span><span>SAS_A</span><span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>SBS_B</span><span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，但是这道题可以用 <span><span>SA+SB−SAS_A+S_B-S_A</span><span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的方法来计算 <span><span>SBS_B</span><span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，如此计算就会很方便。积累一个技巧。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9lq0zGDPzpHbP6hPa-jSBjUAXxSPgACmRlrG-BrmFb6nnKRKdw0JQEAAwIAA3gAAz0E" alt="10.13" /><figcaption>10.13</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9pq0zGNsJgFfB-1jGk34xNJiqls8AACmhlrG-BrmFZvuqf2wBRmKQEAAwIAA20AAz0E" alt="10.19" /><figcaption>10.19</figcaption></figure><p></p><p>这三题放一起讲。这三题都是没乘 <span><span>2π2\pi</span><span><span><span></span><span>2</span><span>π</span></span></span></span>，有一个很严肃的问题，对于这类题现在统一用二重积分去做，不要再用一维的公式了，这几题都是一维和二维的公式搞混了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9tq0zGmhSvlNHWgYz6tXJQn1MFSVAACmxlrG-BrmFZTjuju7Rok0wEAAwIAA3gAAz0E" alt="10.17" /><figcaption>10.17</figcaption></figure><p></p><p>想当然直接写 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，而不是代入计算。</p></section><section><h3>张宇 1000 基础 2 刷第 11 章<a href="#张宇-1000-基础-2-刷第-11-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB9xq0zJUuPE6tuVeLIKBnPLO9DuTGgACnRlrG-BrmFY05-I8LPQ5swEAAwIAA20AAz0E" alt="11.11" /><figcaption>11.11</figcaption></figure><p></p><p>感觉这个不会做不是我的问题。换元然后分部积分，对于这类题算是一个可以总结的通法。</p></section><section><h3>张宇 1000 基础 2 刷第 12 章<a href="#张宇-1000-基础-2-刷第-12-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB91q0zLxQtvKTlS5qFw1kJiHo8bklwACnhlrG-BrmFZGjBheZRVAnQEAAwIAA3gAAz0E" alt="12.2" /><figcaption>12.2</figcaption></figure><p></p><p>对于这类题，需要注意，我建系之后，是 <span><span>x2−x1x_2-x_1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，而不是 <span><span>f2−f1f_2-f_1</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。做的时候就感觉不对劲了，因为要保持一个东西是一样的。对于这道题也就是保持 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 是一样的额，那么是 <span><span>x2−x1x_2-x_1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB95q0zMmIZLK0Np4JDm-Sow3wGgQBAACnxlrG-BrmFYdyLP18Bpn5gEAAwIAA3gAAz0E" alt="12.5" /><figcaption>12.5</figcaption></figure><p></p><p>对于这道题，知道要去表达 <span><span>VV</span><span><span><span></span><span>V</span></span></span></span> 的体积，但是没想到用变限积分的形式去表达，所以做起来非常的困难。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB99q0zM4HQblFnBM9WlU2t99XuCrMQACoBlrG-BrmFaACkSKGhG0DAEAAwIAA3gAAz0E" alt="12.6" /><figcaption>12.6</figcaption></figure><p></p><p>没做。稳扎稳打分析即可，先算引力再算做功</p></section><section><h3>张宇 1000 基础 2 刷第 13 章<a href="#张宇-1000-基础-2-刷第-13-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-Bq0zNbfhJdvJawkk-kaDY5RWJJxQACoRlrG-BrmFaRYdgRipDHvwEAAwIAA20AAz0E" alt="13.8" /><figcaption>13.8</figcaption></figure><p></p><p>第 8 题一下没想出来怎么做，所以跳了。事实上直接令 <span><span>uvuv</span><span><span><span></span><span>uv</span></span></span></span> 即可。</p><p>第 9 题其实终于理解怎么做了，但是没有考虑完全（也就是对于 y 的讨论）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-Fq0zOgdlYfHh-wJ4_XRsHM-OkP9AACohlrG-BrmFZvnSDmnaS0iAEAAwIAA3gAAz0E" alt="13.13" /><figcaption>13.13</figcaption></figure><p></p><p>直接跳了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-Jq0zPOH-1zK7clR7pLbx4kvMtppgACoxlrG-BrmFa_yEu7og74cgEAAwIAA3gAAz0E" alt="13.18" /><figcaption>13.18</figcaption></figure><p></p><p>第 18 题不会做。全设为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 即可。感觉这道题主要是语文阅读理解，这道题一定要注意是 D。</p><p>第 19 题属于低级错误，做出来了但是选项选错了。</p></section><section><h3>张宇 1000 基础 2 刷第 14 章<a href="#张宇-1000-基础-2-刷第-14-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-Nq0zPvXOPl-MBDq1R0TWl3w4JFLQACpRlrG-BrmFaAWh7_JfgIyQEAAwIAA3gAAz0E" alt="14.10" /><figcaption>14.10</figcaption></figure><p></p><p>本题错误原因在理解错 <span><span>x=rcos⁡θx=r\cos\theta</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>cos</span><span></span><span>θ</span></span></span></span>，应该直接算，而不是将 <span><span>r(θ)r(\theta)</span><span><span><span></span><span>r</span><span>(</span><span>θ</span><span>)</span></span></span></span> 代入。对于这类题应该是二重积分的时候不用代，对于一重的时候要。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-Rq0zQIEzjavx7gpmh4nVA3tY3VBAACphlrG-BrmFYJOnYxIwAB_C4BAAMCAAN4AAM9BA" alt="14.16" /><figcaption>14.16</figcaption></figure><p></p><p>犯了一个经典的错误，标准的零分，拆根号的时候要注意正负号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-Vq0zQ4m6ynw8U07xChcvsfP87oyQACpxlrG-BrmFaECxWmo-zKsAEAAwIAA3gAAz0E" alt="14.19" /><figcaption>14.19</figcaption></figure><p></p><p>这两题都还没写，直接跳了先。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-Zq0zRqSnp57_jpYuchu0PYGZFTSAACqBlrG-BrmFb_N2Erq_ueKQEAAwIAA3gAAz0E" alt="14.23" /><figcaption>14.23</figcaption></figure><p></p><p>第 23 题最后一小步错了，<span><span>I1−I2I_1-I_2</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 减错误。</p><p>第 24 题则是整体代换后，反而漏了原本的 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span>。</p><p>这两题都属于非常低级的错误。</p></section><section><h3>张宇 1000 基础 2 刷第 15 章<a href="#张宇-1000-基础-2-刷第-15-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-dq0zSCTBrSrC1CYAbAVfjktx_lpgACqRlrG-BrmFZSKz_HirfLTQEAAwIAA3gAAz0E" alt="15.8" /><figcaption>15.8</figcaption></figure><p></p><p>本题没有理解具体的含义，实则稳扎稳打一个个分析就可以分析出来（也就是经典怕了，而不是不会做）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-hq0zSUCyniqN0J_kczrLglprpYMAACqhlrG-BrmFYHOb-ARqbi9QEAAwIAA3gAAz0E" alt="15.10" /><figcaption>15.10</figcaption></figure><p></p><p>这道题其实是对的，但是对的比较模糊，我不知道为什么可以证明出 <span><span>C=−1C=-1</span><span><span><span></span><span>C</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>1</span></span></span></span>。细想之下，发现可以把通解公式变为变限积分的形式，从而轻松求解出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-lq0zSjXc506QABwfH8r2Fv6wrklTQAAqsZaxvga5hWMZo7wZekct8BAAMCAAN4AAM9BA" alt="15.16" /><figcaption>15.16</figcaption></figure><p></p><p>属于低级错误，想当然以为 <span><span>a±2ia\pm2i</span><span><span><span></span><span>a</span><span></span><span>±</span><span></span></span><span><span></span><span>2</span><span>i</span></span></span></span>，没有 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-pq0zS3hcZQMFK6vWBFbs8TRJndvwACrBlrG-BrmFafyq8nELMr4AEAAwIAA20AAz0E" alt="15.19" /><figcaption>15.19</figcaption></figure><p></p><p>属于低级错误。本题错误原因在算出来所有东西后往回带（即带 <span><span>y′′y''</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span></span></span></span> 之类的时候），<span><span>−2y′-2y'</span><span><span><span></span><span>−</span><span>2</span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 的中间一部没有 <span><span>×2\times2</span><span><span><span></span><span>×</span><span>2</span></span></span></span>。</p></section><section><h3>张宇 1000 基础 2 刷线代第 1 章<a href="#张宇-1000-基础-2-刷线代第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-tq0zUhgIsxhlIEVGEnpJTPzYt7JAACrRlrG-BrmFZ6CLaB-F4DWQEAAwIAA3gAAz0E" alt="1.6" /><figcaption>1.6</figcaption></figure><p></p><p>本题错选为 A，为经验主义（按照经验感觉是 A，然后没去算）</p></section><section><h3>张宇 1000 基础 2 刷线代第 2 章<a href="#张宇-1000-基础-2-刷线代第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-xq0zUxJYooCsCVk3diu6vmFQMWYAACrhlrG-BrmFZqOgN3-MefvgEAAwIAA20AAz0E" alt="2.9" /><figcaption>2.9</figcaption></figure><p></p><p>本题错选为 B，属于低级错误，和 1 刷时情况类似，也是只考虑了一边，然后没看清楚题目。</p></section><section><h3>张宇 1000 基础 2 刷线代第 4 章<a href="#张宇-1000-基础-2-刷线代第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-1q0zVEiLXL4n6SETAZ9eOgwJI8ugACrxlrG-BrmFY404qEWP8jaAEAAwIAA3gAAz0E" alt="4.4" /><figcaption>4.4</figcaption></figure><p></p><p>本题错选为 B。辨析一下 B 和 D。齐次通解 + 特解。想错了，想着如果是 D 的话展开可能会抵消。但是事实上如果把 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 代入原方程，那么就会解出来 <span><span>−b-b</span><span><span><span></span><span>−</span><span>b</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-5q0zVUlHfFykVRFHgO-N1v00CokQACsBlrG-BrmFbWhbpsP5KJDgEAAwIAA3gAAz0E" alt="4.14" /><figcaption>4.14</figcaption></figure><p></p><p>属于低级错误，<span><span>2+(−5)=−3≠−72+(-5)=-3\ne-7</span><span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>−</span><span>5</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>3</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>−</span><span>7</span></span></span></span>。</p></section><section><h3>张宇 1000 基础 2 刷线代第 5 章<a href="#张宇-1000-基础-2-刷线代第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB-9q0zVjMbMU_jIGg63dD1tzZcYyCwACsRlrG-BrmFagyqdguAn0LgEAAwIAA3gAAz0E" alt="5.9" /><figcaption>5.9</figcaption></figure><p></p><p><span><span>P−1A−1P=λ−1≠λP^{-1}A^{-1}P=\lambda^{-1}\ne\lambda</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>P</span><span></span><span>=</span><span></span></span><span><span></span><span><span>λ</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>λ</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_Bq0zV0Np8KjcRyN-Pj0ARF834T6QACshlrG-BrmFbekkFt905hYAEAAwIAA3gAAz0E" alt="5.14" /><figcaption>5.14</figcaption></figure><p></p><p>没有想到从特征值的角度走。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_Fq0zWFqNTbJg-eIAIjGA25jfDiVAACsxlrG-BrmFaw6DbUv6kdSgEAAwIAA3gAAz0E" alt="5.17" /><figcaption>5.17</figcaption></figure><p></p><p>本题错选为 C。显然，<span><span>r(A)=1r(A)=1</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，意味着重数至少为 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，这里是脑子抽了没有去验算。主要是要记住一下特例。</p></section><section><h3>张宇 1000 基础 2 刷线代第 6 章<a href="#张宇-1000-基础-2-刷线代第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_Jq0zWZ18-zJ7HeaUpnqskCaE2jmwACtBlrG-BrmFYb2pzm_P7l9gEAAwIAA3gAAz0E" alt="6.7" /><figcaption>6.7</figcaption></figure><p></p><p>本题不想做，跳了。这里等略清醒的时候再看看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_Nq0zW1aWnKq6WDI-aNKRjZtKO3gQACtRlrG-BrmFZfUm-nQfbGcQEAAwIAA3gAAz0E" alt="6.11" /><figcaption>6.11</figcaption></figure><p></p><p>第 11 题错选为 C。需要注意实对称</p><p>第 12 题感觉非常神秘，我没想到怎么做啊！欸，好像是对的，只是这个 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 不会被解出来罢了。这个做出来算出来 <span><span>A+aEA+aE</span><span><span><span></span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>a</span><span>E</span></span></span></span> 的特征值，而不是 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的特征值，前者的特征值算出来正好是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，<span><span>2\sqrt{2}</span><span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span>，<span><span>2\sqrt{2}</span><span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span>。本质上是不自信带来的。
这道题的精彩之处是利用变形矩阵与原矩阵特征值和特征向量的关系。
还有就是，这类题似乎用 <span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span> 去算可以简便计算（毕竟 <span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span> 转置就是 <span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span> 的逆）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_Rq0zXJ_sZQrIwOpGVJKrBWn3Au-AACthlrG-BrmFbGVl3NwYVO6AEAAwIAA3gAAz0E" alt="6.19" /><figcaption>6.19</figcaption></figure><p></p><p>没见过这类题，但是细想一下，其实就是配方法。但是需要两次配方法，这道题回头得再看看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_Vq0zXa_hZ-HSHBDknxPgalWGWIpQACtxlrG-BrmFYGWQAB-sUWvLcBAAMCAAN4AAM9BA" alt="6.23" /><figcaption>6.23</figcaption></figure><p></p><p>关于这类题得研究一下这种题的最大值点怎么解。实际上有个等价变化，然后取最大即可。这个什么 <span><span>uvwuvw</span><span><span><span></span><span>uv</span><span>w</span></span></span></span>，<span><span>−w≤w-w\le w</span><span><span><span></span><span>−</span><span>w</span><span></span><span>≤</span><span></span></span><span><span></span><span>w</span></span></span></span> 也只是单纯因为可以凑出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_Zq0zXsZrBowBYyvd4Jg9mgSlC8owACuBlrG-BrmFYEEVxxZdNczwEAAwIAA3gAAz0E" alt="6.25" /><figcaption>6.25</figcaption></figure><p></p><p>本题属于是脑子不清醒的产物，被意淫的答案影响了。事实上很简单。</p></section></section>
<section><h2>武忠祥高数强化 2 刷<a href="#武忠祥高数强化-2-刷"><span>#</span></a></h2><section><h3>武忠祥高数强化 2 刷第 1 章<a href="#武忠祥高数强化-2-刷第-1-章"><span>#</span></a></h3><p>对于本章的重刷，低级错误非常多，评价为边看视频边写题导致的，而且对于非常多的步骤没有做一步算一步。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIFq1hbl_XFmxnX2LDPDjZsMESHUGQACYBZrG8YqsVYUZn-A42KyOAEAAwIAA3gAAz0E" alt="1.1" /><figcaption>1.1</figcaption></figure><p></p><p>本题选对了，但是判断具体项判断错了。1 显然错 2 显然对。对于 3，没说这点是连续的。</p><p>对于举反例一定要从不连续的角度思考。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIJq1hcwVmEFyuea7iK-wfoxiJQ3rwACYRZrG8YqsVYVkG14_6kq_gEAAwIAA20AAz0E" alt="1.2" /><figcaption>1.2</figcaption></figure><p></p><p>本题属于极为低级的错误，<span><span>−13+16=−16≠−12-\frac{1}{3}+\frac{1}{6}=-\frac{1}{6}\ne-\frac{1}{2}</span><span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>6</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>6</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCINq1hdGig1d51Qbrc7l3qMkuZpn7AACYhZrG8YqsVZusuQ03jy2gQEAAwIAA20AAz0E" alt="1.3" /><figcaption>1.3</figcaption></figure><p></p><p>属于低级错误，如下图：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIRq1hdbU_E2EM74cFsjus1jL0cVtwACYxZrG8YqsVahKPtqqphX5AEAAwIAA3gAAz0E" alt="1.3 解" /><figcaption>1.3 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIVq1hd1SFeowQPaYGTyIRmg_OO2tQACZBZrG8YqsVZa91jCEC943gEAAwIAA3gAAz0E" alt="1.4" /><figcaption>1.4</figcaption></figure><p></p><p>本题错选为 A。
对于这道题，首先 1 显然是错误的，取 <span><span>x+sin⁡xx+\sin x</span><span><span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span>；</p><p>对于 2，我的想法错在让前者取 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，即便前者取 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，那么后者 <span><span>Cx\frac{C}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>C</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，当 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 趋于无穷的时候，后面那个也是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p>对于 3，想当然没去做。</p><p>综上所述，本题 2 和 4 其实是对洛必达法则的理解问题。如果一个函数 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶可导，那么可以洛 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次。如果知道这个函数第 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶可导的时候同时它还存在，那么就可以洛 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次。</p><p>对于第 3 空，其实是犯了一个神秘的错误，那就是没想到同时乘上 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span>。事实上这道题在 880 里出现过的！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIZq1hf3n0qotqVClIQJFBI_vDMXWAACZRZrG8YqsVbCCUDKQD3LKwEAAwIAA20AAz0E" alt="1.5" /><figcaption>1.5</figcaption></figure><p></p><p>对于这道题属于很低级的错误，是因为通分完了之后在那里滥用等价无穷小（直接把 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 的平方看成了 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 去算）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIdq1hgy0MWQ_6G5BFpn3ZCiRxm8CQACZhZrG8YqsVbZJ1vrP82uuwEAAwIAA20AAz0E" alt="1.6" /><figcaption>1.6</figcaption></figure><p></p><p>本题属于低级错误，对于这道题，等价无穷小，<span><span>1−ex1-e^x</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 等价无穷小代换为 <span><span>−x-x</span><span><span><span></span><span>−</span><span>x</span></span></span></span>，脑子抽了想着 <span><span>1−e−x1-e^{-x}</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>−</span><span>x</span></span></span></span></span></span></span></span></span></span></span></span> 代换为 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>。评价为过拟合。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIhq1hhF96XkjKZdTsudgYooB6ooxgACZxZrG8YqsVY-lPcyLRWIfwEAAwIAA20AAz0E" alt="1.7" /><figcaption>1.7</figcaption></figure><p></p><p>本题错误原因在 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 凑上去的时候应该是 <span><span>+ln⁡x+\ln x</span><span><span><span></span><span>+</span><span></span><span>ln</span><span></span><span>x</span></span></span></span>，而不是 <span><span>×ln⁡x\times\ln x</span><span><span><span></span><span>×</span><span></span><span>ln</span><span></span><span>x</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIlq1hhVPu5SaYSpKYrw-hIFtFiUaAACaBZrG8YqsVaU2eujbMpdVwEAAwIAA20AAz0E" alt="1.8" /><figcaption>1.8</figcaption></figure><p></p><p>泰勒公式问题，<span><span>arcsin⁡x\arcsin x</span><span><span><span></span><span>arcsin</span><span></span><span>x</span></span></span></span> 的三阶泰勒展开为 <span><span>16\frac{1}{6}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>6</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，而不是 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIpq1hhmtSR_MOw1vByg5bFlfh3kJAACaRZrG8YqsVYtKOAFaoCaRAEAAwIAA20AAz0E" alt="1.9" /><figcaption>1.9</figcaption></figure><p></p><p>第 3 题属于低级错误，<span><span>ln⁡(x+1+x2)\ln\left(x+\sqrt{1+x^2}\right)</span><span><span><span></span><span>ln</span><span></span><span><span><span>(</span></span><span>x</span><span></span><span>+</span><span></span><span><span><span><span><span><span></span><span><span>1</span><span></span><span>+</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span><span>)</span></span></span></span></span></span>，将 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 代入，结果代入成 <span><span>ln⁡2\ln 2</span><span><span><span></span><span>ln</span><span></span><span>2</span></span></span></span>。</p><p>第 4 题不能用夹逼定理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCItq1hh6TL-79ODcNuIXzpWoCF8Z0gACahZrG8YqsVbaMPR2tdR-nwEAAwIAA3gAAz0E" alt="1.10" /><figcaption>1.10</figcaption></figure><p></p><p>对于这道题，也是积分代入的时候漏代入了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCIxq1hiK42vkH1AjMPg2FZ0Q6zfOYgACaxZrG8YqsVY07JkuT4Q2UQEAAwIAA20AAz0E" alt="1.11" /><figcaption>1.11</figcaption></figure><p></p><p>对于这种题，首先先思考方法，无非采用取对数凑积分定义或者采用夹逼定理。对于这题，显然是没法采用凑积分定义去做的，所以考虑夹逼定理。显然本题的上界为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，考虑如何凑下界。利用移位技巧可以凑出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCI1q1hidYLb-cY6SxHi-8Ygs7m_yyQACbRZrG8YqsVamtAozw863lQEAAwIAA20AAz0E" alt="1.12" /><figcaption>1.12</figcaption></figure><p></p><p>对于第 1 题，<span><span>xln⁡x−xx\ln x-x</span><span><span><span></span><span>x</span><span></span><span>ln</span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span></span></span></span> 把 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 代入的时候漏代。</p><p>对于第 2 题其实是对的，只是单纯没写完。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCI5q1hixtIR4ybVrTSIv4rq3fX5mAANuFmsbxiqxVl3_RwbaAyYmAQADAgADbQADPQQ" alt="1.13" /><figcaption>1.13</figcaption></figure><p></p><p>低级错误，<span><span>b−1=3b-1=3</span><span><span><span></span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>3</span></span></span></span>，<span><span>b=4b=4</span><span><span><span></span><span>b</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span> 而不是 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCI9q1hjAdRqoJOmr66jDWYNNFVb63AACbxZrG8YqsVaChGPeXFlSWAEAAwIAA3gAAz0E" alt="1.14" /><figcaption>1.14</figcaption></figure><p></p><p>属于低级错误。看漏了一个条件。</p></section><section><h3>武忠祥高数强化 2 刷第 2 章<a href="#武忠祥高数强化-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJBq1hkPlutN1V7BMfjnHvYWRK0mFAACchZrG8YqsVZ2wDmO7AzgUgEAAwIAA3gAAz0E" alt="2.1" /><figcaption>2.1</figcaption></figure><p></p><p>属于低级错误，第一步的时候 <span><span>−3-3</span><span><span><span></span><span>−</span><span>3</span></span></span></span> 抄成了 <span><span>33</span><span><span><span></span><span>3</span></span></span></span>，从而全盘错误。思路其实是对的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJFq1hmQYoKkt8_Ms6obZO-44Bqi9QACcxZrG8YqsVbpZMZWxw9lRgEAAwIAA3gAAz0E" alt="2.2" /><figcaption>2.2</figcaption></figure><p></p><p>后来做对了，但是还是放在这里注意一下。前面那一块。</p><p>注意本来就不可导的点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJJq1hmp0LITPL4KLXL6T1q_RJKylAACdBZrG8YqsVaU61shW9XKAQEAAwIAA3gAAz0E" alt="2.3" /><figcaption>2.3</figcaption></figure><p></p><p>漏抄了一个平方，导致计算错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJNq1hm7lSvuSP1nv_Ay0op_DNKC9QACdRZrG8YqsVYKkOnM4KaZZAEAAwIAA3gAAz0E" alt="2.4" /><figcaption>2.4</figcaption></figure><p></p><p>这道题我知道用不能用等价无穷小那个方法，但是还是没想到怎么做。这道题也错了非常多次了，没想到用求导法则直接得出结论。这个需要非常非常注意。可以直接用求导法则的那个结论。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJRq1hnOsMqCtWXrgLoL_V5zN6PZ6wACdhZrG8YqsVbsOWsYjhoR9QEAAwIAA3gAAz0E" alt="2.5" /><figcaption>2.5</figcaption></figure><p></p><p>是对的，不过有更好的解法（利用原方程化简）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJVq1hnf-AAB6mMVMfQM8Ko7nXobdUMAAncWaxvGKrFWmgoAAavy3jAvAQADAgADeAADPQQ" alt="2.6" /><figcaption>2.6</figcaption></figure><p></p><p>属于低级错误，利用公式法求解 <span><span>y′y'</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 的时候代入求错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJZq1hnw3pAERzTui586ep_zfy12rQACeBZrG8YqsVbDHoIFDKoLWgEAAwIAA3gAAz0E" alt="2.7" /><figcaption>2.7</figcaption></figure><p></p><p>对于这类题，还是要注意谁是自变量谁是因变量，这个得搞清楚。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJdq1hoF5NT51s3hTFmfmCr1926i4QACeRZrG8YqsVZ5UZLs2CERSwEAAwIAA20AAz0E" alt="2.8" /><figcaption>2.8</figcaption></figure><p></p><p>属于低级错误，<span><span>12(sin⁡2x)2\frac{1}{2}(\sin 2x)^2</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>(</span><span>sin</span><span></span><span>2</span><span>x</span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 求导结果算的时候少了一个 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJhq1hoXwLOsBrAERVBDU0lNg92wBgACehZrG8YqsVa-DXmt_ydthgEAAwIAA3gAAz0E" alt="2.9" /><figcaption>2.9</figcaption></figure><p></p><p>这道题标圈了，知道自己的分析可能是有问题的。</p><p>其实这类题从大一开始就很有问题，现在彻底分析一下。拐点的定义是连续曲线，所以不存在一个点同为拐点/极值点。
<span><span>f′′(x0)=0f''(x_0)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，判别法失效，必须得去看左右区间，而不是 <span><span>f′′=0f''=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 的时候，<span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 这个点不是极值。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJlq1hsL0Km4xpP5rZpbkox8NG-n4gACfRZrG8YqsVZOr_yx10RVwgEAAwIAA3gAAz0E" alt="2.10" /><figcaption>2.10</figcaption></figure><p></p><p>第 1 问这里错了。依旧是利用经典不等式的时候错了。</p></section><section><h3>武忠祥高数强化 2 刷第 3 章<a href="#武忠祥高数强化-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJpq1hsp_v8yTqAIQfx22XdeRtiy6QACfhZrG8YqsVZ3MFGrq-6gTAEAAwIAA20AAz0E" alt="3.1" /><figcaption>3.1</figcaption></figure><p></p><p>本题在化简到最后地时候，没有考虑到 <span><span>nπn\pi</span><span><span><span></span><span>nπ</span></span></span></span> 对应的是 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 倍的 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，从而漏了一个 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。<span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 从 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>π\pi</span><span><span><span></span><span>π</span></span></span></span> 的积分应该算出来是 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，而不是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJtq1htAgJt-yx7PgdGQR6jb8teHbQACfxZrG8YqsVY5Pi9OZM4pEQEAAwIAA3gAAz0E" alt="3.2" /><figcaption>3.2</figcaption></figure><p></p><p>我没有采用变限积分的做法，但是这道题还是错的了。原因和上面一个一样，<span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 从 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>π\pi</span><span><span><span></span><span>π</span></span></span></span> 的积分算出来应该是 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，而不是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJxq1h5vJtPFw6R7uws_FcVm-hzc-gACgxZrG8YqsVaqc8omHqxJ8gEAAwIAA20AAz0E" alt="3.3" /><figcaption>3.3</figcaption></figure><p></p><p>跳步了。这道题利用区间再现后，相加没有除以 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJ1q1h6FdAlkwsh3dceLB1d9z9oEXQAChBZrG8YqsVaD-2X6J9UXxgEAAwIAA3gAAz0E" alt="3.4" /><figcaption>3.4</figcaption></figure><p></p><p>这题没招，我没去研究。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJ5q1h64B0dqq05hOcWwzU9mkeLWYQAChRZrG8YqsVYQQeFwPCKCdwEAAwIAA3gAAz0E" alt="3.5" /><figcaption>3.5</figcaption></figure><p></p><p>注意题目所说，<span><span>mm</span><span><span><span></span><span>m</span></span></span></span>，<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 均为正整数！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCJ9q1h7KSbwFQDsjiZ4bnTDo1bXiUQAChhZrG8YqsVYHsoIadQ1imgEAAwIAA20AAz0E" alt="3.6" /><figcaption>3.6</figcaption></figure><p></p><p>这道题必须放进来，犯了一个经典的错误，标准的零分。计算 <span><span>uv\frac{u}{v}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>v</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>u</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 求导的时候，如果 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，和 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 是函数的求导法则不可以混用。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKBq1h-BdR-Fu7nMSEz2UVeer56fOwACiBZrG8YqsVbRqmFD_L-_FQEAAwIAA3gAAz0E" alt="3.7" /><figcaption>3.7</figcaption></figure><p></p><p>本题也可以用变现函数直接算的方法（当然也得分区间），只是稍微麻烦了一点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKFq1h-TMA4CSMNH_-q1IxxPGDf-bwACihZrG8YqsVYXDVHdLSntBAEAAwIAA3gAAz0E" alt="3.8" /><figcaption>3.8</figcaption></figure><p></p><p>这道题可以注意一下，<span><span>2(3a+b)2(3a+b)</span><span><span><span></span><span>2</span><span>(</span><span>3</span><span>a</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span>)</span></span></span></span>，这个 <span><span>33</span><span><span><span></span><span>3</span></span></span></span> 其实就是当 <span><span>x=3x=3</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>3</span></span></span></span> 的时候。</p><p>注意切线以及几何意义。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKJq1h-qiW0gxPpSu_AKAtDCqG2kdgACixZrG8YqsVYPaS3IbWi4FAEAAwIAA3gAAz0E" alt="3.9" /><figcaption>3.9</figcaption></figure><p></p><p><span><span>1112\frac{11}{12}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>12</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>11</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 算出来之后，结果放到原式算的时候，变成了 <span><span>1211\frac{12}{11}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>11</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>12</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p></section><section><h3>武忠祥高数强化 2 刷第 4 章<a href="#武忠祥高数强化-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKNq1h_xIP1Ex1yJ9lxdAS4sSD9RUwACjBZrG8YqsVb-W8iVWviQjwEAAwIAA20AAz0E" alt="4.1" /><figcaption>4.1</figcaption></figure><p></p><p>没想到把 <span><span>dy\mathrm{d}y</span><span><span><span></span><span>d</span><span>y</span></span></span></span> 除下去然后利用一阶常系数。被上一题影响了，认为要凑令 <span><span>u=tan⁡yu=\tan y</span><span><span><span></span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span>tan</span><span></span><span>y</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKRq1iAHXt-dzzLS-jvYSvuz6SG-3gACjRZrG8YqsVauOQVW9-tebgEAAwIAA3gAAz0E" alt="4.2" /><figcaption>4.2</figcaption></figure><p></p><p>属于低级错误，<span><span>r2−r−2=0r^2-r-2=0</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>r</span><span></span><span>−</span><span></span></span><span><span></span><span>2</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 抄的时候把后面那个 <span><span>−-</span><span><span><span></span><span>−</span></span></span></span> 抄成 <span><span>++</span><span><span><span></span><span>+</span></span></span></span> 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKVq1iAWzxblZD2-ek7NV3Yysw2gpQACjxZrG8YqsVZxbRWCfdXGPwEAAwIAA3gAAz0E" alt="4.3" /><figcaption>4.3</figcaption></figure><p></p><p>第 2 问变形过去的时候，漏抄了题目里的 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。</p></section><section><h3>武忠祥高数强化 2 刷第 5 章<a href="#武忠祥高数强化-2-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKZq1iAuCBIaQu99u2wRD9DWY2O90QACkBZrG8YqsVZR7-e86CanuAEAAwIAA3gAAz0E" alt="5.1" /><figcaption>5.1</figcaption></figure><p></p><p>属于想当然的错误。对于这类题，首先先判断次数，上面 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 次下面 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 次，所以很有可能可以利用夹逼定理去做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKdq1iBJSsrsvCkQgBqcV1sdLZGcqQACkRZrG8YqsVaHZ9Zl0rvONAEAAwIAA3gAAz0E" alt="5.2" /><figcaption>5.2</figcaption></figure><p></p><p>做的是对的，不过需要注意书写。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKhq1iE5oLQDgeR2kpOvFSpwQJB6aQACkxZrG8YqsVYAASO35H4TMFkBAAMCAAN4AAM9BA" alt="5.3" /><figcaption>5.3</figcaption></figure><p></p><p>这道题想着用全微分做，属于是典型的被一种方法限制住了。也能用全微分去做，但是很麻烦。</p><p>对于这类题，首先先看是 <span><span>du\mathrm{d}u</span><span><span><span></span><span>d</span><span>u</span></span></span></span> 还是 <span><span>d\mathrm{d}</span><span><span><span></span><span>d</span></span></span></span> 其他的，是其他的，那么可以采用全微分，如果不是，直接求偏导就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKpq1iFaj5AFDJJhEhxYkc0nJxQ2JwAClRZrG8YqsVbfJswU4LXqugEAAwIAA3gAAz0E" alt="5.4" /><figcaption>5.4</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKlq1iFQ5Pi2FaSgFLWJNtjs9JZYhgAClBZrG8YqsVbnzTvTGmxDfgEAAwIAA3gAAz0E" alt="5.5" /><figcaption>5.5</figcaption></figure><p></p><p>对于这道题的充分性，其实想到了一半，把 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 全用 <span><span>txtx</span><span><span><span></span><span>t</span><span>x</span></span></span></span> 代换，然后呢，然后就不会了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKtq1iFvlN_eJWGJ5fgTNPWE-0ULwwAClhZrG8YqsVZgxkerEkCAtAEAAwIAA3gAAz0E" alt="5.6" /><figcaption>5.6</figcaption></figure><p></p><p>最后抄答案的时候，漏抄了一个 <span><span>cos⁡x\cos x</span><span><span><span></span><span>cos</span><span></span><span>x</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCKxq1iGBCpH38NfsJhphRBAN78YgzQAClxZrG8YqsVZw_5BMGmhyYAEAAwIAA3gAAz0E" alt="5.7" /><figcaption>5.7</figcaption></figure><p></p><p>主要是注意一下，这里的 <span><span>f(x,y)=Cf(x,y)=C</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>C</span></span></span></span>，求导对 <span><span>f1f_1</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>f2f_2</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，得出来的结果其实和 <span><span>dydx\frac{\mathrm{d}y}{\mathrm{d}x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 有差别。这道题是直接用全微分的不变性去做就很轻松能做出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCK1q1iGSKSFHKQEONbMbLhSK7_zlRwACmBZrG8YqsVYgN-CU4gcpqAEAAwIAA20AAz0E" alt="5.8" /><figcaption>5.8</figcaption></figure><p></p><p>属于低级错误，此前算出来了极值点，但是在后续的时候算出来 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 相关有 <span><span>66</span><span><span><span></span><span>6</span></span></span></span>，就直接把 <span><span>66</span><span><span><span></span><span>6</span></span></span></span> 当极值点了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCK5q1iGjHfPWFgT-lGggiv2PP6ioFgACmRZrG8YqsVYQuHUmKJDe7wEAAwIAA3gAAz0E" alt="5.9" /><figcaption>5.9</figcaption></figure><p></p><p>利用特殊的圆法做的时候，忽略了 <span><span>z−2z-2</span><span><span><span></span><span>z</span><span></span><span>−</span><span></span></span><span><span></span><span>2</span></span></span></span>，只算了后半部分。</p></section><section><h3>武忠祥高数强化 2 刷第 6 章<a href="#武忠祥高数强化-2-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCK9q1iHsVeN4Jms9Qu-RwHuK55XWwgACmxZrG8YqsVZC9CB1zTcT7gEAAwIAA3gAAz0E" alt="6.1" /><figcaption>6.1</figcaption></figure><p></p><p>奇偶性利用错误，对于 <span><span>x∣y∣x|y|</span><span><span><span></span><span>x</span><span>∣</span><span>y</span><span>∣</span></span></span></span> 的区间判断错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLBq1iH830fLj9jdm9iG3z6KfJ1-SQACnBZrG8YqsVYC5rPML245hwEAAwIAA3gAAz0E" alt="6.2" /><figcaption>6.2</figcaption></figure><p></p><p>方法复杂。本题利用 <span><span>y=1y=1</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 对称解会非常快，对于这题，直接生搬硬套参数方程反而会更慢，不如直接硬算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLFq1iO8QGl7WUzwuKvYiO6KII0rOwACoBZrG8YqsVbg4tVuAAF_XRkBAAMCAAN4AAM9BA" alt="6.3" /><figcaption>6.3</figcaption></figure><p></p><p>这道题错在一个地方，那就是把后者当 <span><span>r=1r=1</span><span><span><span></span><span>r</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 的圆去想了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLJq1iSNVpCp6jsqVMQP-rJn_RIX9gACoxZrG8YqsVbs-njNrR9AxwEAAwIAA3gAAz0E" alt="6.4" /><figcaption>6.4</figcaption></figure><p></p><p>分开分析。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLNq1iUjDdsouve9QpUYIsC32EF17gACpRZrG8YqsVaw-ZIxyIGSvwEAAwIAA3gAAz0E" alt="6.5" /><figcaption>6.5</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLRq1iUxP-JkfMfUuUi2u1k3-9Ff4gACpxZrG8YqsVYnh-gZVu5i2AEAAwIAA3gAAz0E" alt="6.6" /><figcaption>6.6</figcaption></figure><p></p><p>犯了一个经典的错误，标准的零分，牛莱公式误以为 <span><span>1−p1-p</span><span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>p</span></span></span></span>，<span><span>00</span><span><span><span></span><span>0</span></span></span></span> 代入后为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，事实上应该为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLVq1iVU4G2oTusCCNa8J2ks4-04WwACqBZrG8YqsVbVZNDQMMWuagEAAwIAA3gAAz0E" alt="6.7" /><figcaption>6.7</figcaption></figure><p></p><p>注意第 2 种解法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLZq1iVmhvU32qw-xl6Dab7cJTRnQgACqRZrG8YqsVZpYW87A7tXQAEAAwIAA3gAAz0E" alt="6.8" /><figcaption>6.8</figcaption></figure><p></p><p>柯西积分不等式没招，回头再来看。</p></section></section>
<section><h2>杨威线性代数强化 2 刷<a href="#杨威线性代数强化-2-刷"><span>#</span></a></h2><p>辨析一下最几把抽象的秩概念</p><p>行等价可以推导出等价，列等价可以推导出等价，只有等价推导不出来任何东西，只能说明秩相等。</p><p>假设 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 列等价，那么 <span><span>AQ=BAQ=B</span><span><span><span></span><span>A</span><span>Q</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span></span></span></span>，<span><span>CC</span><span><span><span></span><span>C</span></span></span></span> 和 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 行等价，那么 <span><span>PC=DPC=D</span><span><span><span></span><span>P</span><span>C</span><span></span><span>=</span><span></span></span><span><span></span><span>D</span></span></span></span>。</p><p>对于矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>，假设 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 行等价，那么 <span><span>AX=0AX=0</span><span><span><span></span><span>A</span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 和 <span><span>BX=0BX=0</span><span><span><span></span><span>B</span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 同解。</p><p>判断向量组 <span><span>α1\alpha_1</span><span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>α2\alpha_2</span><span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>αn\alpha_n</span><span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是否线性相关，本质上是看等式 <span><span>x1α1+x2α2+⋯=0x_1\alpha_1+x_2\alpha_2+\cdots=0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 时候有零解，所以拼成矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，本质就是齐次线性方程 <span><span>Ax=0Ax=0</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。如果只有零解，那么线性无关，有非零解，所以线性相关。而 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 做行变换的时候，可以保证解不变。</p><p>对矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 做初等列变换，那么矩阵列的秩保持不变（也就是说列等价），变了的东西是列向量的线性系数表达。</p><p>对矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 做初等行变换，那么矩阵行的秩保持不变（也就是行等价），系数关系是保留的，但是里面的东西变了。</p><p>总共就是这些重要概念比较重要的抽象概念。</p><section><h3>杨威线性代数强化 2 刷第 1 章<a href="#杨威线性代数强化-2-刷第-1-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLdq1iZcPTMWfP8exSN6VzlT6XkpcQACrBZrG8YqsVb-PplNhHmMYQEAAwIAA3gAAz0E" alt="1.3" /><figcaption>1.3</figcaption></figure><p></p><p>算错了 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 次。先化简到 <span><span>33</span><span><span><span></span><span>3</span></span></span></span> 维的形式，然后利用对角线法去做，做的时候尤其要注意两点，一个是最后那一项最高是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的四次方，第二是在利用副对角线的时候，一开始就有个负号。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLhq1iZzsEeLFTMMCLuLcjgeBWXPbwACrRZrG8YqsVZI1MBoXuqH8wEAAwIAA3gAAz0E" alt="1.4" /><figcaption>1.4</figcaption></figure><p></p><p>这道题没有很好的思路。利用范德蒙行列式构造一个四维行列式，然后进行系数对照。</p><p>此外，范德蒙行列式的值算出来是是什么，这个也忘记了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLlq1iaDCbomQcDCvFU_jqaG1kue-AACrhZrG8YqsVafLlc-OVt_OwEAAwIAA20AAz0E" alt="1.4 解" /><figcaption>1.4 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLpq1iaOhhF0jq5bfvgMS0pyaGa-GQACrxZrG8YqsVaVnLGDwONUqgEAAwIAA3gAAz0E" alt="1.11" /><figcaption>1.11</figcaption></figure><p></p><p>算成 <span><span>−12-\frac{1}{2}</span><span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 了。其实答案应该是 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>。</p><p>取绝对值得时候，里面的 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 要提出去变成 <span><span>232^3</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span>，这个错了无数次了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLtq1iasMLCLGXcErUDGs69nGjrgXQACsBZrG8YqsVYWNVYXeUKIeAEAAwIAA3gAAz0E" alt="1.12" /><figcaption>1.12</figcaption></figure><p></p><p>混淆 <span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的行列式和数字提取出去的次数了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCLxq1ia82_Vx526qsoEJuePMfFF1WwACsRZrG8YqsVbqBqH8FR_fVQEAAwIAA3gAAz0E" alt="1.14" /><figcaption>1.14</figcaption></figure><p></p><p>从直接的性质去考虑，<span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>ATA^{\mathrm{T}}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span></span></span></span> 的行列式为 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span>，同时取行列式，也就是 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 行列式必然为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 或者 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>。对于这道题，我仅仅只在想 <span><span>ATA^{\mathrm{T}}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span></span></span></span> 和 <span><span>A−1A^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 之间的关系，而没有去想基于行列式出发的角度去考虑。</p><p>还有一点，<span><span>AT+BT=(A+B)TA^{\mathrm{T}}+B^{\mathrm{T}}=(A+B)^{\mathrm{T}}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span></span></span></span>，这个是很多其他东西无法给予的性质，也属于较为冷门的考点。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCL1q1ibRHbqMusr9Wam8yMD1a2VoggACshZrG8YqsVb26teYFRG-VwEAAwIAA3gAAz0E" alt="1.15" /><figcaption>1.15</figcaption></figure><p></p><p><span><span>333^3</span><span><span><span></span><span><span>3</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span> 是 <span><span>2727</span><span><span><span></span><span>27</span></span></span></span>，不是 <span><span>99</span><span><span><span></span><span>9</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCL5q1ibi2cwGV5QJZKp9hFyD_9vNngACsxZrG8YqsVa_kvfVHmK7WAEAAwIAA3gAAz0E" alt="1.16" /><figcaption>1.16</figcaption></figure><p></p><p>分块矩阵，注意是 <span><span>(−1)n×m(-1)^{n\times m}</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>n</span><span>×</span><span>m</span></span></span></span></span></span></span></span></span></span></span></span>，而不是 <span><span>n+mn+m</span><span><span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>m</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCL9q1ib4EAZKr96huz647XWzbd6IkgACtBZrG8YqsVaj7zNzGwHSGwEAAwIAA3gAAz0E" alt="1.27" /><figcaption>1.27</figcaption></figure><p></p><p>方法复杂 + 算错。<span><span>A−1A^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 的符号搞错，写成了 <span><span>a+a^{+}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>+</span></span></span></span></span></span></span></span></span></span></span></span>。此外，这道题应该利用特征值来解，首先显然特征值为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，<span><span>00</span><span><span><span></span><span>0</span></span></span></span>，<span><span>22</span><span><span><span></span><span>2</span></span></span></span>，所以用 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次方，<span><span>a−1a^{-1}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 这些，最后乘起来。</p><p>小总结一下，这些属于比较零碎但是高频的考点，需要反复练习，不然很容易遗忘。</p><p>对于小考点选填考点，切记不可轻视。</p></section><section><h3>杨威线性代数强化 2 刷第 2 章<a href="#杨威线性代数强化-2-刷第-2-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMBq1ieqMOUQM1Vm9hDXbvs99pEM3QACvxZrG8YqsVYvWIJpR1QW2wEAAwIAA20AAz0E" alt="2.2" /><figcaption>2.2</figcaption></figure><p></p><p>这道题放在这里，拆成 <span><span>E+BE+B</span><span><span><span></span><span>E</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span></span></span></span> 然后用二项式定理去做。</p><p>思考，对于这类题，我的想法依然还是一下子去算特征值，特征方程之类的，对于这届求 <span><span>A3A^3</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span>，左下角那个值没想到怎么解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMFq1igJCXYBGoaf-V09kYumzBs26gACwBZrG8YqsVZHeirwluZcCgEAAwIAA3gAAz0E" alt="2.5" /><figcaption>2.5</figcaption></figure><p></p><p>这道题感觉没招，考场上肯定一下想不出来 <span><span>AAT=aEAA^{\mathrm{T}}=aE</span><span><span><span></span><span>A</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>a</span><span>E</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMJq1igztcQsOUrPr8ai-ldtpN0zfAACwRZrG8YqsVYWm9mz-3sMSgEAAwIAA3gAAz0E" alt="2.10" /><figcaption>2.10</figcaption></figure><p></p><p>注意，<span><span>XA=⋯AXA=\cdots A</span><span><span><span></span><span>X</span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>⋯</span><span></span><span>A</span></span></span></span>，那么 <span><span>X−⋯A=0X-\cdots A=0</span><span><span><span></span><span>X</span><span></span><span>−</span><span></span></span><span><span></span><span>⋯</span><span></span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，前者不一定为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMNq1ihGz_PTMWD8tUPuQgvngAECyQACwhZrG8YqsVY8msG50imfuwEAAwIAA3gAAz0E" alt="2.12" /><figcaption>2.12</figcaption></figure><p></p><p>主要是想不到分析方法。对原式子进行变形后也继续利用原来的式子，本题和上一题我认为都可以从整个角度出发，也就是：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMRq1ihonCe7w1CXcn1qCn0LcYmUAAPHFmsbxiqxVug4bhEtglt0AQADAgADeAADPQQ" alt="2.12 解" /><figcaption>2.12 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMVq1ih2uqQQPnsmwYyVmHol-eJdTAACyBZrG8YqsVZGqYLUBe03SAEAAwIAA3gAAz0E" alt="2.13" /><figcaption>2.13</figcaption></figure><p></p><p>结果其他方法分析入脑了，特征值分析又不会了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMZq1imOymtGX_nuCiHXHMHS-uBd_gAC1RZrG8YqsVbXxRQtUB2jLwEAAwIAA3gAAz0E" alt="2.19" /><figcaption>2.19</figcaption></figure><p></p><p>对于这类题进行变换的时候，需要利用乘上某个矩阵进行变换，而不可以是某一行乘上什么加到哪里去，因为这个变化可能是不可逆的。</p><p>例如这道题，B 和 D，对于 B 是右乘列变换，对于 D 是左乘行变换，而对于 C 则是不伦不类！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMdq1imh0TB6d5imEV9wShBXB5F2xAAC1hZrG8YqsVYCHUUsGLWDeQEAAwIAA3gAAz0E" alt="2.24" /><figcaption>2.24</figcaption></figure><p></p><p>没上手做，想当然。</p></section><section><h3>杨威线性代数强化 2 刷第 3 章<a href="#杨威线性代数强化-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMhq1ipb_g33Aef9VWvGU8VvycL5QgAC2BZrG8YqsVbh7cwcEDVB0AEAAwIAA3gAAz0E" alt="3.6" /><figcaption>3.6</figcaption></figure><p></p><p>我的想法是说构造一个 <span><span>γ=k1α1+k2α2=l1β1+l2β2\gamma=k_1\alpha_1+k_2\alpha_2=l_1\beta_1+l_2\beta_2</span><span><span><span></span><span>γ</span><span></span><span>=</span><span></span></span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>l</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>l</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，然后变形。最后分类讨论一下，说明必然存在。</p><p>答案这里用了一个更高级的结论，<span><span>44</span><span><span><span></span><span>4</span></span></span></span> 个 <span><span>33</span><span><span><span></span><span>3</span></span></span></span> 维向量一定是线性相关的，所以必然存在一个 <span><span>x1α1+x2α2+x3β1+x4β2=0x_1\alpha_1+x_2\alpha_2+x_3\beta_1+x_4\beta_2=0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，其中 <span><span>x1x_1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x2x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x3x_3</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x4x_4</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 不全为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，然后利用上面的结论，使用反证法证明即可。</p><p>一定要记住一个结论，<span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 个 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 维向量一定是线性相关向量组（<span><span>m&gt;nm&gt;n</span><span><span><span></span><span>m</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>n</span></span></span></span>）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMlq1ip1pVXY1QAB_YnUpDkfvlfolxoAAtkWaxvGKrFWxTuFa-qcVnQBAAMCAAN4AAM9BA" alt="3.10" /><figcaption>3.10</figcaption></figure><p></p><p>本题错选为 C。对于我自己的推导法而言，第 3 个系数被焊死了在（<span><span>km+ln=0km+ln=0</span><span><span><span></span><span>k</span><span>m</span><span></span><span>+</span><span></span></span><span><span></span><span>l</span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>）上，而对于线性无关而言，<span><span>x1x_1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x2x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x3x_3</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 必须是三个独立的数。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMpq1iqKtpOF8mBCdatRcIrjopk_LwAC2hZrG8YqsVbXyFJ5OuNzPgEAAwIAA3gAAz0E" alt="3.18" /><figcaption>3.18</figcaption></figure><p></p><p>本题选出来 <span><span>44</span><span><span><span></span><span>4</span></span></span></span> 个选项都是对的。尤其是对于 A，对于 A 想当然认为这是正确了，尤其要注意不可以说明。</p><p>这里再次辨析一下等价的概念。行等价可以推导出矩阵等价，列等价可以推导出矩阵等价。这道题向量组等价的意思是说列等价，而这道题的初等变换是行等价。</p></section><section><h3>杨威线性代数强化 2 刷第 4 章<a href="#杨威线性代数强化-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMtq1iqsf4zejmxPZaann943Eq0uyAAC2xZrG8YqsVZBuqo4k8xP-gEAAwIAA3gAAz0E" alt="4.1" /><figcaption>4.1</figcaption></figure><p></p><p>非常低级的错误，逐步分析，不要因为题简单而轻视。狮子搏兔，亦用全力。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCMxq1irCj6hGVfqo6LHSq91KLDfHOwAC3BZrG8YqsVbLd7334a5d0gEAAwIAA3gAAz0E" alt="4.5" /><figcaption>4.5</figcaption></figure><p></p><p>注意一下 <span><span>r(A)=1r(A)=1</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 时的分析流程，不要被 B 误导了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCM1q1irVGbvFh3ubGXCwM4mi2T1DTgAC3RZrG8YqsVYDcpNUpLkWiQEAAwIAA3gAAz0E" alt="4.6" /><figcaption>4.6</figcaption></figure><p></p><p>我觉得我还是不要跳步了，在计算解的时候，实实在在地把 <span><span>x1x_1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x2x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x3x_3</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的关系全列出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCM5q1irtoCiQE_BF4PouTMU8Qmd9rQAC4hZrG8YqsVbjePsmExElKQEAAwIAA3gAAz0E" alt="4.10" /><figcaption>4.10</figcaption></figure><p></p><p>不要忘记初等方法，对于这道题，是代入分析，也就是展开为 <span><span>α1+α2+α3=⋯\alpha_1+\alpha_2+\alpha_3=\cdots</span><span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>⋯</span></span></span></span> 的形式。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCM9q1isG6TWjIdHZKbgOIfV3I_HNJwAC6xZrG8YqsVZ17x3EEAmk-AEAAwIAA3gAAz0E" alt="4.15" /><figcaption>4.15</figcaption></figure><p></p><p>对于这道题的 5 分析错误，对于 4，可以利用单位向量去证明。对于 5，需要注意是任意，而不是存在。我构造出来的那个是存在。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNBq1iseqF7wczuE2yX-rrcIy-EjuQAC7BZrG8YqsVagToxdI3iVfgEAAwIAA3gAAz0E" alt="4.19" /><figcaption>4.19</figcaption></figure><p></p><p>对于 2，为什么是分别的 <span><span>k1k_1</span><span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>k2k_2</span><span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>k3k_3</span><span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>？</p><p>本质上是没有理解 <span><span>AB=EAB=E</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>E</span></span></span></span> 进行变换，为什么可以直接写成 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，<span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 矩阵然后进行变化。</p><p>本质这个操作是在解并联方程组，对于 <span><span>AB=EAB=E</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>E</span></span></span></span> 假设 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 是方阵，<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 也是方阵，所以 <span><span>[A,E][A,E]</span><span><span><span></span><span>[</span><span>A</span><span>,</span><span></span><span>E</span><span>]</span></span></span></span> 进行初等变换把左侧变为 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 后，对于右侧，则是 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>，为什么是 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>，是因为对 <span><span>AX=0AX=0</span><span><span><span></span><span>A</span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 的解只有 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 解。所以直接就是 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>。</p><p>那么对于 <span><span>AB=CAB=C</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>C</span></span></span></span>，<span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 为 <span><span>3×43\times4</span><span><span><span></span><span>3</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span></span></span></span> 的情况（也就是 <span><span>m≤nm\le n</span><span><span><span></span><span>m</span><span></span><span>≤</span><span></span></span><span><span></span><span>n</span></span></span></span> 的情况），此时对并联方程组 <span><span>(A,C)(A,C)</span><span><span><span></span><span>(</span><span>A</span><span>,</span><span></span><span>C</span><span>)</span></span></span></span> 求解，变化为 <span><span>(E,x,M)(E,x,M)</span><span><span><span></span><span>(</span><span>E</span><span>,</span><span></span><span>x</span><span>,</span><span></span><span>M</span><span>)</span></span></span></span>，此时对于 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 而言，它是方程额外的根，例如假设有 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 有两列，那么就有 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 个自由变量。所以最后就是 <span><span>Ax=0Ax=0</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 有 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的列数的通解，最终需要为每个变量单独 <span><span>+k+k</span><span><span><span></span><span>+</span><span>k</span></span></span></span> 个这个自由变量，因为每列是相互独立的！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNFq1is30Hp49iF63Z4pByjTDIHAoAAC7RZrG8YqsVba4VhXH9Ga0AEAAwIAA3gAAz0E" alt="4.23" /><figcaption>4.23</figcaption></figure><p></p><p>这道题没去做，但是值得分析一下思路。首先是判断 1 必不可能是满秩，从而推导出 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 的值，然后将 1 的基础解系直接代入 2，从而得到 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 和 <span><span>cc</span><span><span><span></span><span>c</span></span></span></span> 的关系方程组。</p></section><section><h3>杨威线性代数强化 2 刷第 5 章<a href="#杨威线性代数强化-2-刷第-5-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNJq1itLpepOkGXcATRxTQJgnqNQcgAC7hZrG8YqsVbOcuIUs6540AEAAwIAA3gAAz0E" alt="5.2" /><figcaption>5.2</figcaption></figure><p></p><p>需要注意的是，对于这类题还是要实打实的代入进去算，例如 <span><span>A(2b)=bA(2b)=b</span><span><span><span></span><span>A</span><span>(</span><span>2</span><span>b</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>b</span></span></span></span>，那么可以知道 <span><span>Ab=0.5bAb=0.5b</span><span><span><span></span><span>A</span><span>b</span><span></span><span>=</span><span></span></span><span><span></span><span>0.5</span><span>b</span></span></span></span>，所以特征值应该是 <span><span>0.50.5</span><span><span><span></span><span>0.5</span></span></span></span> 才对。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNNq1itbO3wivMiRn47pEQ_P4KwRDAAC7xZrG8YqsVYsN_4k4gABsicBAAMCAAN4AAM9BA" alt="5.5" /><figcaption>5.5</figcaption></figure><p></p><p>对于第 1 问，感觉还是得灵活应用知识点，对于这道题就没想到 <span><span>A−2EA-2E</span><span><span><span></span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>2</span><span>E</span></span></span></span> 和 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，用秩不等式去讨论。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNRq1iwFZ_TC4PCsGTPziim2x9fUKAAC8BZrG8YqsVZujhn5xvhBEwEAAwIAA3gAAz0E" alt="5.7" /><figcaption>5.7</figcaption></figure><p></p><p>对于这道题没啥大问题，但是需要注意一下分析形式，也就是对于这类矩阵应该如何处理。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNVq1iwfdKdtSvPqy5ZHBaAlOTFXKQAC8hZrG8YqsVaNL1_oLyOA8QEAAwIAA3gAAz0E" alt="5.8" /><figcaption>5.8</figcaption></figure><p></p><p>有点属于低级错误了，证明相似对角化一般有两种方式，第一种是直接找出特征值进行讨论，第二种是找出这个矩阵的相似矩阵进行讨论。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNZq1iwwUIT1yy52dZ5_2I3_VfConQAC8xZrG8YqsVYepmfabldmbgEAAwIAA3gAAz0E" alt="5.9" /><figcaption>5.9</figcaption></figure><p></p><p>感觉属于分析范式问题，不知道如何下手，特值法也用的很奇怪。对于这种题我一直想着在 <span><span>AB=BAAB=BA</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span><span>A</span></span></span></span> 上面利用相似去变形，但是没走出来。事实上应该分开讨论，假设特征向量进行讨论。</p><p>这件事提醒了我，所有东西并不一定是都是对原本的方程进行变形，还应该想到如何利用本身的含义。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNdq1ixIP0WL042zamXsdlse0ZXFpAAC9BZrG8YqsVZjn3GnSowWHQEAAwIAA3gAAz0E" alt="5.22" /><figcaption>5.22</figcaption></figure><p></p><p>对于这道题，虽然说问题不大，但是感觉还是得注意一下思路。求出特征值和特征向量之后然后求矩阵 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>，这里的思路需要行云流水。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNhq1ixwLLbpZGseqdSLdg2-fAEQXwAC9RZrG8YqsVbbrSJHPZdJggEAAwIAA3gAAz0E" alt="5.23" /><figcaption>5.23</figcaption></figure><p></p><p>这道题其实也是问题不大，但是还是需要注意一下，对于实对称矩阵而言，非同一个特征值的向量才必然正交，如果非实对称矩阵，只能推导出来线性无关。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNlq1iyA8IeGRxExZYKN3W-TsKIVpwAC9hZrG8YqsVbc8EVHnukcGQEAAwIAA3gAAz0E" alt="5.25" /><figcaption>5.25</figcaption></figure><p></p><p>这道题也是对的，但是也有一件事值得注意。如果只有一个式子，那么不能确定两个不同特征值的特征向量。</p><p>另外对于这道题也可以注意一下已知向量的时候的处理方式，可以直接相乘，也可以按照上面说的方式去确认。</p></section><section><h3>杨威线性代数强化 2 刷第 6 章<a href="#杨威线性代数强化-2-刷第-6-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNpq1iy1wKOtdKMupY51yi2m0aiOnQAC-BZrG8YqsVY74vgYSVO5YQEAAwIAA3gAAz0E" alt="6.4" /><figcaption>6.4</figcaption></figure><p></p><p>对于这道题的第 2 问，完全没想到什么很好的处理方式。如何证明？其实回归本初，这道题本质上是计算特征值。那么特征值有哪些，所以就可以凑。</p><p>记当前矩阵为 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，所以试着 <span><span>AαA\alpha</span><span><span><span></span><span>A</span><span>α</span></span></span></span>，<span><span>AβA\beta</span><span><span><span></span><span>A</span><span>β</span></span></span></span>，结果就可以得出来 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 和 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 是特征值，然后再利用秩不等式判断出第三个特征值为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。
如果是我去做的话我肯定是不妨设 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 是一个单位向量，<span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 是另一个。</p><p>感觉还是思路问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNtq1izRO3u8Tf6fJdZUHP4VbZRwLQAC-RZrG8YqsVbXbOULXat0fAEAAwIAA3gAAz0E" alt="6.5" /><figcaption>6.5</figcaption></figure><p></p><p>对于这道题，要注意正交这两个字。正交变换，必须得通过矩阵的特征值去走。所以这道题就变成求矩阵的特征值，分别为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，<span><span>11</span><span><span><span></span><span>1</span></span></span></span>，<span><span>44</span><span><span><span></span><span>4</span></span></span></span> 的情况下，<span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 是多少。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCNxq1izqmSeOhS4b81i-lbxiFjaYZAAC-xZrG8YqsVaeVBwzvxAipgEAAwIAA3gAAz0E" alt="6.7" /><figcaption>6.7</figcaption></figure><p></p><p>这道题没去做，问题不大，但是需要注意一下更简单的思路，对于这类题，<span><span>aE+BaE+B</span><span><span><span></span><span>a</span><span>E</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span></span></span></span> 是更好的路线。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCN1q1iz__9Z9eh4OYTMJvR_XR7D2rAAC_BZrG8YqsVb9FIVpPKH2aQEAAwIAA3gAAz0E" alt="6.11" /><figcaption>6.11</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCN5q1i0LEFkHW_x2c0R31UuUQCWo5AAC_RZrG8YqsVZyTF_ofsjt8gEAAwIAA3gAAz0E" alt="6.11 解" /><figcaption>6.11 解</figcaption></figure><p></p><p>感觉对于这道题的第 3 问应该再加深一下理解。</p><p>原方程的意思是说，<span><span>x1+2x2+3x3=0x_1+2x_2+3x_3=0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>3</span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，本质上是求在这个东西的条件下，<span><span>x1x_1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x2x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>x3x_3</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的解是什么。那我随便分别取 <span><span>x2x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>x3x_3</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的值，算出来也是对的。只是说利用正交变换也可以的出来解。</p></section></section>
<section><h2>数学早年真题（09-20）1 刷<a href="#数学早年真题09-201-刷"><span>#</span></a></h2><ul>
<li>完成时间：20260824-20260915</li>
<li>平均分：</li>
<li>平均作答时间：</li>
</ul><section><h3>2009 真题<a href="#2009-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260824</li>
<li>分数：135
<ul>
<li>选择题：-4</li>
<li>填空题：-4</li>
<li>大题：-7</li>
</ul>
</li>
<li>作答时间：180</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCN9q1i40o9Ab9pG6Ghlnk2HWRwqb4AAC_xZrG8YqsVbHLdOC7WPwagEAAwIAA3gAAz0E" alt="5" /><figcaption>5</figcaption></figure><p></p><p>错选为 D。</p><p>关于曲率的相关问题，以及分析范式不够严谨</p><p>确实这部分没准备到位。关于证明不存在极值点，这个一开始不知道怎么证明，但是后来想出来了，也就是回忆起了曲率相关的东西。同时求导 2 次即可，然后可以得到 y”小于 0，从而 y’恒小于 0。关于零点，我认为其实没有想到分析范式，事实上应该考虑这个区间，区间所以想到拉格朗日中值定理去凑零点，然后用零点定理，而不是仅考虑所谓意义上的“1 附近”，1 附近只是一个非常小的范围，可能不包括 2。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOJq1jDz2WmVi7qzst1K5_mKS471MQACCBdrG8YqsVaaTEz20lVrnQEAAwIAA3kAAz0E" alt="5 订" /><figcaption>5 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOBq1i5KYrdThRDeUgR0HRenkWWi9wADF2sbxiqxVg7u1Aj75XwMAQADAgADeAADPQQ" alt="14" /><figcaption>14</figcaption></figure><p></p><p>低级错误，答案填成了一个矩阵。</p><p>对于单位向量的相乘相关问题，这道题暴露了我在单位向量相乘的薄弱之处，以及想当然认为这是一个矩阵。事实上简单想想就知道了，这类矩阵有多种。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOFq1i5m-UNGriHwf5JKgcylAjU1zAACARdrG8YqsVZ1kM-Sa-RVTgEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>低级错误。</p><p>想当然认为第二象限圆的方程为 <span><span>−y=⋯-y=\sqrt{\cdots}</span><span><span><span></span><span>−</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span>⋯</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span>，导致整道题做错。这道题暴露了要检查，其实大题就这道题没验算过（没时间验算了算是，而且认为这道题低风险错误）在考场上不要轻视任何一道题目。（-7）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCONq1jGJfaKrfWasVS3XhFNxB-hyNAACDBdrG8YqsVZPzH7c6CD9_AEAAwIAA3kAAz0E" alt="20 解" /><figcaption>20 解</figcaption></figure><p></p></section><section><h3>2010 真题<a href="#2010-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260825</li>
<li>分数：146
<ul>
<li>填空题：-4</li>
</ul>
</li>
<li>作答时间：165</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCORq1jHJAscwrfdNCcDQhIUBo9pq9gACDhdrG8YqsVZuZOOkkfKphAEAAwIAA3gAAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>低级错误</p><p>弧长公式记错了。弧长公式是根号下的平方 + 平方，我把这个平方漏掉了</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOVq1jJiqTiEd_siMJNSAfAn2n_QLAACDxdrG8YqsVYvNmnQgO7MlQEAAwIAA3kAAz0E" alt="12 订" /><figcaption>12 订</figcaption></figure><p></p></section><section><h3>2011 真题<a href="#2011-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260826</li>
<li>分数：140
<ul>
<li>选择题：-4</li>
<li>填空题：-4</li>
<li>大题：-2</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOZq1jLYvxDhDlXQQzjiU0W2TGjAngACERdrG8YqsVa4asMDDHNl3AEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>二阶线性常系数非齐次微分方程。</p><p>这个以前错过，辨析清楚什么是重根。例如这道题，并不是重根。这道题甚至我还想了一下（回过头来也想了），然后错了。本质是想举例子结果最后还是懒了，没去举例子</p><p>结果在写 2021 年真题以及后续的题目的时候频繁又错了这相关的东西，微分方程虽然考的比较死，但是一定要深刻注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOdq1jNFWz1pr4jgW1B8yQEmZyAPDwACEhdrG8YqsVbEVm-98BXBhAEAAwIAA20AAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>低级错误</p><p><span><span>exye^{xy}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>x</span><span>y</span></span></span></span></span></span></span></span></span></span></span></span>，和 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 乘上 <span><span>eye^y</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>y</span></span></span></span></span></span></span></span></span></span></span> 是两码事，这类错误以前也错过</p><p>这个在后续某一年的真题又错了，在模拟卷忘记错没错，总之是一个很神秘的低级错误，需要深刻注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOhq1jPijku0ICf31tnAMhs1MzsFsAACFBdrG8YqsVYQw4PoclOk-QEAAwIAA3kAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>低级错误</p><p>题目没写完，拐点没求，只求了前两问。（-2）</p><p>这道题也印象深刻，后续在写某份真题以及模拟卷的时候也是犯了一模一样的错误，题没算完就走了。</p></section><section><h3>2012 真题<a href="#2012-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260828</li>
<li>分数：140
<ul>
<li>大题：-10</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOlq1jRYxW6OVHq-DhLOYV0Iu30wlgACFRdrG8YqsVbVvc4UxiC1KwEAAwIAA3gAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>低级错误</p><p><span><span>LL</span><span><span><span></span><span>L</span></span></span></span> 是什么，切线是什么，而且这道题题设按照我想的做法，没办法变成一个封闭区间，所以显然是错误的。（-10，只求对那个点）本质是积分区域讨论错误</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOpq1jbw9hIhO_E7Y5cpShdoZC-_-gACGRdrG8YqsVZ8n80Em0mQtwEAAwIAA3cAAz0E" alt="17 订" /><figcaption>17 订</figcaption></figure><p></p><p>我当时是想当然 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 点是切线与 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 轴的交点，导致整道题错误。这道题只算出来了求 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和求切线的分数属于是。</p><p>这道题给我的警示是：如果觉得积分区间很怪，那么一定是我想错了。</p><p>这也是我的几大错误点之一，积分区域！</p></section><section><h3>2013 真题<a href="#2013-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260830</li>
<li>分数：142
<ul>
<li>大题：-8</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOtq1jdx3bhqYGFKgQ1jhkrc27kc8wACGhdrG8YqsVauUctv7oSoMAEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>低级错误</p><p><span><span>ln⁡x\ln x</span><span><span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 抄成 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 了（-2）</p><p>这道题证明过程是没问题的，但是把 <span><span>ln⁡x\ln x</span><span><span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 抄成 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 了，导致整道题错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCOxq1jfUuIyXN1R9KeURdEv8VCaNrAACHBdrG8YqsVYcNoKjkaDTaQEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>低级错误</p><p><span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的积分前面没有 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>（-2）</p><p>意思是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 积分成 <span><span>12x2\frac{1}{2}x^2</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，这个 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 一定不可以漏。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCO1q1jfnLqmsSwtaJAkTRYtod_glRAACHRdrG8YqsVaoSZorsue21AEAAwIAA3kAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>低级错误。</p><p>线代矩阵某一行往上加，没有所有元素都往上加（-4）,一定不要跳步</p><p>总结一下，本质上是没检查后面的题，前面的题全部检查了。而且确实这两天态度有点摆，没有非常认真的去做</p></section><section><h3>2014 真题<a href="#2014-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260903</li>
<li>分数：143
<ul>
<li>大题：-7</li>
</ul>
</li>
<li>作答时间：125</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCO5q1jieBnYydVwGMcKqRGV7ERjGxwACHhdrG8YqsVY5QGshTUZSFwEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>低级错误</p><p>化简化简对了，但是在代入的时候，忘记把 <span><span>zz</span><span><span><span></span><span>z</span></span></span></span> 代入化简，从而全部错误（-7）这道题没检查。</p><p>其实化简出来是对的，然后 <span><span>f′′=4z+excos⁡yf''=4z+e^x\cos y</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span>z</span><span></span><span>+</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span></span><span>cos</span><span></span><span>y</span></span></span></span>。<span><span>u=excos⁡yu=e^x\cos y</span><span><span><span></span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span></span><span>cos</span><span></span><span>y</span></span></span></span>，<span><span>z=f(u)z=f(u)</span><span><span><span></span><span>z</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>u</span><span>)</span></span></span></span></p><p>然后在带入的时候，直接把 <span><span>4z4z</span><span><span><span></span><span>4</span><span>z</span></span></span></span> 给代入没了，变成了 <span><span>f′′=uf''=u</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>u</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCO9q1jnLKHsVjEp78I-AroTITjwqxwACHxdrG8YqsVZ9-xEcJ9Lt4AEAAwIAA3cAAz0E" alt="18 解" /><figcaption>18 解</figcaption></figure><p></p></section><section><h3>2015 真题<a href="#2015-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260904</li>
<li>分数：145
<ul>
<li>大题：-6</li>
</ul>
</li>
<li>作答时间：120</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPFq1jsBBZmWaWvzLU95dicyPhBQPgACIRdrG8YqsVZKrYgKsfnA-QEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>积分的上下限与常规时不一致，想当然导致的错误</p><p>一般做题的时候，积分上下限都是 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，但是这道题是 <span><span>π4\frac{\pi}{4}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，导致有一半的积分算错（-5）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPJq1j2LIRNFNeb5rg-FZdXX-BYcYwACJxdrG8YqsVawVylt_linJwEAAwIAA3cAAz0E" alt="18 解" /><figcaption>18 解</figcaption></figure><p></p></section><section><h3>2016 真题<a href="#2016-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260905</li>
<li>分数：133
<ul>
<li>大题：-17</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p>总结一下，这张卷子主要是计算问题比较大，以及数学不能停，停下来手感就没了（其实检查检查了 2 个选填出来）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPNq1j3Vw-xnVPTBg5NgRIG1qBXi_wACKxdrG8YqsVbGUJJEzVw6wgEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>低级错误</p><p>时间不够了，没检查。这道题错在把 <span><span>x=ρcos⁡θx=\rho\cos\theta</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>ρ</span><span></span><span>cos</span><span></span><span>θ</span></span></span></span> 代入的时候，忘记把 <span><span>cos⁡θ\cos\theta</span><span><span><span></span><span>cos</span><span></span><span>θ</span></span></span></span> 平方，从而整体错误（-8）</p><p>低级错误</p><p><span><span>cos⁡θ\cos\theta</span><span><span><span></span><span>cos</span><span></span><span>θ</span></span></span></span> 积分出来，然后忘了乘上原本在这之前的系数了。（-3）</p><p>求 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 的逆错误</p><p>错误原因是草稿纸上的 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 和答题卡上的 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 不一致（草稿纸上的 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 抄错了，这进一步说明了要做一步检查一步！（-6）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCX5q2LPOXirDHko6HnYdu1xjPnOtawACHhVrG89ByVZjb1Hs1u7WewEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>低级错误</p><p><span><span>cos⁡θ\cos\theta</span><span><span><span></span><span>cos</span><span></span><span>θ</span></span></span></span> 积分出来，然后忘了乘上原本在这之前的系数了。（-3）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCX9q2LQcwPTM-EqbsNqzoEKGhhFxXAACHxVrG89ByVaopf3s0Whw5AEAAwIAA3kAAz0E" alt="23" /><figcaption>23</figcaption></figure><p></p><p>求 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 的逆错误</p><p>错误原因是草稿纸上的 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 和答题卡上的 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 不一致（草稿纸上的 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 抄错了，这进一步说明了要做一步检查一步！（-6）</p><p>总而言之，给我的警示就是做一步算一步。</p></section><section><h3>2017 真题<a href="#2017-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260906</li>
<li>分数：146
<ul>
<li>选择题：-4</li>
</ul>
</li>
<li>作答时间：105</li>
</ul><p>检查出来大题线代抄错（两道题都有），检查花了 30min</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPRq1kYLpl7xTwlGKSX1Mj7ciKHZ9wACNRdrG8YqsVZRNYdnvDWJ7gEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>低级错误。</p><p>求写渐近线的时候，想当然直接脑算 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span>，并且检查的时候也认为没必要算。</p><p>也就是想当然认为 <span><span>xarcsin⁡(2x)x\arcsin\left(\frac{2}{x}\right)</span><span><span><span></span><span>x</span><span></span><span>arcsin</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span>，当 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 趋于无穷的时候，这个应该是 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，而不是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPVq1kcswv9Rgw7WfZ4OPDCLXXlNLgACNhdrG8YqsVbHyhbQkuf-UQEAAwIAA3kAAz0E" alt="9 订" /><figcaption>9 订</figcaption></figure><p></p></section><section><h3>2018 真题<a href="#2018-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260913</li>
<li>分数：136
<ul>
<li>填空题：-4</li>
<li>大题：-10</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p>本张卷子处于恢复期，150min 耗时结束几乎没检查时间就结束了。检查了前 5 题检查出来了一个错的，然后就没检查了。最后填空题第一题错了。所以这样，即使再没时间检查，选择题前 5 题，填空题前几题以及大题前几题也一定要检查。并且这给了我一个警示，一定要连续的做卷子。虽然是被这个课影响了就是了，但是要赶紧恢复状态！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPZq1kdlkXKk8bv_xU-3hm9viyER6QACNxdrG8YqsVY_U22v6t_SpAEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>低级错误。</p><p>没检查，并且分母的系数提取出去的时候，结果变成了分子系数（也就是应该是 <span><span>−2/−2-2/-2</span><span><span><span></span><span>−</span><span>2/</span><span></span><span>−</span><span></span></span><span><span></span><span>2</span></span></span></span>，结果算成 <span><span>−2×(−2)-2\times(-2)</span><span><span><span></span><span>−</span><span>2</span><span></span><span>×</span><span></span></span><span><span></span><span>(</span><span>−</span><span>2</span><span>)</span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPhq1kmTmYs7dR42KO0vMJJSL2H_bwACORdrG8YqsVbEwy2gugPU0QEAAwIAA3cAAz0E" alt="9 订" /><figcaption>9 订</figcaption></figure><p></p><p>然后我在订正完之后，突然发现可以用拉格朗日中值定理做。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPdq1kfWQmS_lBlMh0ff_6cFhs6FVwACOBdrG8YqsVYG414FQ05laAEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>低级错误。</p><p>没检查，这道题是为了凑 140 给的 -6，实际上看的话肯定会错的更多…然后我突然发现，这道题积分区域确定错了，直接 -10。把 <span><span>A(0,1)A(0,1)</span><span><span><span></span><span>A</span><span>(</span><span>0</span><span>,</span><span></span><span>1</span><span>)</span></span></span></span> 看成了 <span><span>A(1,1)A(1,1)</span><span><span><span></span><span>A</span><span>(</span><span>1</span><span>,</span><span></span><span>1</span><span>)</span></span></span></span></p></section><section><h3>2019 真题<a href="#2019-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260914</li>
<li>分数：142
<ul>
<li>大题：-8</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPlq1kpvK1oNJ5Qmubrqp4_a6MCWyQACOhdrG8YqsVafqZDwX-gVLgEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>导数不存在的点也可能是极值点，<span><span>−2-2</span><span><span><span></span><span>−</span><span>2</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPpq1kqGKJeZyQ2PFYSWFMQa3WjTXwACOxdrG8YqsVZj2HY7UIA6QwEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>证明题第 2 问不会做，-6</p><p>自己的证明方法是错的（没搞清楚多个 <span><span>ε\varepsilon</span><span><span><span></span><span>ε</span></span></span></span> 之间的关系然后错了）这道题的正确思路是：两次积分构造函数，或者使用 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 次泰勒公式。</p><p>订正依旧不会做，采中间点，用 <span><span>33</span><span><span><span></span><span>3</span></span></span></span> 次拉格朗日推导下去。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCYBq2LYnw6jyoOZyo9U-mZXbioH-QgACJBVrG89ByVb3pC1LmrkFFAEAAwIAA3kAAz0E" alt="21 订" /><figcaption>21 订</figcaption></figure><p></p></section><section><h3>2020 真题<a href="#2020-真题"><span>#</span></a></h3><ul>
<li>完成时间：20260915</li>
<li>分数：142
<ul>
<li>大题：-8</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPtq1krTHbeuLJ184jBntc8h_B2vhwACPBdrG8YqsVZuWM1wqqxfmAEAAwIAA3gAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>第 17 题是低级错误，二阶导数的 <span><span>CC</span><span><span><span></span><span>C</span></span></span></span> 算错，并且代入算极值点的时候算错（-3），<span><span>++</span><span><span><span></span><span>+</span></span></span></span> 看成 <span><span>−-</span><span><span><span></span><span>−</span></span></span></span> 了</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCP1q1ktw2DQc4QvfxcITxbsvXBB7HwACPhdrG8YqsVaV2XutgpqbfQEAAwIAA3kAAz0E" alt="17 订" /><figcaption>17 订</figcaption></figure><p></p><p>第 18 题是计算错误最后一步在计算圆柱的时候，想当然认为高是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>。其他是对的（-2）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCPxq1ksBlJeZvHM5cOXUAAFPYjASHjkAAj0XaxvGKrFWW8o1qwty-T0BAAMCAAN4AAM9BA" alt="21" /><figcaption>21</figcaption></figure><p></p><p>微分方程相关</p><p><span><span>u′(0)=0u'(0)=0</span><span><span><span></span><span><span>u</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>0</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，<span><span>CC</span><span><span><span></span><span>C</span></span></span></span> 不能推导出来是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>(-3)</p></section></section>
<section><h2>26 李 4<a href="#26-李-4"><span>#</span></a></h2><ul>
<li>完成时间：20260930-20261004</li>
<li>平均分：126.75</li>
<li>平均作答时间：161.25</li>
</ul><section><h3>26 李 4 卷 1<a href="#26-李-4-卷-1"><span>#</span></a></h3><ul>
<li>完成时间：20260930</li>
<li>分数：130
<ul>
<li>选择题：-10</li>
<li>大题：-10</li>
</ul>
</li>
<li>作答时间：165</li>
</ul><p>真题大于等于 140，模考卷子大于等于 135，我认为才是合格的。这份卷子还可以，错误主要集中在选择题，选择题错第 2 和第 3 题真的蚌埠住了。这份卷子一开始做的也没那么好，也是冷静下来一点点思考慢慢做出来的，所以加油，实力肯定是有的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADsWrEqcwL53gnE-SqVua7dd-uHPbkAAKgE2sbxNooVkPjV0gtvFfFAQADAgADeAADPQQ" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题错选为 D。没检查，只算了一半。而且，<span><span>f′′(x)f''(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 单调递增，并不意味着 <span><span>f′′(x)&gt;0f''(x)&gt;0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，我是在这里出现了谬误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADsmrEq8Fz-ijkHid0iqpekjOY13iAAAKkE2sbxNooVmaTAAHj2VRfVQEAAwIAA3cAAz0E" alt="2 订正" /><figcaption>2 订正</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADs2rEq9lad5c3g71BZPlQfhJPqErVAAKlE2sbxNooVpOrIAFr7tdHAQADAgADeAADPQQ" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题错选为 A。不可以用链式法则。使用链式法则的前提是函数可微</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADtGrEroUTyIWTvJwslfXug-1pGKUOAAKsE2sbxNooVh_-ol9GC3alAQADAgADeQADPQQ" alt="3 订正" /><figcaption>3 订正</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADtWrErrvPAjL7D79Wi8_WjbTknU8KAAKtE2sbxNooVk5CdlZ_6FNRAQADAgADeQADPQQ" alt="21" /><figcaption>21</figcaption></figure><p></p><p>数列极限的证明。最后的方法有想过这么做，但是没敢写（因为我认为是要是完美的形式，殊不知可以另外设 <span><span>gg</span><span><span><span></span><span>g</span></span></span></span>。（-5）</p><p>并且，除了 <span><span>xn+1−xnx_{n+1}-x_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 把 <span><span>xn+1x_{n+1}</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 代入之外，还可以递推式，这也是我忽略的了。</p><p>我现在才反应过来，这道题事实上不是单纯的单调递增还是单调递减，应该是都有可能，所以只能证明出它单调。</p><p>但是单调这个条件已经够用了，不论他是单调递增还是单调递减，他是整个有界的。</p><p>而我原本试卷上那个直接相减的证明，证不出来的原因是它是设出来的函数是单调递减的，所以错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADt2rEttorAAH9qmrTEFfi2P2AgLh35wACwRNrG8TaKFagej7skSbO-QEAAwIAA3kAAz0E" alt="21 订正" /><figcaption>21 订正</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADtmrErtr8P-NaYzS0VnSnyMyJfgTpAAKuE2sbxNooVuv55VFFpU0rAQADAgADeQADPQQ" alt="22" /><figcaption>22</figcaption></figure><p></p><p>这道题做的有点云里雾里的，其实原因很简单，忽略了实对称这个条件。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADuGrEuX-T_OwrCKjKBIcrYKqYSmWTAALLE2sbxNooVmY439-kxSYSAQADAgADdwADPQQ" alt="22 订正" /><figcaption>22 订正</figcaption></figure><p></p></section><section><h3>26 李 4 卷 2<a href="#26-李-4-卷-2"><span>#</span></a></h3><ul>
<li>完成时间：20261002</li>
<li>分数：137
<ul>
<li>大题：-13</li>
</ul>
</li>
<li>作答时间：165</li>
</ul><p>这份卷子才是真的还行，选填全对，大题倒三积分区间错误，最后一题确实没看懂什么意思</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADuWrEuebAIMXOUyw-I6eqOwLfEhjwAALME2sbxNooVi6d3n9OGnBkAQADAgADeAADPQQ" alt="20" /><figcaption>20</figcaption></figure><p></p><p>属于低级错误，积分区间看错 <span><span>x2+y2=1x^2+y^2=1</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 和 <span><span>(x−1)2+y2=1(x-1)^2+y^2=1</span><span><span><span></span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 是两码事。（-8）</p><p>其实没什么好订正的，回头再算一次，这道题答案是 <span><span>56+π4\frac{5}{6}+\frac{\pi}{4}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>6</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>5</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADumrEuiXvdpVWVWL7XenQYjoFvHxyAALNE2sbxNooVu5UhzbzZ3qAAQADAgADeAADPQQ" alt="22" /><figcaption>22</figcaption></figure><p></p><p>线代题目没看懂。这道题做的云里雾里的，第二问完全没看懂。</p><p>二次型本质上是一个数值，而右侧可以凑出来一个 <span><span>PTXP^{\mathrm{T}}X</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span>X</span></span></span></span> 之类的式子。</p><p>计算量非常大，先过一下，这道题我觉得也得从头开始写一遍过去。</p></section><section><h3>26 李 4 卷 3<a href="#26-李-4-卷-3"><span>#</span></a></h3><ul>
<li>完成时间：20261003</li>
<li>分数：118
<ul>
<li>选择：-5</li>
<li>填空：-10</li>
<li>大题：-17</li>
</ul>
</li>
<li>作答时间：165</li>
</ul><p>这份卷子还差 2 题没检查完，分别是填空题第 13 题和倒数第二道大题，对个答案先。这份卷子全是计算问题</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADu2rEx2hv-LEWCInyteSui0ODj8DvAALlE2sbxNooVkdEjtijdpbGAQADAgADeAADPQQ" alt="5" /><figcaption>5</figcaption></figure><p></p><p>错选为 B。对于 2，有两个问题：</p><p>第一，数列极限不可以推导出函数极限，如下所示。</p><span><span><span>f(x)={sin⁡(2πx),x≠00,x=0f(x) = \begin{cases}
\sin\left(\frac{2\pi}{x}\right), &amp; x \neq 0 \\[4pt]
0, &amp; x = 0
\end{cases}</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>{</span></span><span><span><span><span><span><span><span><span></span><span><span>sin</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>2</span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span></span><span>,</span></span></span><span><span></span><span><span>0</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>x</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span><span>0</span></span></span><span><span></span><span><span>x</span><span></span><span>=</span><span></span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span><p>第二，<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 只是正整数，那么趋近于负数呢？</p><p>所以这题选 B 很不应该。</p><p>对于 4，只需要利用拉格朗日中值定理 + 夹逼定理就可以证明了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADvGrEx-fdrkb9KOPPsPhr-4efBBREAALmE2sbxNooVgHl5Z6zLODFAQADAgADeAADPQQ" alt="12" /><figcaption>12</figcaption></figure><p></p><p>经典的错误标准的零分，这类题错过很多次了（包括下一份卷子）。</p><p>一定要记住，<span><span>b−an⋅(a+(b−a)in)\frac{b-a}{n}\cdot\left(a+\frac{(b-a)i}{n}\right)</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>b</span><span>−</span><span>a</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>⋅</span><span></span></span><span><span></span><span><span><span>(</span></span><span>a</span><span></span><span>+</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span>b</span><span>−</span><span>a</span><span>)</span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span>，这道题的 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，<span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 是 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span>，带进去就可以了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADvWrEyDvxKXKGyECLQa78chqYb1TTAALnE2sbxNooVlQQwBDmlbiFAQADAgADeAADPQQ" alt="13" /><figcaption>13</figcaption></figure><p></p><p>属于计算错误。草稿纸上也不知道哪里算错了，最后没时间检查，订正的时候重新算了一遍就算对了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADvmrEyHmWpbzS81AxxluKD9Fq1KaWAALoE2sbxNooVjukfSXw24IIAQADAgADeQADPQQ" alt="19" /><figcaption>19</figcaption></figure><p></p><p>经典的错误，牛莱公式代入的时候算错，导致全部错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADv2rEyKhd6dNu4xywr2-zLrdqIyBOAALpE2sbxNooVp046Dw0OcmDAQADAgADeQADPQQ" alt="21" /><figcaption>21</figcaption></figure><p></p><p>超级复杂的计算，只算对了一半，另一半算错了。这道题没订正，需要回头再订正一遍。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADwGrEyL0Fvwt_fTqirjZ8NpkJbpElAALqE2sbxNooVkHSsgABSdWnQQEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题也是计算错误，在 <span><span>B−EB-E</span><span><span><span></span><span>B</span><span></span><span>−</span><span></span></span><span><span></span><span>E</span></span></span></span> 计算的时候，把 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>、<span><span>−2-2</span><span><span><span></span><span>−</span><span>2</span></span></span></span>、<span><span>33</span><span><span><span></span><span>3</span></span></span></span>，化简抄成 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>、<span><span>22</span><span><span><span></span><span>2</span></span></span></span>、<span><span>33</span><span><span><span></span><span>3</span></span></span></span>（应该是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>、<span><span>22</span><span><span><span></span><span>2</span></span></span></span>、<span><span>−3-3</span><span><span><span></span><span>−</span><span>3</span></span></span></span>），从而全盘错误。</p><p>对于第 3 问，和 26 李 4 卷 2 的最后一问其实差不多，都是凑东西。</p><p>这道题也还没订正，需要再做一遍。</p></section><section><h3>26 李 4 卷 4<a href="#26-李-4-卷-4"><span>#</span></a></h3><ul>
<li>完成时间：20261004</li>
<li>分数：122
<ul>
<li>选择：-5</li>
<li>填空：-15</li>
<li>大题：-8</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p>选填问题有点大。第 5 题不管先，这道题我认为我确实会掉进坑里。第 14,15,16 全是错的，大题的第 1 题则是对积分区间理解问题，依旧是黎曼积分和，第 3 题则是漏乘了一项</p><p>这份卷子总结下来不应该错那么多，这份卷子我非常自信可以拿比较不错的分数，结果选填扣那么多。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADwWrEyVH0LNoj6lqBZ9XAhsNFbViRAALsE2sbxNooVseW4CITWm5uAQADAgADeQADPQQ" alt="5" /><figcaption>5</figcaption></figure><p></p><p>这类题型一直没掌握，直到那天认真看答案才知道怎么做。</p><p>这种表述换种说法，意思就是令 <span><span>x=f(n)x=f(n)</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>n</span><span>)</span></span></span></span>，其实就是取 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 为 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span>，那么反解出来自然也就是 <span><span>f(n)f(n)</span><span><span><span></span><span>f</span><span>(</span><span>n</span><span>)</span></span></span></span> 是 <span><span>xexxe^x</span><span><span><span></span><span>x</span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 的反函数。</p><p>知道了这一层，后面就都不难了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADwmrEyeL-F9FJHfuWxJM91OooutfkAALuE2sbxNooVvaynIa1OgABZgEAAwIAA3kAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>第 14 题对 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 的把握错误，这道题有算出来是 <span><span>x=1x=1</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，<span><span>y=1y=1</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，但是，绕 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 轴转的时候，转的那个 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 用错了。</p><p>第 15 题没说 <span><span>zz</span><span><span><span></span><span>z</span></span></span></span> 有二阶连续偏导数，所以应该用定义做（这个前面几份卷子就做过了）</p><p>第 16 题答案里保留了 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span>，事实上因为说了是正交的，所以可以把 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 算出来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADw2rEyliZ3Z0TKh1k40E9BdVQI4K9AALvE2sbxNooVgR_d1HKuetCAQADAgADbQADPQQ" alt="17" /><figcaption>17</figcaption></figure><p></p><p>这类题不知道怎么做的时候，把这个式子抄上去：</p><span><span><span>b−an(a+(b−a)in)\frac{b-a}{n}\left(a+\frac{(b-a)i}{n}\right)</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>b</span><span></span><span>−</span><span></span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span><span>(</span></span><span>a</span><span></span><span>+</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>(</span><span>b</span><span></span><span>−</span><span></span><span>a</span><span>)</span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span></span><p>但是需要注意这个 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 是分多少份，这道题这个 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 应该是取 <span><span>2n2n</span><span><span><span></span><span>2</span><span>n</span></span></span></span>，因为原题是分成 <span><span>2n2n</span><span><span><span></span><span>2</span><span>n</span></span></span></span>。将 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 取 <span><span>2n2n</span><span><span><span></span><span>2</span><span>n</span></span></span></span>，<span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 取 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，<span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 取 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，一样解出来答案。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADxGrEy87dNnMOCAvlGpv03ae629MrAALwE2sbxNooVgpxKyrqLBYBAQADAgADeQADPQQ" alt="19" /><figcaption>19</figcaption></figure><p></p><p>纯粹的低级错误。<span><span>12\frac{1}{\sqrt{2}}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 这个式子第一行写了，然后后面每一行都没写，最后答案就差一个这个。</p></section><section><h3>26 李 4 - 总结<a href="#26-李-4---总结"><span>#</span></a></h3><p>总结一下，我认为我硬实力肯定是够的，但是目前存在以下几个问题：</p><ul>
<li>对计算量大的东西把握一般</li>
<li>基础概念基础手法比较薄弱</li>
<li>重复的错误（比如说黎曼积分和，多元函数不存在二阶导情况需要使用定义，牛莱公式代入）</li>
</ul></section></section>
<section><h2>26 李 6<a href="#26-李-6"><span>#</span></a></h2><ul>
<li>完成时间：20261006-</li>
<li>平均分：</li>
<li>平均作答时间：</li>
</ul><p>重新看了一遍遗憾邂逅的帖子，发现 26 李 6 质量很差，所以就先放弃了。</p><p>正好 27 李 6 出了，转去做 27 李 6（听说质量不错）</p><section><h3>26 李 6 卷 1<a href="#26-李-6-卷-1"><span>#</span></a></h3><ul>
<li>完成时间：20261006</li>
<li>分数：132-15-10
<ul>
<li>选择：-10</li>
<li>大题：-8</li>
</ul>
</li>
<li>作答时间：150</li>
</ul><p>这份卷子写到后面发现太神秘了。而且这份卷子也是晚上写的，头脑晕晕的，对草稿纸我认为划分的还是不合理。</p><p>做到最后半个小时没去检查，直接按照向下对答案，碰到错了看一遍草稿纸看看是不是简单错误或者一眼看出来的，是的分就加回去了。本来这份卷子应该选填额外 -15，不过选择 2 我知道这道题有其他可能性只是还没去写，填空 11 和 15 都是草稿纸上抄着抄着简单抄错，就算了，检查大概率是可以检查出来的（想了一下确实可以，因为这三题都画圈了）。</p><p>此外对于大题，这份的大题太神秘了，我一开始写的时候感觉还好，但是越做越神秘，然后发现一堆奇奇怪怪的问题，好在最后把第 18 题，第 19 题，第 21 题第一问和第 22 题大部分做出来了，对于第 20 题知道大概怎么做，但是没做出来，最后问了一下 ai 才做出来的，重点是奇偶性问题，这个确实好久没做了忘光了。</p><p>这份卷子按照自己的真实水平只有 115 附近，卷子还是要多练。还有就是写一步算一步的问题，这个也需要注意，一定要写一步算一步。想了一下，还是最后不想写了，感觉太难了想放弃。</p><p>哈哈，迎难而上，坚持下去，从下一份开始又是全新的东西我说！吸取教训前进！</p><p>但是没检查就是没检查，没得说，这份卷子我也会按照不合格来看待。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADxWrE-zeBdR8WKu8cIpfchMVmrPdDAAI2FGsbxNooVgAB4f3njlt0ZAEAAwIAA3gAAz0E" alt="3" /><figcaption>3</figcaption></figure><p></p><p>条件代入的时候直接代入错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADxmrE-0m5EUFbQd8vAAGQ6Zj--5YzGgACNxRrG8TaKFa3FdJb6OXd9AEAAwIAA3gAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>特征值法判断合同只有实对称矩阵的时候才成立。</p><p>所以直接排除一些选项。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADx2rE-2s642zEfNR_Tlx3i3_i8rL4AAI4FGsbxNooVnv8baIdTB5DAQADAgADeAADPQQ" alt="21" /><figcaption>21</figcaption></figure><p></p><p>利用凹凸性凸函数的性质。</p><p>确实不会。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADyGrE-3w4XU_TWopGKNt0AAHyepKEaQACORRrG8TaKFYxFxg_IR3FgAEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>算到最后算昏头了，混淆了 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 和 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span>。</p><p>其实不会难。</p></section></section>
<section><h2>27 李 6<a href="#27-李-6"><span>#</span></a></h2><ul>
<li>完成时间：20261008-20261017</li>
<li>平均分：</li>
<li>平均作答时间：</li>
</ul><section><h3>27 李 6 卷 1<a href="#27-李-6-卷-1"><span>#</span></a></h3><ul>
<li>完成时间：20261008</li>
<li>分数：142</li>
<li>作答时间：135</li>
</ul><p>在复盘之前需要说明，我认为我这份卷子考出来这个分数完全是运气，而不是实力。</p><p>包括这份卷子在内的 27 李 6 卷 1、2、3，我都执行了一个很错误的策略，那就是没做完，更准确的说，是怕自己做错，从而保有侥幸心理，然后直接不检查。</p><p>事实证明，越抱有侥幸心理，错的就越多。</p><p>现在要做的事情是端正态度，把每一份都当成考场上的卷子考。</p><p>等复盘完之后（20261013），晚再来一份卷子！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHVqzhodEQbPNxIfVflgpDx3AYFooAACwxVrG7fmcVbzpu6mz2fsvQEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题 -3。</p><p>复盘下来，这道题的计算都是对的，但是在计算发现这道题的二阶极值 <span><span>AC−B2AC-B^2</span><span><span><span></span><span>A</span><span>C</span><span></span><span>−</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，当 <span><span>x=y=1x=y=1</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 的时候，前面那个值为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，然后就不会做了。</p><p>事实上，碰到这种情况要做的事情一定是找边界，这道题当时想的是既然给了 <span><span>≥0\ge0</span><span><span><span></span><span>≥</span><span></span></span><span><span></span><span>0</span></span></span></span> 的条件，那么也就意味着边界就是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，而没有去思考有没有其他边界。</p><p>这道题的这个形式很明显是类圆的形式，当 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 其中有一个取 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 的时候，另一个只能取 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，从而得到另一块边界最值。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHZqzhulAt1hdHqfgaIStPwXj2nfrgACxRVrG7fmcVbErqdMie2onwEAAwIAA3kAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题 -5。</p><p>第 2 问有点不会做。第 2 问不会做的核心在于把第一问和第二问混淆了，第一问讨论的是 <span><span>ATAA^{\mathrm{T}}A</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span>A</span></span></span></span> 的东西，而第二问讨论的是 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，搞混淆所以导致错误。</p><p>同时，做这道题的时候也陷入了套 <span><span>QTATAQQ^{\mathrm{T}}A^{\mathrm{T}}AQ</span><span><span><span></span><span><span>Q</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span>A</span><span>Q</span></span></span></span>，事实上这道题并不是这么做的。</p><p>这道题再做一遍如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHdqzh_-DXvjWUqD0DripDbj4bUyNAACzRVrG7fmcVaaNDwAAconIf0BAAMCAAN5AAM9BA" alt="22 订" /><figcaption>22 订</figcaption></figure><p></p><p>自己再做一遍下来，感觉没多难。</p><p>主要还是对自己不熟悉的怕了。</p></section><section><h3>27 李 6 卷 2<a href="#27-李-6-卷-2"><span>#</span></a></h3><ul>
<li>完成时间：20261010</li>
<li>分数：128-5-8</li>
<li>作答时间：165</li>
</ul><p>这份卷子第一做的很怪，状态不好，我想是因为这几天熬夜，然后突然作息调整好，以后每天早上的卷子是不能拉下的，第二是这份卷子计算量很大，尤其是填空题那里。填空题那俩确实犯了一些不经常犯的问题，值得注意。对于大题第 2 题，这个是比较低级的错误，没有用定义做（不等于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 的时候可以不用定义，脑子抽了属于是）大题第三题漏解，倒二题确实有点不怎么会做。最后就是这份卷子一整份卷子都没时间检查了。还有就是 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 一定要牛莱公式全代入，这个是后面检查出来的</p><p>教训：调整状态，每天早睡早起。这份卷子竟然完全没有时间检查计算。导致填空题第 13 题错误，并且第 14 题其实也得算错，猜了一个答案 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 上去（但是这道题计算量确实大到逆天）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHhqziCMTnH02xKZtwgVWNfM2J542wAC1hVrG7fmcVYTo0SU6BOL5QEAAwIAA3kAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>微分方程的低级错误</p><p>这道题属于低级错误，是因为很神秘的 <span><span>y∗y^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 设错了，<span><span>y∗y^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 应该设为 <span><span>AX+BAX+B</span><span><span><span></span><span>A</span><span>X</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span></span></span></span>，而不是直接 <span><span>AxAx</span><span><span><span></span><span>A</span><span>x</span></span></span></span>（直接是 <span><span>AxAx</span><span><span><span></span><span>A</span><span>x</span></span></span></span> 解出来也有问题，所以单纯是想当然认为是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>）</p><p>这类题也算是我的薄弱点，需要着重注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHlqziDKfU8V1AwAAfgMX5LyDKUHOMQAAtcVaxu35nFW68tixZqiEAgBAAMCAAN4AAM9BA" alt="14" /><figcaption>14</figcaption></figure><p></p><p>大计算量，最后猜了了一个 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 上去。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBHpqziDddzC5JDefmcLB5Njpv6tA_wAC2BVrG7fmcVYT_LnWB6_F6wEAAwIAA3kAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>惯性思维，这类变化可能是不满秩的，是因为：</p><span><span><span>f(x1,x2,x3)=(x1+x2)2+(x2+x3)2−(x1+ax3)2f(x_1, x_2, x_3) = (x_1 + x_2)^2 + (x_2 + x_3)^2 - (x_1 + ax_3)^2</span><span><span><span></span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>a</span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span></span><p>如果是减法的时候，那必须拆开来，因为天生不再非负。</p><p>之前那个天然是大于等于零的数，所以可以这么做！</p><p>所以直接求行列式即可，也就是 <span><span>a≠1a\ne1</span><span><span><span></span><span>a</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBH1qziD_Spk5x2HJX9hWRMbDAa0lNAAC2hVrG7fmcVZ3ZneUohRsigEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>低级错误 -5。</p><p>左侧极限等于右侧极限不能说明连续，但是左侧导数等于右侧导数可以说明可导，左侧导数、右侧导数以及其他逼近方式的极限都相等，才可以说明导数连续</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBINqzjD7yW0IPrBJF3kQnun8SRvAxAACXhZrG7fmcVYTJ_VO9h9qvAEAAwIAA3kAAz0E" alt="18 订" /><figcaption>18 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBH5qziEOCATR7jkk-O__AZrwgmBIRAAC3RVrG7fmcVb2q-usJ2eNEAEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>漏解 -2</p><p><span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 定义域是 <span><span>R\mathbb{R}</span><span><span><span></span><span>R</span></span></span></span>，漏了一半。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBH9qziEcHxm8SW2P-YFxVL7YfIFLEAAC3hVrG7fmcVaxm1Oju3jrYAEAAwIAA3kAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题没给自己扣分，但是要扣的话应该是 -8。</p><p>这道题错误原因是牛莱公式代入代入一半，包括 27 李 6 卷 3 也是有这个问题。</p><p>所以，做一步检查一步非常重要，以及自己的薄弱点，牛莱公式。</p><p>此外还可以注意一点，利用奇偶性化简完之后，不一定要采用奇偶性化简完后的那个式子计算，可以按照原本的计算。</p><p>但是这道题订正的话，我就采用我原来的方法去做。</p><p>还有一点，这道题的奇偶性其实也是我瞄到答案之后才做的（？），应该不是，这道题轮换对称性是一下就想出来的。</p><p>所以态度还是很不端正啊！越怕自己做错，那真的才是错。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIJqzir_ejd8tFq9a-gU0wQdm8C-hgACHBZrG7fmcVYsM2FYCBfHOwEAAwIAA3kAAz0E" alt="20 订" /><figcaption>20 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIBqziE2AYeglj8gfiv-JwzMhfS_7QAC3xVrG7fmcVa23FAIYhCLeAEAAwIAA3kAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题 -5。</p><p>对于第 1 问，我自己的思路是利用拉格朗日中值定理，但是一次拉格朗日中值定理并不充分，得利用两次。</p><p>对于第 2 问，我想到了泰勒公式，但是一直在 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 处展开，然后证明没证出来怎么做。</p><p>证明题没做出来就没做出来了，问题不大，可以积累一下这个思路。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIFqzic700meuU-TA5h-d85VuGV6gQACCxZrG7fmcVbJx84T7YIzMwEAAwIAA3kAAz0E" alt="21 订" /><figcaption>21 订</figcaption></figure><p></p></section><section><h3>27 李 6 卷 3<a href="#27-李-6-卷-3"><span>#</span></a></h3><ul>
<li>完成时间：20261011</li>
<li>分数：119</li>
<li>作答时间：150</li>
</ul><p>态度非常的不端正，事实上和上一份卷子一样，我这份卷子是没有检查的，直接对的答案，结果就是考 119，设身处地想了一下自己是否会检查出来一道填空题，然后给自己 + 了 5 分（但是感觉不好，又扣回去了）。态度非常的不对，包括上一份卷子也是，给自己 + 了 5 分（上一份卷子第 14 题猜了一个 0 上去）。我很能理解为什么自己这种心态，因为怕自己考得很差，偷偷给自己加分。然而自己的模考何来的差和不差之说呢，都是来时路罢了。以及抱有侥幸心理认为自己能算对，但是我又没有做一步算一步了。</p><p>同时，这份卷子再次暴露了我一个非常大的缺点，不敢算（保守）和牛莱公式代入错误（导致 -9）回顾了一下，你说我除了选择题 10 分和大题最后一题之外，其他的错误有什么好说的，但是我又不好说自己检查能不能检查的出来（因为完全没有检查，想象自己检查吗，太猎奇了。所以今天要做的事情就是摆正态度，复盘一下 27 李 6 卷 2 和 3，然后晚上写一下卷 4。我还是觉得是态度问题，态度问题非常大。</p><p>最后还是，既然选择了冲，那么就做到极致，把每份卷子都当成真题考，以及最近的作息问题也很大。我相信自己能做到，但是前提是不允许抱有任何的侥幸心理，错了就是错了，不可以为自己的错误找借口。这是第 11 套模拟卷，做下来我认为自己的下限是 120。下 10 套卷子的目标是稳定在 130+，再下 10 套的卷子目标是稳定在 140+。循序渐进，不可能一口吃成胖子，敢于犯错，敢于直面自己的错误。</p><p>总结一下自己的薄弱点：</p><ol>
<li>牛莱公式</li>
<li>微分方程设 <span><span>y∗y^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span></li>
</ol><p>总结一下这份卷子，其实就选择题 2 题真的不会，其他 21 分都可以说是低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIpqzjiVmKGdquLJgRGmho93v3jL2wACkxZrG7fmcVZlSWyfQ5hs6wEAAwIAA3kAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>这道题出错了。</p><p>题干写：<span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 有二阶连续导数。</p><p>这意味着在闭区间端点 <span><span>x=0x = 0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 处：</p><ul>
<li><span><span>f(0)=0f(0) = 0</span><span><span><span></span><span>f</span><span>(</span><span>0</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 是有限值；</li>
<li><span><span>f′(0)=0f'(0) = 0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>0</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 是有限值；</li>
<li><span><span>f′′(0)f''(0)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>0</span><span>)</span></span></span></span> 必然是一个有限的确定实数（<span><span>lim⁡x→0+f′′(x)=f′′(0)∈R\lim_{x \to 0^+} f''(x) = f''(0) \in \mathbb{R}</span><span><span><span></span><span><span>lim</span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>0</span><span>)</span><span></span><span>∈</span><span></span></span><span><span></span><span>R</span></span></span></span>）</li>
</ul><p>现在，让不等式两边同时取 <span><span>x→0+x \to 0^+</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span> 的右极限：</p><ul>
<li>
<p>左侧极限：</p>
<span><span><span>lim⁡x→0+[xf′′(x)+ef(x)]=0⋅f′′(0)+ef(0)=0+e0=1\lim_{x \to 0^+} \left[ x f''(x) + e^{f(x)} \right] = 0 \cdot f''(0) + e^{f(0)} = 0 + e^0 = \mathbf{1}</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span>[</span></span><span>x</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>+</span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span></span></span></span></span></span><span><span>]</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span></span><span>⋅</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>0</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>f</span><span>(</span><span>0</span><span>)</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span></span><span>+</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></span>
</li>
<li>
<p>右侧极限：</p>
<span><span><span>lim⁡x→0+6ln⁡(1+x)=6ln⁡(1)=0\lim_{x \to 0^+} 6\ln(1+x) = 6\ln(1) = \mathbf{0}</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>6</span><span></span><span>ln</span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>6</span><span></span><span>ln</span><span>(</span><span>1</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span></span>
</li>
</ul><p>由极限的保序性定理，若在 <span><span>(0,δ)(0, \delta)</span><span><span><span></span><span>(</span><span>0</span><span>,</span><span></span><span>δ</span><span>)</span></span></span></span> 上恒有左边 <span><span>≤\le</span><span><span><span></span><span>≤</span></span></span></span> 右边，则两边的极限必定满足：</p><span><span><span>1≤0\boldsymbol{1 \le 0}</span><span><span><span></span><span><span><span>1</span><span></span><span>≤</span><span></span><span>0</span></span></span></span></span></span></span><p>这道题按照题目给的做法是：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBI5qzuYfY7OkfFX3cSyoZeQdiWvT7wACfxFrG7fmeVYYBi-61NhZhgEAAwIAA3gAAz0E" alt="4 解" /><figcaption>4 解</figcaption></figure><p></p><p>可以积累一下。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIlqzjh3_T9hUFHXbbzrHMA5pTi7wQACkBZrG7fmcVbpz1PPD28iRQEAAwIAA3gAAz0E" alt="7" /><figcaption>7</figcaption></figure><p></p><p>确实不会做。</p><p>回顾张宇基础 30 讲的例 14.1，那个是怎么解的，是令后者大于等于 0，然后解出来方程去和原式对比。</p><p>而这道题却迁移不过来，因为算出来后者恒大于等于 0，然后也没法和原积分区间很好的通过图像法比大小。</p><p>所以这道题就是利用换元法。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBItqzjzqTSkMVY_H5M83E9wfq3V5CQACphZrG7fmcVaJuwR38fHrhgEAAwIAA3gAAz0E" alt="7 解 1" /><figcaption>7 解 1</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIxqzj0YP2fgu_JVrUWiIQYmjfor5wACpxZrG7fmcVZTgBN90jjJKAEAAwIAA3gAAz0E" alt="7 解 2" /><figcaption>7 解 2</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIhqzjgrBpGWN6wnHfkbXgGbRV0NdwAChBZrG7fmcVaOk6oIAsVwTAEAAwIAA3kAAz0E" alt="13" /><figcaption>13</figcaption></figure><p></p><p>二次函数没有零点，<span><span>Δ&lt;0\Delta&lt;0</span><span><span><span></span><span>Δ</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，而不是 <span><span>Δ&gt;0\Delta&gt;0</span><span><span><span></span><span>Δ</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p>本题应该是让 <span><span>Δ≤0\Delta\le0</span><span><span><span></span><span>Δ</span><span></span><span>≤</span><span></span></span><span><span></span><span>0</span></span></span></span>，而我写成 <span><span>Δ≥0\Delta\ge0</span><span><span><span></span><span>Δ</span><span></span><span>≥</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIdqzjgLu_FTW3QoAAGwA3nQi0oEaygAAoMWaxu35nFW9s_uGd3wcBgBAAMCAAN4AAM9BA" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题是牛莱公式代入错误，下限是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，结果我想当然认为是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIZqzjfsUZ7M_hSR3yPbiM-hvrsYFgACghZrG7fmcVbZgaXNJN5lqwEAAwIAA3kAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题 -2。</p><p>这道题我记得某一年的真题我也是，算到最后一步没做完。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIVqzjeRUka53eKElgps6da7ST6xTwACfxZrG7fmcVZiAc_KSFHapAEAAwIAA3kAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题 -4（其实应该扣更多）。</p><p>本题属于牛莱公式计算错误，没有考虑 <span><span>32\frac{3}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 次方。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBIRqzjQVV1H8qAUxIM8VcVZzBg37bQACcBZrG7fmcVYhFMMmRzGnAgEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题 -5。</p><p>保守和不敢算</p><p>自己的思路是对的，然后不敢继续向下走，导致后续都不敢做了（-5）</p><p>这道题我知道应该是用配方法做，但是做一半以为自己做错了。</p><p>本质上是思路不清晰导致的。</p><p>导致这个的原因是混淆相似与合同，这道题 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 就不可能相似，因为特征值完全完全不一样。</p><p>本质是过拟合刷题，很多题目没想好为什么就公式化直接上 <span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span>。</p><p>第三问的结论是：</p><span><span><span>tr⁡(MN)=tr⁡(NM)\operatorname{tr}(MN) = \operatorname{tr}(NM)</span><span><span><span></span><span><span>tr</span></span><span>(</span><span>M</span><span>N</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>tr</span></span><span>(</span><span>N</span><span>M</span><span>)</span></span></span></span></span><p>假设 <span><span>MM</span><span><span><span></span><span>M</span></span></span></span> 是 <span><span>m×nm \times n</span><span><span><span></span><span>m</span><span></span><span>×</span><span></span></span><span><span></span><span>n</span></span></span></span> 矩阵，<span><span>NN</span><span><span><span></span><span>N</span></span></span></span> 是 <span><span>n×mn \times m</span><span><span><span></span><span>n</span><span></span><span>×</span><span></span></span><span><span></span><span>m</span></span></span></span> 矩阵。</p><p>那么 <span><span>MNMN</span><span><span><span></span><span>M</span><span>N</span></span></span></span> 是 <span><span>m×mm \times m</span><span><span><span></span><span>m</span><span></span><span>×</span><span></span></span><span><span></span><span>m</span></span></span></span> 方阵，它的主对角线元素之和（即迹）为：</p><span><span><span>tr⁡(MN)=∑i=1m(MN)ii=∑i=1m∑j=1nMijNji\operatorname{tr}(MN) = \sum_{i=1}^m (MN)_{ii} = \sum_{i=1}^m \sum_{j=1}^n M_{ij} N_{ji}</span><span><span><span></span><span><span>tr</span></span><span>(</span><span>M</span><span>N</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span>(</span><span>M</span><span>N</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>ii</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span>j</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span>M</span><span><span><span><span><span><span></span><span><span><span>ij</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>N</span><span><span><span><span><span><span></span><span><span><span>j</span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><p>而 <span><span>NMNM</span><span><span><span></span><span>N</span><span>M</span></span></span></span> 是 <span><span>n×nn \times n</span><span><span><span></span><span>n</span><span></span><span>×</span><span></span></span><span><span></span><span>n</span></span></span></span> 方阵，它的迹为：</p><span><span><span>tr⁡(NM)=∑j=1n(NM)jj=∑j=1n∑i=1mNjiMij\operatorname{tr}(NM) = \sum_{j=1}^n (NM)_{jj} = \sum_{j=1}^n \sum_{i=1}^m N_{ji} M_{ij}</span><span><span><span></span><span><span>tr</span></span><span>(</span><span>N</span><span>M</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>j</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span>(</span><span>N</span><span>M</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>j</span><span>j</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>j</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span><span>j</span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>M</span><span><span><span><span><span><span></span><span><span><span>ij</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><p>因为实数乘法满足交换律 <span><span>MijNji=NjiMijM_{ij} N_{ji} = N_{ji} M_{ij}</span><span><span><span></span><span><span>M</span><span><span><span><span><span><span></span><span><span><span>ij</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>N</span><span><span><span><span><span><span></span><span><span><span>j</span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span><span>j</span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>M</span><span><span><span><span><span><span></span><span><span><span>ij</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，且双重有限求和可以任意交换求和顺序，所以这两个和式完全相等！</p><p>所以，只需要交换一下，就可以得到 <span><span>XTBXX^{\mathrm{T}}BX</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span><span>B</span><span>X</span></span></span></span>，然后就迎刃而解了。</p></section><section><h3>27 李 6 卷 4<a href="#27-李-6-卷-4"><span>#</span></a></h3><ul>
<li>完成时间：20261014</li>
<li>分数：135</li>
<li>作答时间：150+30</li>
</ul><p>写了 150min，花了 30min 检查了一下选填，检查出来 2 填空，但是选填还是 -15。</p><p>本来以为是确实不会做，但是看了答案之后发现都是以前经历过的经典变形，所以属于套路的遗忘。</p><p>还可以，但是还需要再努力！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBtxq0XHsYA7bGauwbPJ0i7EWLFKHxwACwQ9rG6jnkFYG_z3aJz3KkAEAAwIAA3kAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题我一直想着构造函数，确实是构造函数，但是一直想不到怎么用。</p><p>本题确实是低级错误，利用经典变形上下同时乘上一个 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span>，然后放缩就可以证明出来了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBt1q0XLBB5mGEhMdAlBty3y_pypj-QACwg9rG6jnkFZD5GIdXe5uvgEAAwIAA3kAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>对于 1，脑子抽了理解错误。这句话的意思是有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个不同的实根，而不是有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个线性无关的特征向量。对于前者肯定是错误的。</p><p>对于 2，这个属于是显然的结论，略。</p><p>对于 3，从直观上理解，<span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 可相似对角化，也就意味着整个 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 维空间可以被完全拆解为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个互不干扰的独立特征方向。</p><p>如果某个方向上 <span><span>w−λi=0w - \lambda_i = 0</span><span><span><span></span><span>w</span><span></span><span>−</span><span></span></span><span><span></span><span><span>λ</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>：</p><p>那这个方向上的分量在第一步的时候就已经瞬间被干成 0 了！</p><p>如果某个方向上 <span><span>w−λi≠0w - \lambda_i \neq 0</span><span><span><span></span><span>w</span><span></span><span>−</span><span></span></span><span><span></span><span><span>λ</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>：</p><p>这个分量在第一步没死（乘了一个非零数），那你再第二步，不过是再乘一个非零数 <span><span>(w−λi)(w - \lambda_i)</span><span><span><span></span><span>(</span><span>w</span><span></span><span>−</span><span></span></span><span><span></span><span><span>λ</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span>！</p><p>一个不是 0 的数，连续乘以两次非零数，不可能是 0。</p><p>当 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 不可相似对角化的时候，才会存在这种。</p><p>本题可以利用特征值去证明。</p><p>从特征值的角度理解，可以变化为特征值 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，特征值 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，等等的形式，并且这个特征值是原本的特征值进行线性变形。</p><p>原本的特征值进行线性变形后，平方后 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 的个数也不会变</p><p>对于 4，<span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>ATA^{\mathrm{T}}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span></span></span></span> 只有相同的特征值，但是对应的特征向量有很大差距，这个属于是背书错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACBt5q0XTscRy6oOWcqhePUuIvsYryhAACww9rG6jnkFZqcTH4V0e9wwEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题就是理解错题目意思了，这道题的意思是求 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>，而不是求 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>，我理解成求 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 了。所以我猜了一个 <span><span>n=1n=1</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 进去，<span><span>n=1n=1</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 代入进去也就是 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 的值。这题不应该。</p><p>退一步来说，也应该是参变分离然后求导，其实就非常简单了。</p></section><section><h3>27 李 6 卷 5<a href="#27-李-6-卷-5"><span>#</span></a></h3><ul>
<li>完成时间：20261016</li>
<li>分数：118</li>
<li>作答时间：150（没检查）</li>
</ul><p>怎么说呢，卷 4 和卷 5 其实都算是没怎么检查的。然后卷 5 这份的大题稀烂，我本以为大题是我的优势，没想到这份卷子大题烂到了一个程度。</p><p>选填 -10，这个先不管。</p><p>然后大题的第一题，<span><span>±\pm</span><span><span><span></span><span>±</span></span></span></span> 号错了，-4，第 19 题整道题积分区间和要求什么看错了，-10，第 21 题整道题抄错了，并且微分方程的设法又错了，-8。</p><p>怎么说呢，我认为一方面还是态度问题，态度太差了。这几份卷子都不是一气呵成结束的，第二就是低级错误仍然很明显，你看这份卷子，我觉得错的还是那几个一模一样的问题。这份卷子绝对不难，大题扣的 22 分我觉得全部都是低级错误。</p><p>对于微分方程设三角函数的特解，错了无数次了。<span><span>y∗=Acos⁡ωx+Bsin⁡ωxy^*=A\cos\omega x+B\sin\omega x</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>A</span><span></span><span>cos</span><span></span><span>ω</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span><span></span><span>sin</span><span></span><span>ω</span><span>x</span></span></span></span>，这个 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 是不一样的，这个真的错了无数次。</p><p>然后第二就是经典的想当然积分区间，以及经典的想当然认为是算绕 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的体积，这道题就是算表面积。</p><p>以及复合求导问题。</p><p>还是没有算一步检查一步，或者更准确的说，其实检查了，也检查出一些问题，但是更多的问题没有检查出来。</p><p>你说这种问题有什么必要讲吗，我觉得没有，因为这种问题，你只要稍微检查一下，就知道了。</p><p>而且确实现在实实在在 150min 写下来，只是刚刚好写完，然后也没检查，按照我这份卷子 -22 的大题量，最后 30min 即便是我全都知道我错哪了，也检查不完了。</p><p>回顾了一下，那么现在的问题就是，选填现在扎扎实实的花了 60min 附近，但是大题有点压缩时间了。大题老老实实均匀分布给 75 min 这样子，然后留 15min 给自己检查。</p><p>从明天开始，差不多就这样。选填压一下时间，压到 50min 这样，然后大题给 80min 差不多，反正加起来 2 个半小时必须得匀出来至少 15min 的时间检查一遍选填。</p><p>现在非方法性失误错的还是太多了，我觉得一方面还是有点怪作息，今早状态其实也一般，而且故意没开空调，锻炼心理压力在闷热环境下答题。</p><p>总结一下，进步空间很大，尤其是计算。这类计算问题我觉得我在写早年真题的时候基本就没碰到过啊？那为什么会变成这样呢？</p><p>明天直接开 2021 年真题，先不写 27 李 6 卷 6 了，这份周日写。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB25q0jhf1KWiHm-gqRuDnHSRt7kfagAC_htrG-BrkFbjtKAmbRksiQEAAwIAA3gAAz0E" alt="9" /><figcaption>9</figcaption></figure><p></p><p>特征值一样 <span><span>⇏\nRightarrow</span><span><span><span></span><span>⇏</span></span></span></span> 相似，因为算出来的特征向量可能有些缺腿有些不缺腿）</p><p>相似 <span><span>⇏\nRightarrow</span><span><span><span></span><span>⇏</span></span></span></span> 可对角化，缺腿相同也是相似。</p><p>本题属于是对概念理解不清晰导致的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB29q0jiEFqUDLusgEH6OqwUq1FYe-gAC_xtrG-BrkFa-cCw-qFVHQQEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>确实不会，这道题先跳，回头再来看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3Bq0jkr4eHEttl_GudDhtE8qBnhLwADHGsb4GuQVrIwLyUWIKmRAQADAgADeAADPQQ" alt="17" /><figcaption>17</figcaption></figure><p></p><p>本题 -4.</p><p>低级计算错误。本题错误原因在于对 <span><span>1sin⁡(1/x)\frac{1}{\sin(1/x)}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>s</span><span>i</span><span>n</span></span><span>(</span><span>1/</span><span>x</span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 求导求错，最后应该算出来是 <span><span>++</span><span><span><span></span><span>+</span></span></span></span> 的，但是少乘了一个 <span><span>−-</span><span><span><span></span><span>−</span></span></span></span>，最后导致错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3Fq0jmI0tf_7zSHlEuqP62q7yAprwACARxrG-BrkFZcssfa031yNgEAAwIAA3kAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题 -10.</p><p>低级计算错误 + 积分区间思考错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB3Jq0jn76Yy62CByMXKyNChnXKGqbgACAhxrG-BrkFZ9MR8qb8K4_AEAAwIAA3gAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题 -8.</p><p>低级计算错误（因为漏抄了一个 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>），以及计算过程中 <span><span>y∗y^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 设错了。</p></section><section><h3>27 李 6 卷总结<a href="#27-李-6-卷总结"><span>#</span></a></h3><p>感觉很猎奇来的，卷子很简单，但是我感觉我做得很差。</p><p>主要还是计算问题，计算问题很大。</p><p>但是我也不知道要做什么，我感觉第一方面就是在意我的常错点，牛莱公式、积分区间以及微分方程的特解，第二方面就是做一步算一步。</p><p>以后在做卷子之前，每张卷子的开头都要把这三个名词写上去，最经常的易错点就是这三个了。</p><p>此外，就像遗憾邂逅说的那样，最后还是得看吸收。一份卷子你第一次考 60，第二次考 140，就比那些第一次考 120，第二次考 130 的吸收的好。</p><p>最重要的是把握心态，好好吸收，以及下次不允许再犯同类错误了。</p><p>同类错误非常严重。</p></section></section>
<section><h2>数学近年真题（21-26）1 刷<a href="#数学近年真题21-261-刷"><span>#</span></a></h2><ul>
<li>完成时间：20261018-20261023</li>
<li>平均分：</li>
<li>平均作答时间：</li>
</ul><section><h3>2021 真题<a href="#2021-真题"><span>#</span></a></h3><ul>
<li>完成时间：20261018</li>
<li>分数：142</li>
<li>时间：90+60</li>
</ul><p>模拟卷还是太神秘了，果然还得是真题。</p><p>来点聊天记录：</p><p>21 年真题 136</p><p>感觉有点低</p><p>21 年真题是改革以来最简单的一年真题了</p><p>+1 分吧</p><p>大题俩低级错误，分别 -1，-2</p><p>填空一个不会做</p><p>一个低级错误 -5</p><p>这份卷子 90min 写完，然后检查了 60min，检查出来一道大题错了</p><p>挽救了 6 分大概</p><p>你大爷的</p><p>我要给我自己 +5 分</p><p>题印错了</p><p>我就说我怎么算都算不出来</p><p>那就是 150min 142，还可以</p><p>我说</p><p>非真题太怪了</p><p>而且这份卷子题我大多数应该都没做过</p><p>那些写教辅的老师应该在有意控制</p><p>总的来讲，其实最后大多数时间都在算第 14 题，题印错了那没招。这提示了我一定要找好的材料去印。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDZq1OdvE1qg8V3nY1qFmfeAGAIlTQACSRNrG1-fqVYKUEHel-QtjAEAAwIAA3gAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>本题属于低级错误，直接想当然认为是 <span><span>r3−r=0r^3-r=0</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>r</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，但是实际上应该是 <span><span>r3−1=0r^3-1=0</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，这个错误我错过非常多次了，包括之前总结的时候也总结了。</p><p>这道题在二次做的时候依旧没有反应过来。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDdq1OgMOolAeHIGUR63UDfEFMJbwwACShNrG1-fqVanznH2gYtT0QEAAwIAA3gAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题凹凸区间的凹凸二阶导都算出来了，但是最后忽略了 <span><span>(x+1)3(x+1)^3</span><span><span><span></span><span>(</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span> 也可以讨论正负性，所以 -2。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDhq1OhXbByOvtxF_1IubFUds4xw6QACSxNrG1-fqVbDZpv0--cN-QEAAwIAA3gAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>题目里明确说了 <span><span>x&gt;0x&gt;0</span><span><span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，而我写了 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 个解，所以 -1。</p></section><section><h3>2022 真题<a href="#2022-真题"><span>#</span></a></h3><ul>
<li>完成时间：20261020</li>
<li>分数：140
<ul>
<li>大题：-10</li>
</ul>
</li>
<li>时间：120+30</li>
</ul><p>还可以，以为自己寄了，其实做的真还行。30min 检查选择题检查出来 1 个。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCXxq2K4XrslwMVfmwn2BznYZfPA15wACGRVrG89ByVbkmM2NwL2TpwEAAwIAA3kAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题有半边犯了一个非常低级的错误：</p><p><span><span>(x−y)2(y−x)2=1≠−1\frac{(x-y)^2}{(y-x)^2}=1\ne-1</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>(</span><span>y</span><span>−</span><span>x</span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span>x</span><span>−</span><span>y</span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>−</span><span>1</span></span></span></span>，从而 -4。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCX1q2K5xWuSwliiy1P8fXg-17VjlBAACGhVrG89ByVZKY99L78s1xQEAAwIAA3kAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>充分性不会证明，先过。</p></section><section><h3>2023 真题<a href="#2023-真题"><span>#</span></a></h3><ul>
<li>完成时间：20261026</li>
<li>分数：145
<ul>
<li>选择：-5</li>
</ul>
</li>
<li>时间：90+10+45（第一遍过 + 第二遍过 + 检查）</li>
</ul><p>还可以，但是这 5 分扣在了不该扣的地方。其实也不算不该扣，这道题算二级结论，然后结论忘了，但是推导不熟练，结果就是推错了。</p><p>这几个结论的变式需要额外再掌握一下。</p><p>检查 45min 检查出来俩填空，一个是法线没加 -，一个是最后一题单纯做的乱七八糟的连贯的低级错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfBq3umXh0hcQVZzqhcYbqCUP-VzpwAC8xdrG3KB-VZPxs5NhJx6FAEAAwIAA3cAAz0E" alt="8" /><figcaption>8</figcaption></figure><p></p><p>这道题我自己在做的时候，D 右下角的 B* 的 * 漏印了，但是不重要。</p><p>这道题我的思路是对的，不过最后还是没执行下去：</p><p>分块矩阵求逆只能用分块初等行变换，不能对某一块行「取逆」。即使看起来是取逆，但是更应该表述为同时左乘或者右乘一个什么东西。</p><p><span><span>(AE)\begin{pmatrix}A&amp;E\end{pmatrix}</span><span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span></span></span></span> 不是方阵，没有逆；分块矩阵的行只是若干行拼成的行组，本身不是矩阵。可用的操作只有三类：交换两块行；用可逆矩阵左乘某一块行；把某一块行左乘一个矩阵后加到另一块行。</p><p>以 <span><span>P=(AEOB)P=\begin{pmatrix}A&amp;E\\O&amp;B\end{pmatrix}</span><span><span><span></span><span>P</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>E</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span></span></span></span> 为例，把 <span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 与 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 并排。第一块行左乘 <span><span>A−1A^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>，第二块行左乘 <span><span>B−1B^{-1}</span><span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>：</p><span><span><span>(AEEOOBOE)⟶(EA−1A−1OOEOB−1).\left(\begin{array}{cc|cc}A&amp;E&amp;E&amp;O\\O&amp;B&amp;O&amp;E\end{array}\right)
\longrightarrow
\left(\begin{array}{cc|cc}E&amp;A^{-1}&amp;A^{-1}&amp;O\\O&amp;E&amp;O&amp;B^{-1}\end{array}\right).</span><span><span><span></span><span><span><span>(</span></span><span><span><span></span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>E</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>E</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span><span><span>)</span></span></span><span></span><span>⟶</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span></span><span><span><span><span><span><span></span><span><span>E</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span></span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p>第一块行减去「第二块行左乘 <span><span>A−1A^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>」，即第二块行左乘 <span><span>−A−1-A^{-1}</span><span><span><span></span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 加到第一块行：</p><span><span><span>(EOA−1−A−1B−1OEOB−1),\left(\begin{array}{cc|cc}E&amp;O&amp;A^{-1}&amp;-A^{-1}B^{-1}\\O&amp;E&amp;O&amp;B^{-1}\end{array}\right),</span><span><span><span></span><span><span><span>(</span></span><span><span><span></span><span><span><span><span><span><span></span><span><span>E</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span></span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span><span><span>)</span></span></span><span></span><span>,</span></span></span></span></span><p>于是</p><span><span><span>P−1=(A−1−A−1B−1OB−1).P^{-1}=\begin{pmatrix}A^{-1}&amp;-A^{-1}B^{-1}\\O&amp;B^{-1}\end{pmatrix}.</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p>当时做到这里没有继续，是想用左乘把 <span><span>(1,2)(1,2)</span><span><span><span></span><span>(</span><span>1</span><span>,</span><span></span><span>2</span><span>)</span></span></span></span> 的 <span><span>A−1A^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 化成 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span>。左乘对整块行生效，<span><span>A−1A^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 化成 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 的同时，<span><span>(1,1)(1,1)</span><span><span><span></span><span>(</span><span>1</span><span>,</span><span></span><span>1</span><span>)</span></span></span></span> 的 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 会被乘回 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，两块一起变，得不到 <span><span>(EO)\begin{pmatrix}E&amp;O\end{pmatrix}</span><span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span></span></span></span>。<span><span>(1,2)(1,2)</span><span><span><span></span><span>(</span><span>1</span><span>,</span><span></span><span>2</span><span>)</span></span></span></span> 的目标是 <span><span>OO</span><span><span><span></span><span>O</span></span></span></span>，而 <span><span>OO</span><span><span><span></span><span>O</span></span></span></span> 只能由「另一块行左乘后加过来」实现，也就是第二步的做法。</p><p>求分块伴随只需两件事：<span><span>PP</span><span><span><span></span><span>P</span></span></span></span> 可逆时 <span><span>P∗=∣P∣P−1P^*=|P|P^{-1}</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>P</span><span>∣</span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>；以及恒成立的 <span><span>PP∗=P∗P=∣P∣EPP^*=P^*P=|P|E</span><span><span><span></span><span>P</span><span><span>P</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span>P</span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>P</span><span>∣</span><span>E</span></span></span></span>。所以 <span><span>P∗P^*</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 由 <span><span>P−1P^{-1}</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 与 <span><span>∣P∣|P|</span><span><span><span></span><span>∣</span><span>P</span><span>∣</span></span></span></span> 决定，符号只可能来自 <span><span>P−1P^{-1}</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 中各块的位置与正负，以及 <span><span>∣P∣|P|</span><span><span><span></span><span>∣</span><span>P</span><span>∣</span></span></span></span> 的符号。<span><span>AA</span><span><span><span></span><span>A</span></span></span></span>、<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 不可逆时，用 <span><span>A+tEA+tE</span><span><span><span></span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>tE</span></span></span></span>、<span><span>B+tEB+tE</span><span><span><span></span><span>B</span><span></span><span>+</span><span></span></span><span><span></span><span>tE</span></span></span></span> 替换后令 <span><span>t→0t\to 0</span><span><span><span></span><span>t</span><span></span><span>→</span><span></span></span><span><span></span><span>0</span></span></span></span> 即可（两端都是 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 的多项式），结论不变。下文按 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶、<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 为 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 阶写，三、四两类涉及单位块，取本题的 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>、<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 同为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶。</p><p>一、对角型</p><span><span><span>(AOOB)−1=(A−1OOB−1),∣(AOOB)∣=∣A∣∣B∣,\begin{pmatrix}A&amp;O\\O&amp;B\end{pmatrix}^{-1}=\begin{pmatrix}A^{-1}&amp;O\\O&amp;B^{-1}\end{pmatrix},
\qquad
\left|\begin{pmatrix}A&amp;O\\O&amp;B\end{pmatrix}\right|=|A||B|,</span><span><span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>,</span><span></span><span></span><span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span><span>,</span></span></span></span></span><p>求逆与求行列式都不需要交换块行，所以没有符号：</p><span><span><span>(AOOB)∗=(∣B∣A∗OO∣A∣B∗).\begin{pmatrix}A&amp;O\\O&amp;B\end{pmatrix}^*=\begin{pmatrix}|B|A^*&amp;O\\O&amp;|A|B^*\end{pmatrix}.</span><span><span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p>注意对角块上配的是另一个块的行列式：<span><span>(1,1)(1,1)</span><span><span><span></span><span>(</span><span>1</span><span>,</span><span></span><span>1</span><span>)</span></span></span></span> 是 <span><span>∣B∣A∗|B|A^*</span><span><span><span></span><span>∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span>，不是 <span><span>∣A∣A∗|A|A^*</span><span><span><span></span><span>∣</span><span>A</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span>。</p><p>二、副对角型</p><span><span><span>(OABO)−1=(OB−1A−1O).\begin{pmatrix}O&amp;A\\B&amp;O\end{pmatrix}^{-1}=\begin{pmatrix}O&amp;B^{-1}\\A^{-1}&amp;O\end{pmatrix}.</span><span><span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p>块的位置互换，<span><span>A−1A^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 移到左下，这一步本身不产生符号。符号来自行列式：把第二块行（<span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 行）整体移到第一块行（<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 行）之上，需要 <span><span>m⋅nm\cdot n</span><span><span><span></span><span>m</span><span></span><span>⋅</span><span></span></span><span><span></span><span>n</span></span></span></span> 次相邻行交换，每次变号，所以</p><span><span><span>∣(OABO)∣=(−1)mn∣A∣∣B∣,\left|\begin{pmatrix}O&amp;A\\B&amp;O\end{pmatrix}\right|=(-1)^{mn}|A||B|,</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span></span></span></span></span></span></span></span></span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span><span>,</span></span></span></span></span><span><span><span>(OABO)∗=(O(−1)mn∣A∣B∗(−1)mn∣B∣A∗O).\begin{pmatrix}O&amp;A\\B&amp;O\end{pmatrix}^*=\begin{pmatrix}O&amp;(-1)^{mn}|A|B^*\\(-1)^{mn}|B|A^*&amp;O\end{pmatrix}.</span><span><span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span></span></span></span></span></span></span></span></span><span>∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span></span></span></span></span></span></span></span></span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p><span><span>(−1)n×m(-1)^{n\times m}</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>n</span><span>×</span><span>m</span></span></span></span></span></span></span></span></span></span></span></span> 的来源是交换次数等于两块行数之积，与 <span><span>n+mn+m</span><span><span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>m</span></span></span></span> 无关：<span><span>n=mn=m</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>m</span></span></span></span> 时 <span><span>n2n^2</span><span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 与 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 同奇偶，可以写成 <span><span>(−1)n(-1)^n</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>；<span><span>n=1n=1</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>、<span><span>m=2m=2</span><span><span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span> 时为 <span><span>+1+1</span><span><span><span></span><span>+</span><span>1</span></span></span></span>，若按 <span><span>(−1)n+m(-1)^{n+m}</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>m</span></span></span></span></span></span></span></span></span></span></span></span> 会算成 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>。</p><p>三、上三角型（本题）</p><p><span><span>∣P∣=∣A∣∣B∣|P|=|A||B|</span><span><span><span></span><span>∣</span><span>P</span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span></span></span></span>，不产生符号，<span><span>P−1P^{-1}</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 已在订正里用分块行变换算出。若不用行变换，也可以用 <span><span>PX=EPX=E</span><span><span><span></span><span>P</span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span>E</span></span></span></span> 解块方程，设 <span><span>X=(X11X12X21X22)X=\begin{pmatrix}X_{11}&amp;X_{12}\\X_{21}&amp;X_{22}\end{pmatrix}</span><span><span><span></span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>11</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>21</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>12</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>22</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span></span></span></span>：</p><span><span><span>AX11+X21=E,AX12+X22=O,BX21=O,BX22=E.AX_{11}+X_{21}=E,\quad AX_{12}+X_{22}=O,\quad BX_{21}=O,\quad BX_{22}=E.</span><span><span><span></span><span>A</span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>11</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>21</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>E</span><span>,</span><span></span><span></span><span>A</span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>12</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>22</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>O</span><span>,</span><span></span><span></span><span>B</span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>21</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>O</span><span>,</span><span></span><span></span><span>B</span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>22</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>E</span><span>.</span></span></span></span></span><p>由后两式 <span><span>X21=OX_{21}=O</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>21</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>O</span></span></span></span>、<span><span>X22=B−1X_{22}=B^{-1}</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>22</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>，代回前两式得 <span><span>X11=A−1X_{11}=A^{-1}</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>11</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>，以及</p><span><span><span>AX12=−X22=−B−1 ⟹ X12=−A−1B−1.AX_{12}=-X_{22}=-B^{-1}\ \Longrightarrow\ X_{12}=-A^{-1}B^{-1}.</span><span><span><span></span><span>A</span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>12</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>22</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span> </span><span></span><span>⟹</span><span> </span><span></span></span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>12</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>.</span></span></span></span></span><p>负号来自 <span><span>AX12=−X22AX_{12}=-X_{22}</span><span><span><span></span><span>A</span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>12</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>22</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>：右上块要把 <span><span>X22=B−1X_{22}=B^{-1}</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span><span>22</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 抵消掉，对应分块行变换里「第一块行减去第二块行左乘 <span><span>A−1A^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>」那一步。于是</p><span><span><span>(AEOB)∗=∣A∣∣B∣(A−1−A−1B−1OB−1)=(∣B∣A∗−A∗B∗O∣A∣B∗).\begin{pmatrix}A&amp;E\\O&amp;B\end{pmatrix}^*=|A||B|\begin{pmatrix}A^{-1}&amp;-A^{-1}B^{-1}\\O&amp;B^{-1}\end{pmatrix}
=\begin{pmatrix}|B|A^*&amp;-A^*B^*\\O&amp;|A|B^*\end{pmatrix}.</span><span><span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>E</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p>这里 <span><span>−∣A∣∣B∣A−1B−1=−(∣A∣A−1)(∣B∣B−1)=−A∗B∗-|A||B|A^{-1}B^{-1}=-(|A|A^{-1})(|B|B^{-1})=-A^*B^*</span><span><span><span></span><span>−</span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>(</span><span>∣</span><span>A</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>)</span><span>(</span><span>∣</span><span>B</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span>，块的顺序不能交换，所以不是 <span><span>−B∗A∗-B^*A^*</span><span><span><span></span><span>−</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span>。本题 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>、<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 同为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶，答案为 D。下三角型同理：</p><span><span><span>(AOCB)−1=(A−1O−B−1CA−1B−1),(AOCB)∗=(∣B∣A∗O−B∗CA∗∣A∣B∗).\begin{pmatrix}A&amp;O\\C&amp;B\end{pmatrix}^{-1}=\begin{pmatrix}A^{-1}&amp;O\\-B^{-1}CA^{-1}&amp;B^{-1}\end{pmatrix},
\qquad
\begin{pmatrix}A&amp;O\\C&amp;B\end{pmatrix}^*=\begin{pmatrix}|B|A^*&amp;O\\-B^*CA^*&amp;|A|B^*\end{pmatrix}.</span><span><span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>C</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>−</span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>C</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>,</span><span></span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>C</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>−</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span>C</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p>四、混合型</p><span><span><span>∣(OABE)∣=(−1)mn∣A∣∣B∣\left|\begin{pmatrix}O&amp;A\\B&amp;E\end{pmatrix}\right|=(-1)^{mn}|A||B|</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span></span></span></span></span></span></span></span></span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span></span></span></span></span><p>（先交换两块行，化为分块下三角）。求逆仍用 <span><span>PX=EPX=E</span><span><span><span></span><span>P</span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span>E</span></span></span></span>，设 <span><span>X=(X1X2X3X4)X=\begin{pmatrix}X_1&amp;X_2\\X_3&amp;X_4\end{pmatrix}</span><span><span><span></span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span><span>X</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span><span><span>X</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span><span>X</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span><span><span>X</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span></span></span></span>，则 <span><span>AX3=EAX_3=E</span><span><span><span></span><span>A</span><span><span>X</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>E</span></span></span></span>、<span><span>AX4=OAX_4=O</span><span><span><span></span><span>A</span><span><span>X</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>O</span></span></span></span>、<span><span>BX1+X3=OBX_1+X_3=O</span><span><span><span></span><span>B</span><span><span>X</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>O</span></span></span></span>、<span><span>BX2+X4=EBX_2+X_4=E</span><span><span><span></span><span>B</span><span><span>X</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>E</span></span></span></span>，即 <span><span>X3=A−1X_3=A^{-1}</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>、<span><span>X4=OX_4=O</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>O</span></span></span></span>、<span><span>X1=−B−1A−1X_1=-B^{-1}A^{-1}</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>、<span><span>X2=B−1X_2=B^{-1}</span><span><span><span></span><span><span>X</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>，故</p><span><span><span>(OABE)−1=(−B−1A−1B−1A−1O).\begin{pmatrix}O&amp;A\\B&amp;E\end{pmatrix}^{-1}=\begin{pmatrix}-B^{-1}A^{-1}&amp;B^{-1}\\A^{-1}&amp;O\end{pmatrix}.</span><span><span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>−</span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p>再乘 <span><span>∣P∣|P|</span><span><span><span></span><span>∣</span><span>P</span><span>∣</span></span></span></span>：</p><span><span><span>(OABE)∗=((−1)mn+1B∗A∗(−1)mn∣A∣B∗(−1)mn∣B∣A∗O).\begin{pmatrix}O&amp;A\\B&amp;E\end{pmatrix}^*=\begin{pmatrix}(-1)^{mn+1}B^*A^*&amp;(-1)^{mn}|A|B^*\\(-1)^{mn}|B|A^*&amp;O\end{pmatrix}.</span><span><span><span></span><span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span><span>+</span><span>1</span></span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span></span></span></span></span></span></span></span></span><span>∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span></span></span></span></span></span></span></span></span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>.</span></span></span></span></span><p>右上、左下的 <span><span>(−1)mn(-1)^{mn}</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span></span></span></span></span></span></span></span></span></span></span></span> 来自 <span><span>∣P∣|P|</span><span><span><span></span><span>∣</span><span>P</span><span>∣</span></span></span></span>（本题 <span><span>m=nm=n</span><span><span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span></span></span></span>，即 <span><span>(−1)n(-1)^n</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>），左上的负号来自 <span><span>−B−1A−1-B^{-1}A^{-1}</span><span><span><span></span><span>−</span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>。</p><p>最后用 <span><span>PP∗=∣P∣EPP^*=|P|E</span><span><span><span></span><span>P</span><span><span>P</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>P</span><span>∣</span><span>E</span></span></span></span> 核对，以 D 为例：</p><span><span><span>(AEOB)(∣B∣A∗−A∗B∗O∣A∣B∗)=(∣A∣∣B∣E−AA∗B∗+∣A∣B∗O∣A∣∣B∣E)=(∣A∣∣B∣EOO∣A∣∣B∣E),\begin{pmatrix}A&amp;E\\O&amp;B\end{pmatrix}\begin{pmatrix}|B|A^*&amp;-A^*B^*\\O&amp;|A|B^*\end{pmatrix}
=\begin{pmatrix}|A||B|E&amp;-AA^*B^*+|A|B^*\\O&amp;|A||B|E\end{pmatrix}
=\begin{pmatrix}|A||B|E&amp;O\\O&amp;|A||B|E\end{pmatrix},</span><span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>E</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span><span>E</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>−</span><span>A</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span><span>E</span></span></span><span><span></span><span><span>O</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>O</span></span></span><span><span></span><span><span>∣</span><span>A</span><span>∣∣</span><span>B</span><span>∣</span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>,</span></span></span></span></span><p>最后一步用 <span><span>AA∗=∣A∣EAA^*=|A|E</span><span><span><span></span><span>A</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>A</span><span>∣</span><span>E</span></span></span></span>。C 的右上块为 <span><span>−AB∗A∗+∣A∣B∗-AB^*A^*+|A|B^*</span><span><span><span></span><span>−</span><span>A</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span>，一般不为 <span><span>OO</span><span><span><span></span><span>O</span></span></span></span>，错在把 <span><span>A−1B−1A^{-1}B^{-1}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 写成 <span><span>B−1A−1B^{-1}A^{-1}</span><span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>；A、B 的对角块配成 <span><span>∣A∣B∗|A|B^*</span><span><span><span></span><span>∣</span><span>A</span><span>∣</span><span><span>B</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span>、<span><span>∣B∣A∗|B|A^*</span><span><span><span></span><span>∣</span><span>B</span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span>，取 <span><span>n=1n=1</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>、<span><span>A=(a)A=(a)</span><span><span><span></span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>a</span><span>)</span></span></span></span>、<span><span>B=(b)B=(b)</span><span><span><span></span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>b</span><span>)</span></span></span></span> 即可排除，此时 <span><span>P∗=(b−10a)P^*=\begin{pmatrix}b&amp;-1\\0&amp;a\end{pmatrix}</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>b</span></span></span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>−</span><span>1</span></span></span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCfFq3uoLTAiEg6-jLgwahup-niwttgAC9BdrG3KB-VYtoW7SFIINfwEAAwIAA3cAAz0E" alt="16" /><figcaption>16</figcaption></figure><p></p><p>第 16 题可以注意一下方法，这道题我的方法是硬算出 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 和 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span>，分类讨论最后都做出来是 8。</p></section><section><h3>2024 真题<a href="#2024-真题"><span>#</span></a></h3><ul>
<li>完成时间：20261027</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section><section><h3>2025 真题<a href="#2025-真题"><span>#</span></a></h3><ul>
<li>完成时间：20261028</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section><section><h3>2026 真题<a href="#2026-真题"><span>#</span></a></h3><ul>
<li>完成时间：20261029</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section></section>
<section><h2>27 张八<a href="#27-张八"><span>#</span></a></h2><ul>
<li>完成时间：20261018-20261023</li>
<li>平均分：</li>
<li>平均作答时间：</li>
</ul><section><h3>27 张八 1<a href="#27-张八-1"><span>#</span></a></h3><ul>
<li>完成时间：20261025</li>
<li>分数：123
<ul>
<li>选择：-5</li>
<li>填空：-5</li>
<li>大题：-17</li>
</ul>
</li>
<li>时间：120+15</li>
</ul><p>怎么说呢，出师不利。我以为这份卷子可以 130 多的，结果最后只有 123。因为我想出来这道比较偏的线代怎么做了，然后还检查了选填，想着怎么说 130+，或者至少 130 附近是有的，结果就这个分数。</p><p>先复盘一下，首先是态度问题，这次态度好了不少，选填确实花了 15min 检查一遍，但是大题没验算。以后规定，对于所有的大题，都至少需要验算积分部分，尤其是积分上下限。</p><p>第 2 题这个属于经验问题了，A 可能是错的，所以不选，B 一定是对的，更强，所以选。再加上检查的时候想当然了。</p><p>第 14 题这个是非常经典的低级错误，求导的时候，<span><span>(1−t)−2(1-t)^{-2}</span><span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>t</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>−</span><span>2</span></span></span></span></span></span></span></span></span></span></span></span> 求导出来是 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>，而不是 <span><span>−2-2</span><span><span><span></span><span>−</span><span>2</span></span></span></span>，导致错误。</p><p>第 19 题这个算 x0 暂时不做评价，确实一下没想出来。</p><p>倒数第二题积分上下限有又写错了！我都不知道要说自己什么好了。</p><p>最后是证明题，证明题那 12 分第一方面题设条件看错了，题设完全没写二阶可导之类的东西。然后即便给了其实也是不会做。</p><p>写到这里，突然想起来了：</p><p>我貌似这次没有干一件特别重要的事情：</p><p>在开卷子的开头写上三行：</p><ol>
<li>牛莱公式</li>
<li>y*</li>
<li>积分区域</li>
</ol><p>果不其然，这次又是牛莱公式错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCetq3iOEqKIGcYA6eZ0CzCdCHvIlhQACNxJrG3KB8VYTz_mDCDzmOwEAAwIAA3cAAz0E" alt="2" /><figcaption>2</figcaption></figure><p></p><p>本题错选为 A，确确实实算出来 F’(0) 在 x 趋于 0+ 和 0—的时候分别是什么了，但是理解错题目意思了。对于 A，当情况是 B 的时候，确确实实是可导的。</p><p>这个就属于积累了，积累一下下次肯定就不会错了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCexq3iQDj1uHikyq1-awdhz8D7o2gwACOhJrG3KB8Vb6ZuZl0BMNjAEAAwIAA3kAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题最后的答案少乘了一个 2，具体原因上面已经说了，这里就不重复了。对于求导，一定是要仔细认真的求，而不是想当然求解。尤其是对于 <span><span>(1−t)−2(1-t)^{-2}</span><span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>t</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>−</span><span>2</span></span></span></span></span></span></span></span></span></span></span></span> 类式子，我认为我的问题是——</p><p>u/v 求导与 1/u 求导混用导致的想当然错误。</p><p>也错过特别多次了，需要谨慎。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCe1q3iUI-z34CpmCR5je9RWOipZghgACOxJrG3KB8VaL3FfuAV_D1QEAAwIAA3cAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题 -4 这个是确实一下不知道怎么求 A 的横坐标，然而可以类比 ax^2+bx+c 即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCe5q3iU9BbpqjOJ5JC-gF0vIKYTVkgACPBJrG3KB8VY-3M5xe3ZmPQEAAwIAA3cAAz0E" alt="20" /><figcaption>20</figcaption></figure><p></p><p>本题 -10，扫了一眼答案貌似是利用割线去做，回头再来看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCe9q3iVt3xd2N5mZ7RRu8RVGMYfFZgACPRJrG3KB8VbXBYTF1VIhAgEAAwIAA3kAAz0E" alt="21" /><figcaption>21</figcaption></figure><p></p><p>本题 -3，对 y 的积分积分上限应该是 pi/2，而不是 1。</p><p>再次总结一下，当你觉得一切顺风的时候，你就要死了！</p></section><section><h3>27 张八 2<a href="#27-张八-2"><span>#</span></a></h3><ul>
<li>完成时间：20261030</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section><section><h3>27 张八 3<a href="#27-张八-3"><span>#</span></a></h3><ul>
<li>完成时间：20261031</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section><section><h3>27 张八 4<a href="#27-张八-4"><span>#</span></a></h3><ul>
<li>完成时间：20261101</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section><section><h3>27 张八 5<a href="#27-张八-5"><span>#</span></a></h3><ul>
<li>完成时间：20261102</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section><section><h3>27 张八 6<a href="#27-张八-6"><span>#</span></a></h3><ul>
<li>完成时间：20261103</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section><section><h3>27 张八 7<a href="#27-张八-7"><span>#</span></a></h3><ul>
<li>完成时间：20261104</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section><section><h3>27 张八 8<a href="#27-张八-8"><span>#</span></a></h3><ul>
<li>完成时间：20261105</li>
<li>分数：
<ul>
<li>选择：</li>
<li>填空：</li>
<li>大题：</li>
</ul>
</li>
<li>时间：</li>
</ul></section></section>
<section><h2>880 综合 2 刷<a href="#880-综合-2-刷"><span>#</span></a></h2><section><h3>880 综合 2 刷第 3 章<a href="#880-综合-2-刷第-3-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADV2rDhjYzqcZd65_KxjHbbBi0eq_bAAKCEmsbgF8gVg3xNiPfVPiYAQADAgADeAADPQQ" alt="3.1.2" /><figcaption>3.1.2</figcaption></figure><p></p><p>这道题一开始没做出来，不过后面冷静下来了，也是想出来要怎么做。也就是先把 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 画出来，然后再去讨论 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span>。但是，我分别讨论 <span><span>x&gt;ex&gt;e</span><span><span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>e</span></span></span></span> 和 <span><span>x&lt;ex&lt;e</span><span><span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>e</span></span></span></span> 之后，画出 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 图像，然后就直接选了 B。显然 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 连续但不可导，所以 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 是可导的。</p><p>对于结论 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 可不可导，如果 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 是连续的，或者有可去间断点，那么 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 可导；如果 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 有跳跃间断点，那么 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 连续但不可导。</p><p>这道题结论的应用出现了很大的问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADWGrDhzrc-9wBN3_XonPlWL-Vy6UmAAKDEmsbgF8gVmcU5r67TvqpAQADAgADeAADPQQ" alt="3.1.9" /><figcaption>3.1.9</figcaption></figure><p></p><p>本题完全没有思路。</p><p>这道题总结两个点，第一是如果出现了米奇妙妙 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，可以从对 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 从 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 的积分思考，第二是数形结合，这道题应该利用函数的凹凸性绘图来解答。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADWWrDh4I5O3_cn9QGyS9Q49laHJNyAAKEEmsbgF8gVtH9T4LFbwO1AQADAgADeAADPQQ" alt="3.1.13" /><figcaption>3.1.13</figcaption></figure><p></p><p>本题没什么思路。碰到这类题，应该从奇偶性下手，将原式切分为 <span><span>−b-b</span><span><span><span></span><span>−</span><span>b</span></span></span></span> 到 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 进行讨论，再利用对称性，就迎刃而解了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADWmrDk2E76_hTBddf5LXZyVC3DTZjAAKrEmsbgF8gVtXMYTLHy2zzAQADAgADeAADPQQ" alt="3.1.14" /><figcaption>3.1.14</figcaption></figure><p></p><p>本题依旧没什么思路。然而这道题不应该。使用求 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的面积的公式，也就是 <span><span>12∫0πr2 dθ\frac{1}{2}\int_0^{\pi}r^2\,\mathrm{d}\theta</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span>0</span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>d</span><span>θ</span></span></span></span>。没反应过来，其实也可以利用二重积分去算，但是对这类题确实太少见了。</p><p>然而在知道这个去化简之后，还是有点不会做。一定要记住，无论对什么区间划分，都是划分为 n 份。所以最后应该是：</p><span><span><span>b−an(a+(b−a)in)\frac{b-a}{n}\left(a+\frac{(b-a)i}{n}\right)</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>b</span><span></span><span>−</span><span></span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span><span>(</span></span><span>a</span><span></span><span>+</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>(</span><span>b</span><span></span><span>−</span><span></span><span>a</span><span>)</span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span></span><p>遇到不会的时候，一定要把这个式子套上去看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADW2rDlWqjeTiZR8yRm51X9uLHX_UtAALEEmsbgF8gVnlGziXpEf03AQADAgADeAADPQQ" alt="3.1.16" /><figcaption>3.1.16</figcaption></figure><p></p><p>错选为 C，属于低级错误。这道题第一步的时候换元法，抄成了 <span><span>s+x/t=us+x/t=u</span><span><span><span></span><span>s</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span>/</span><span>t</span><span></span><span>=</span><span></span></span><span><span></span><span>u</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADXGrDmRRcqP42gyJn5rZV4_rCBa_5AALIEmsbgF8gVhtBCKs_SgjzAQADAgADeAADPQQ" alt="3.1.21" /><figcaption>3.1.21</figcaption></figure><p></p><p>错选为 B。属于低级错误，<span><span>x1−px^{1-p}</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>1</span><span>−</span><span>p</span></span></span></span></span></span></span></span></span></span></span></span> 下去的时候，<span><span>xpx^p</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>p</span></span></span></span></span></span></span></span></span></span></span> 不应该消掉。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADXWrDnqPXWEeugZlsz_J0OvaiAQO5AALREmsbgF8gVgehAAHzTIRtVAEAAwIAA3gAAz0E" alt="3.2.2" /><figcaption>3.2.2</figcaption></figure><p></p><p>答案是对的，但是方法是错的。这道题不可以把德塔 x 丢进去。正确的解法应该是拆，然后换元前面的。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADXmrDn4FKiLMOC0ihwzlLgVqLfOc_AALSEmsbgF8gVg2TZ368QSE5AQADAgADeAADPQQ" alt="3.2.5" /><figcaption>3.2.5</figcaption></figure><p></p><p>很多东西不明确。第一是极坐标的面积公式，其实依旧可以用二重积分去推；第二是积分的定义域，定义域一定要看清楚是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>π4\frac{\pi}{4}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，而不是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADX2rDoAfmQvVzY3BCnWfD-NFhDUq3AALTEmsbgF8gVkeSivyjazEtAQADAgADeAADPQQ" alt="3.2.7" /><figcaption>3.2.7</figcaption></figure><p></p><p>其实这些题目之前都做过，但是还是不会做。这道题应该用换元法做，令 <span><span>x=rcos⁡θx=r\cos\theta</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>cos</span><span></span><span>θ</span></span></span></span>，<span><span>y=rsin⁡θy=r\sin\theta</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>sin</span><span></span><span>θ</span></span></span></span>。主要是破题口问题，计算要小心，这道题计算也不好算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADYGrDosaZwh8tZ9AC0tuotm60emyMAALdEmsbgF8gVtDKTMD4TlBMAQADAgADeAADPQQ" alt="3.2.8" /><figcaption>3.2.8</figcaption></figure><p></p><p>这道题和第 5 题类似啊，都是凑出来一个 <span><span>p2p^2</span><span><span><span></span><span><span>p</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，不同的是，这道题我想复杂了，硬是把那串式子给化简了，但是事实上不用化简直接算就完事了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADYWrDqxP8d45EoN2MJpRoF2fdJA-DAALrEmsbgF8gVufA39x6zm4aAQADAgADbQADPQQ" alt="3.2.19" /><figcaption>3.2.19</figcaption></figure><p></p><p>这道题做的是对的，但是需要注意方法。对于反常积分而言，不可以直接求导，而是应该利用取一点分开的方法讨论，这个方法在讨论 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 积分那里比较常见，在这里也别忘了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADYmrD2qKnOEGwEXIlMW5tlUQ9frGpAAITFGsbgF8gVj1HvFU7Umm5AQADAgADeAADPQQ" alt="3.2.9" /><figcaption>3.2.9</figcaption></figure><p></p><p>这道题大体做的是对的，但是，在求变限积分导数的时候，对 <span><span>−x2-x^2</span><span><span><span></span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 求导，求出来是 <span><span>−2x-2x</span><span><span><span></span><span>−</span><span>2</span><span>x</span></span></span></span>，结果没有和前面的 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 运算，就带着这个 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 一直算到了最后。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADyWrE_Ti5cP2yeOazw_qysbVLxszYAAJJFGsbxNooVreaMixFSRxdAQADAgADbQADPQQ" alt="3.3.10" /><figcaption>3.3.10</figcaption></figure><p></p><p>思路是对的，但是算错了，这道题草稿太乱了，也不知道哪算错了，再算一遍看看。（答案是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 我算出来 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>）</p><p>找到了问题，<span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 乘 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 之后，求导还是按照 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 求的。</p><p>以及最后一步 <span><span>xsin⁡x\frac{x}{\sin x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>s</span><span>i</span><span>n</span></span><span></span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 直接写成 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQADymrE_7e1yiINzXTkcC0U5qsrvo8NAAJPFGsbxNooVhFPq1-Wukz9AQADAgADeQADPQQ" alt="3.3.10 订正" /><figcaption>3.3.10 订正</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARJqxhKAC09nkEpCNUhNKx3dEcmKngACaxNrGz_BMFawMsCylzL1sQEAAwIAA3gAAz0E" alt="3.3.22" /><figcaption>3.3.22</figcaption></figure><p></p><p>本题没什么思路，一刷的时候使用的是把 <span><span>tan⁡x\tan x</span><span><span><span></span><span>tan</span><span></span><span>x</span></span></span></span> 变成 <span><span>sec⁡x\sec x</span><span><span><span></span><span>sec</span><span></span><span>x</span></span></span></span>，但是现在做不出来了。</p><p>原来的方法是很容易可以解出来 <span><span>an+an−2=1n−1a_n+a_{n-2}=\frac{1}{n-1}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，然后就不会做了。</p><p>再后面，显然 <span><span>an&lt;an−1a_n&lt;a_{n-1}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，所以只要把 <span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 替换为 <span><span>an−2a_{n-2}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 就可以做出来了，另一侧则是利用 <span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>an−2a_{n-2}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的关系。</p><p>瞄了一眼答案，是用换元法，就迎刃而解了（但是做的时候抄漏了 <span><span>t2t^2</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 的 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARNqxhNDUJj3ZLbKmI_-XbWcNlrnkAACbhNrGz_BMFaJUtby0MJEOgEAAwIAA3kAAz0E" alt="3.3.22 订" /><figcaption>3.3.22 订</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARRqxhS7aN0sV-Usm4D0E07qmsnqtgACchNrGz_BMFYC5h-0_WlqLAEAAwIAA20AAz0E" alt="3.3.23" /><figcaption>3.3.23</figcaption></figure><p></p><p>这道题的第一问不适合用华里士公式（循环论证了），而第二问则是没想明白要怎么证明 <span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的单调性，事实上只要做差相减即可。</p><p>并且，这道题答案给的复杂了，可以先用区间再现消去 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，然后就可以很轻松的证明了（这也是为什么答案直接一上来就把 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 凑进去的原因）。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARVqxhnQ-nnBByDjC1dAclPuwKdeKwACjBNrGz_BMFY25Imi7TVT5AEAAwIAA3gAAz0E" alt="3.3.25" /><figcaption>3.3.25</figcaption></figure><p></p><p>这道题其实有思路，但是最后没做出来，一开始比分部积分是对的，然后就不会做了。</p><p>其实原因在于没有考虑 <span><span>+1−1+1-1</span><span><span><span></span><span>+</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 的操作。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARZqxiiWwU4ZDEbkZBINSyf7kVBuYAACoBNrGz_BMFblaEl3saC12QEAAwIAA3gAAz0E" alt="3.2.32" /><figcaption>3.2.32</figcaption></figure><p></p><p>本题没想出来怎么做（第一问）</p><p>答案是利用区间再现。</p><p>所以，出现米奇妙妙 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的时候，可以从两方面考虑，一方面是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 从 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 的积分，第二是区间再现（尤其是三角函数和周期函数）</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARdqxjFhB3JIe7AQJn9qNWm72Z0F4AAC0BNrGz_BMFbac5BkQwKAngEAAwIAA3gAAz0E" alt="3.2.33" /><figcaption>3.2.33</figcaption></figure><p></p><p>这道题做的是对的，利用的是换元法。</p><p>不过这道题还可以用拉格朗日中值定理，值得注意。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARhqxjKFTl0RyImU-uaMHVZTf4JPVAAC0RNrGz_BMFYR9hzivrDmDAEAAwIAA3gAAz0E" alt="3.2.35" /><figcaption>3.2.35</figcaption></figure><p></p><p>值得注意的低级错误，最后一步算错了。这道题最后一步算出来是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>3\sqrt{3}</span><span><span><span></span><span><span><span><span><span><span></span><span><span>3</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span>，对根号下的 <span><span>4−x24-x^2</span><span><span><span></span><span>4</span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 积分，此时可以利用几何法，但是要注意并不是 <span><span>23π\frac{2}{3}\pi</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>π</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARlqxjMbJErozudfKAcIpmLslYVsFAAC1RNrGz_BMFaC1_EGHzoX3QEAAwIAA3gAAz0E" alt="3.2.36" /><figcaption>3.2.36</figcaption></figure><p></p><p>本题单纯没算完，计算量太大了（三角函数的 <span><span>44</span><span><span><span></span><span>4</span></span></span></span> 次方，并且还是 <span><span>π4\frac{\pi}{4}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 到 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>），这道题可以采用直角坐标系的方法来算。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACARpqxjMxd37LW4ufrc9SyoUR159JfgAC1hNrGz_BMFanNlM1SYi_hQEAAwIAA3gAAz0E" alt="3.2.37" /><figcaption>3.2.37</figcaption></figure><p></p><p>注意定义域，<span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的定义域是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>π\pi</span><span><span><span></span><span>π</span></span></span></span>，而没有 <span><span>π\pi</span><span><span><span></span><span>π</span></span></span></span> 到 <span><span>2π2\pi</span><span><span><span></span><span>2</span><span>π</span></span></span></span>，以此类推。</p></section><section><h3>880 综合 2 刷第 4 章<a href="#880-综合-2-刷第-4-章"><span>#</span></a></h3><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_dq0zwvUP26gb2FGnR52h0ibe-BGAACzxlrG-BrmFbZ17Kmb3AEZQEAAwIAA3gAAz0E" alt="4.1.1" /><figcaption>4.1.1</figcaption></figure><p></p><p>本题错选为 D，是以为要考虑 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 单独的路径。</p><p>对二重积分极限的定义理解错误。</p><span><span><span>lim⁡x→0y→0f(x,y)x2+y2=1\lim_{\substack{x \to 0 \\ y \to 0}} \frac{f(x,y)}{x^2 + y^2} = 1</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span><span><span></span><span><span>x</span><span>→</span><span>0</span></span></span><span><span></span><span><span>y</span><span>→</span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></span><p>这是二重极限，在多元微积分的定义里，二重极限写作：</p><span><span><span>lim⁡(x,y)→(0,0)g(x,y)=A\lim_{(x,y) \to (0,0)} g(x,y) = A</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>(</span><span>x</span><span>,</span><span>y</span><span>)</span><span>→</span><span>(</span><span>0</span><span>,</span><span>0</span><span>)</span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>g</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>A</span></span></span></span></span><p>它的严格 <span><span>ε\varepsilon</span><span><span><span></span><span>ε</span></span></span></span>-<span><span>δ\delta</span><span><span><span></span><span>δ</span></span></span></span> 定义是：对于任意的 <span><span>ε&gt;0\varepsilon &gt; 0</span><span><span><span></span><span>ε</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，都存在 <span><span>δ&gt;0\delta &gt; 0</span><span><span><span></span><span>δ</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，使得只要距离满足：</p><span><span><span>0&lt;x2+y2&lt;δ0 &lt; \sqrt{x^2 + y^2} &lt; \delta</span><span><span><span></span><span>0</span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>δ</span></span></span></span></span><p>就有 <span><span>∣g(x,y)−A∣&lt;ε|g(x,y) - A| &lt; \varepsilon</span><span><span><span></span><span>∣</span><span>g</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>A</span><span>∣</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>ε</span></span></span></span>。</p><p>而不是偏导数所想的只对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 或 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 有要求。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_hq003ideUXK8Xu7HB1jNzhK-QRPQAC8BlrG-BrmFZM7xafYrovhQEAAwIAA3gAAz0E" alt="4.2.4" /><figcaption>4.2.4</figcaption></figure><p></p><p>经典的错误，标准的零分，<span><span>x2+y2x^2+y^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 套到平房里，又想当然没有加一整个的平方，从而引起错误。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_lq004LHDyQyArXRXaveOQ307fq8gAC8RlrG-BrmFZ2KOzqSdcK8gEAAwIAA3gAAz0E" alt="4.3.1" /><figcaption>4.3.1</figcaption></figure><p></p><p>计算量奇大无比，最后的问题是 <span><span>dzdt\frac{\mathrm{d}z}{\mathrm{d}t}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>t</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>z</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 算错了，这个应该是 <span><span>12\frac{1}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，而我当成 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 算了，所以最后错了。</p><p>最后应该是 <span><span>(−6−12)/4\left(-6-\frac{1}{2}\right)/4</span><span><span><span></span><span><span><span>(</span></span><span>−</span><span>6</span><span></span><span>−</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span></span><span>/4</span></span></span></span>，我自己是把 <span><span>−12-\frac{1}{2}</span><span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 代成 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 算了。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_tq01dmsvSLm6h1eUcnSSDMGEJhOAACCxprG-BrmFbCS2iJ2a-YZAEAAwIAA3gAAz0E" alt="4.3.4" /><figcaption>4.3.4</figcaption></figure><p></p><p>漏解。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDFq1Khfotb6LjYd66URk28hWUPErgACgRJrG1-fqVauNliWVW86qQEAAwIAA3gAAz0E" alt="4.3.7" /><figcaption>4.3.7</figcaption></figure><p></p><p>这道题确实有说法，计算出来了 3 个式子之后，会发现前两个只有 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 解。由于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 解不满足第 3 个式子，所以前两个式子线性相关！</p><p>这个思想的迁移确实非常精彩！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDJq1Lq9BlwAATUtQLvldTHlwdnu3loAAr0Saxtfn6lW7rGsIlCIX1sBAAMCAAN4AAM9BA" alt="4.3.18" /><figcaption>4.3.18</figcaption></figure><p></p><p>这道题我就觉得没必要继续算下去了，思路掌握了就可以。到原点的距离公式会设即可。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDNq1Lrqy8MN0KMYMVXknKG9pH9qcQACvhJrG1-fqVYor879lGJ94gEAAwIAA3kAAz0E" alt="4.3.18 解" /><figcaption>4.3.18 解</figcaption></figure><p></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDVq1LvNarw0I1sHZ1K25ruolpLMnAACwRJrG1-fqVYYkExaaKh1QwEAAwIAA3gAAz0E" alt="4.3.19" /><figcaption>4.3.19</figcaption></figure><p></p><p>这道题我认为也是没必要去算了，会很神秘。我感觉到了现在这个阶段，我不想二刷 880 的原因可能是我没把握清楚题目难度，或者说我没办法判断这是不是怪偏难。</p><p>所以我说我认为策略有点问题，应该先写近些年的真题，然后再来二刷看看。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCDRq1Lurt7yP6pWpOqvMsQvH_h6UrQACvxJrG1-fqVbm4AtZXKR0ZAEAAwIAA3gAAz0E" alt="4.3.19 解" /><figcaption>4.3.19 解</figcaption></figure><p></p></section></section>
<section><h2>660 1 刷（仅挑着做）<a href="#660-1-刷仅挑着做"><span>#</span></a></h2><section><h3>660 1 刷填空题第 7 章 - 微分方程<a href="#660-1-刷填空题第-7-章---微分方程"><span>#</span></a></h3><p>尽量化简成 <span><span>y=f(x)y=f(x)</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 的形式或者 <span><span>x=f(y)x=f(y)</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>y</span><span>)</span></span></span></span> 的形式。</p></section></section>
<section><h2>24 超越<a href="#24-超越"><span>#</span></a></h2><section><h3>24 超越 1<a href="#24-超越-1"><span>#</span></a></h3></section><section><h3>24 超越 1 2 刷<a href="#24-超越-1-2-刷"><span>#</span></a></h3></section><section><h3>24 超越 2<a href="#24-超越-2"><span>#</span></a></h3></section><section><h3>24 超越 3<a href="#24-超越-3"><span>#</span></a></h3></section><section><h3>24 超越 4<a href="#24-超越-4"><span>#</span></a></h3></section><section><h3>24 超越 5<a href="#24-超越-5"><span>#</span></a></h3></section><section><h3>24 超越 6<a href="#24-超越-6"><span>#</span></a></h3></section><section><h3>24 超越 7<a href="#24-超越-7"><span>#</span></a></h3></section><section><h3>24 超越 8<a href="#24-超越-8"><span>#</span></a></h3><ul>
<li>完成时间：20261024</li>
<li>分数：95（-5）
<ul>
<li>选择题：-30（-5）</li>
<li>填空题：-5</li>
<li>大题：-4-8-6</li>
</ul>
</li>
<li>时间：105</li>
</ul><p>决定先写张八了。超越系列的卷子先丢一边，而且也应该先写 25 超越。</p><p>今天允许自己摆烂一天思考进程。</p><p>而且今天也是懒得检查加一堆很陌生的题所以直接开始摆烂。</p><p>感觉本质上是超越的题有一些些偏和难，但是上岸的学长就考的很好。</p><p>我还是觉得得先把真题写完，然后写张八，而不是继续死磕超越。</p><p>27 李 6 只有一点点怪偏难的题（第 6 份除外），所以也应该秉持信念，好好学，而不是像现在这样子感觉纯把考研当儿戏。</p></section><section><h3>24 超越 9<a href="#24-超越-9"><span>#</span></a></h3><ul>
<li>完成时间：20261022</li>
<li>分数：127(-5)
<ul>
<li>选择题：（-5）</li>
<li>填空题：-15</li>
<li>大题：-8</li>
</ul>
</li>
<li>时间：120+15</li>
</ul><p>检查了 15min，然后不想检查了，直接对答案。</p><p>第 4 题确实思路问题，第 11 题是行为习惯问题，第 13 是滥用区间再现，第 15 是懒得算，第 18 题也是思路没顺下来。那这样的话这张卷子应该至少考 139。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCchq3BIaNmF92WmeKQJpqnt5hf8eJAAC1Q9rG2MQ4FbulXMqTAHvHgEAAwIAA3cAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>（A 选项勘误为 <span><span>≤−1\le-1</span><span><span><span></span><span>≤</span><span></span></span><span><span></span><span>−</span><span>1</span></span></span></span>）</p><p>第 4 题猜了一个 B，因为勘误改了 A 选项。</p><p>利用弦的特性积分，如下图所示。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCclq3BQn9s_n6gTCMwZkjsQoEHDm1AAC1w9rG2MQ4FZEDvhrlDV0KwEAAwIAA3kAAz0E" alt="4 订" /><figcaption>4 订</figcaption></figure><p></p><p>关于利用弦积分，我觉得其实也算是比较常见的套路，需要注意！</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcdq3BHx78ULa8Z1FIHBZiVYpzKdCQAC1A9rG2MQ4FYuOFY0-VDGFwEAAwIAA3cAAz0E" alt="11" /><figcaption>11</figcaption></figure><p></p><p>第 11 题，属于低级错误的不规范范畴。<span><span>f′(y)f'(y)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>y</span><span>)</span></span></span></span> 我简写为 <span><span>f′f'</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span>，但是 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 也要被求导，所以就忽略了，而且最后的答案应该是带 <span><span>f′(0)f'(0)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>0</span><span>)</span></span></span></span> 的，而不是只带 <span><span>f′f'</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span>。</p><p>第 13 题应该就是单纯算错了，我没去检查这道题哪里算错了。</p><p>订正如下图所示：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcZq3BHdcEsf4sKF-Dfld3PET1PtewAC0w9rG2MQ4Fa0ym9SHGRoYQEAAwIAA3kAAz0E" alt="13 订" /><figcaption>13 订</figcaption></figure><p></p><p>滥用区间再现！！！</p><p>并且需要注意 <span><span>ln⁡(22)=−12ln⁡2\ln\left(\frac{\sqrt{2}}{2}\right)=-\frac{1}{2}\ln 2</span><span><span><span></span><span>ln</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>ln</span><span></span><span>2</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcRq3AsdUbnTB7HhU54JMVMT9oEq6QAC0A9rG2MQ4Fb37zN_7KCrPgEAAwIAA3cAAz0E" alt="15" /><figcaption>15</figcaption></figure><p></p><p>第 15 题本质上是懒得算了，准备丢给检查的时候算，然后没检查（草稿很乱并且当时就是这么想的，丢到检查的时候检查）</p><p>思路还是很明确的，利用二阶连续导数先对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 再对 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 求导和先对 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 求导再对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 求导一样。</p><p>订正如下：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcVq3AyuDkZ3UP-cGntnW7LnMQ9XAQAC0Q9rG2MQ4FappPZlX6SIewEAAwIAA3kAAz0E" alt="15 订" /><figcaption>15 订</figcaption></figure><p></p><p>其实很简单，只是懒得算而已。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcNq3ArsT7IM8fe11ZS7a1rgnPb6RQACzw9rG2MQ4FaVKholwHL6zQEAAwIAA3cAAz0E" alt="17" /><figcaption>17</figcaption></figure><p></p><p>第 17 题 -2，因为想当然认为是 <span><span>t2t^2</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，事实上应该再 <span><span>+1+1</span><span><span><span></span><span>+</span><span>1</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCcJq3AjsAz-2vgYMBQzVAn0q5ufxewACzA9rG2MQ4FbJkLlPsaySLQEAAwIAA3cAAz0E" alt="18" /><figcaption>18</figcaption></figure><p></p><p>本题 -6。</p><p>其实本题不算特别难，属于思路上的问题，主要是没有捋清楚 <span><span>f(x)=xn+ln⁡xf(x)=x^n+\ln x</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 和 <span><span>{(xn)n+ln⁡xn}\{(x_n)^n+\ln x_n\}</span><span><span><span></span><span>{(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>ln</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>}</span></span></span></span> 的区别。</p><p>前者是一个函数，所以这里的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 不会发生变化，后者是一个数列，所以 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 会发生变化。</p><p>通过第一问可以很轻松的证明出来 <span><span>ln⁡x+xn\ln x+x^n</span><span><span><span></span><span>ln</span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 有一个实根 <span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>（这里的 <span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 可以用更熟悉的方式，也就是 <span><span>ε\varepsilon</span><span><span><span></span><span>ε</span></span></span></span> 表述）</p><p>然后，根据题设，<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 在变的时候这个根也在变，也就是 <span><span>ln⁡xn+xnn=ln⁡xn+1+xn+1n+1=0\ln x_n+x_n^n=\ln x_{n+1}+x_{n+1}^{n+1}=0</span><span><span><span></span><span>ln</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>ln</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p>但是，根在变的时候，函数没变，也就是 <span><span>f(xn)=ln⁡xn+xnn=0&lt;f(xn+1)=ln⁡xn+1+xn+1nf(x_n)=\ln x_n+x_n^n=0&lt;f(x_{n+1})=\ln x_{n+1}+x_{n+1}^n</span><span><span><span></span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>ln</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>ln</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，因为 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 单调递增，所以 <span><span>xn&lt;xn+1x_n&lt;x_{n+1}</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>由单调有界得证。</p><p>这道题最重要的就是辨析 <span><span>f(x)=xn+ln⁡xf(x)=x^n+\ln x</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>ln</span><span></span><span>x</span></span></span></span> 和 <span><span>{(xn)n+ln⁡xn}\{(x_n)^n+\ln x_n\}</span><span><span><span></span><span>{(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>ln</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>}</span></span></span></span> 的区别。如果 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 变了，那么前者就不是同一个函数了！</p><p>小总结一下，我现在感觉有点过于依赖检查这个行为了，这份卷子选择题也是 15min 检查出来两个。</p></section><section><h3>24 超越 10<a href="#24-超越-10"><span>#</span></a></h3><ul>
<li>完成时间：20261021</li>
<li>分数：122（-10）
<ul>
<li>选择题：-5（-5）</li>
<li>填空题：-15（-5）</li>
<li>大题：-8</li>
</ul>
</li>
<li>时间：120</li>
</ul><p>总结一下，因为一个学长这份卷子写了 100min，然后考了 150，我也想试试，结果就是这样。</p><p>看来学长的风格不适合我，我还是继续简单卷子 90min 写完检查 60min，正常卷子 120min 写完检查 30min。</p><p>仔细看了一下，这个学长是 130min 写了 150 分，我看了一下这个学长的策略，他的策略是做一步检查一步，应该是力求一遍算对，我虽然也执行做一步检查一步，但是我做的很抽象，经常做这做着会忘记这件事。</p><p>所以我觉得我的检查是有必要的，而不是像这个学长一样，做完就直接对答案。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZJq2jCG2tlKzoPsAAG1uxd862QIrQIAAkMUaxvEk9FW2NEODVMtlsEBAAMCAAN4AAM9BA" alt="3" /><figcaption>3</figcaption></figure><p></p><p>本题应该选 C。这道题我猜对的，所以算了 5 分（猜对了涂卡涂错了）</p><p>放在这里深度解析一下。</p><p>首先应该引入数列极限的定义，对任意的 <span><span>ε&gt;0\varepsilon &gt; 0</span><span><span><span></span><span>ε</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，总存在正整数 <span><span>NN</span><span><span><span></span><span>N</span></span></span></span>，使得当 <span><span>n&gt;Nn &gt; N</span><span><span><span></span><span>n</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>N</span></span></span></span> 时，恒有 <span><span>∣xn−a∣&lt;ε|x_n - a| &lt; \varepsilon</span><span><span><span></span><span>∣</span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>ε</span></span></span></span>。</p><p>先证明前推后，因为前者是有限的，所以一定存在一个最大值 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，保证其他所有项都 <span><span>≤A\le A</span><span><span><span></span><span>≤</span><span></span></span><span><span></span><span>A</span></span></span></span>。也就是说，当 <span><span>n&gt;Nn&gt;N</span><span><span><span></span><span>n</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>N</span></span></span></span> 时，所有的项就都是 <span><span>∣xn−a∣≤ε|x_n-a|\le\varepsilon</span><span><span><span></span><span>∣</span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span><span></span><span>≤</span><span></span></span><span><span></span><span>ε</span></span></span></span> 了。</p><p>然后证明后推前，对于定义，前 N 项最多有 N 个，这是一个有理数，不落在该区间内的只有有限个。</p><p>极限的本质是数列最终会无限逼近于 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>。直观理解，意思就是除了最开始有限个项以外，后面所有的项都掉进了 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 的 <span><span>ε\varepsilon</span><span><span><span></span><span>ε</span></span></span></span> 邻域里</p><p>这道题不该无从下手的，在张宇基础的时候有着重做过和注意过这类题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZNq2jOXJFmFNxvfei2FO4-aw_-XYAACSRRrG8ST0Va7gaCgqv55kAEAAwIAA3gAAz0E" alt="4" /><figcaption>4</figcaption></figure><p></p><p>本题 -5。这道题没检查，只粗略的看了一眼。<span><span>I1&lt;I2I_1&lt;I_2</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 很显然，对于 <span><span>I3I_3</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，我的做法是计算出来，结果 <span><span>sec⁡\sec</span><span><span><span></span><span>sec</span></span></span></span> 的积分形式错了，中间应该是 <span><span>++</span><span><span><span></span><span>+</span></span></span></span>，我写成了 <span><span>−-</span><span><span><span></span><span>−</span></span></span></span>，所以直接判断出是错的（如果是 <span><span>−-</span><span><span><span></span><span>−</span></span></span></span> 的话，那么 <span><span>I3&lt;0I_3&lt;0</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span>），所以选了 D。</p><p>这道题的正确做法是利用经典放缩，<span><span>tan⁡x&lt;4πx\tan x&lt;\frac{4}{\pi}x</span><span><span><span></span><span>tan</span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>π</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>4</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>x</span></span></span></span>，所以可以得出 <span><span>I2&lt;1I_2&lt;1</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>1</span></span></span></span>，而 <span><span>I3I_3</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 可以很轻松的出来是 <span><span>&gt;1&gt;1</span><span><span><span></span><span>&gt;</span><span></span></span><span><span></span><span>1</span></span></span></span> 的…吗？</p><p>并非如此，后者真实计算出来是 <span><span>&lt;1&lt;1</span><span><span><span></span><span>&lt;</span><span></span></span><span><span></span><span>1</span></span></span></span> 的，我正在用局部的思维 <span><span>1cos⁡x&lt;1\frac{1}{\cos x}&lt;1</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>c</span><span>o</span><span>s</span></span><span></span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>1</span></span></span></span> 来套进积分里。</p><p>这道题实质上应该只比较积分内部的大小，把 <span><span>tan⁡x\tan x</span><span><span><span></span><span>tan</span><span></span><span>x</span></span></span></span> 展开变成 <span><span>sin⁡xcos⁡x\frac{\sin x}{\cos x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>c</span><span>o</span><span>s</span></span><span></span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>s</span><span>i</span><span>n</span></span><span></span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，由于 <span><span>sin⁡xx\frac{\sin x}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>s</span><span>i</span><span>n</span></span><span></span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 肯定小于 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，所以 <span><span>I2&lt;I3I_2&lt;I_3</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZRq2jWw8RURNDqa-JWNAeLmEFiiAgACShRrG8ST0Va29x6le3DtNwEAAwIAA20AAz0E" alt="12" /><figcaption>12</figcaption></figure><p></p><p>本题 -5，答案写的是 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>。</p><p>我一开始的想法是分子 <span><span>+1+1</span><span><span><span></span><span>+</span><span>1</span></span></span></span> 凑 <span><span>x−1xx-\frac{1}{x}</span><span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，错误的原因在于原函数两端区间都收。</p><p>正确的思路是放缩，把 <span><span>1+x41+x^4</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span></span></span></span> 分别放成 <span><span>x4x^4</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span></span></span></span>，<span><span>x2+x4x^2+x^4</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span></span></span></span> 即可。感觉这个属于是思路积累的问题。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZVq2jXXXCpPUlDgAd9o--1usRBtKAACSxRrG8ST0Vaj0Yt49gABDioBAAMCAAN4AAM9BA" alt="13" /><figcaption>13</figcaption></figure><p></p><p>本题 -5。本质上这道题不会做，采用的特值法。</p><p>一开始的思路是区间再现，然后没做出来。就搁置了。</p><p>答案用的是一个非常巧妙的方法，<span><span>xcos⁡xx\cos x</span><span><span><span></span><span>x</span><span></span><span>cos</span><span></span><span>x</span></span></span></span> 求导出来是 <span><span>cos⁡x−xsin⁡x\cos x-x\sin x</span><span><span><span></span><span>cos</span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span></span><span>sin</span><span></span><span>x</span></span></span></span>，所以可以求出前者 <span><span>−-</span><span><span><span></span><span>−</span></span></span></span> 后者 <span><span>=f(u)=f(u)</span><span><span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>u</span><span>)</span></span></span></span> 从 <span><span>−π2-\frac{\pi}{2}</span><span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 到 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 的积分，也就是 <span><span>F(0)−F(0)=0F(0)-F(0)=0</span><span><span><span></span><span>F</span><span>(</span><span>0</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>F</span><span>(</span><span>0</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，所以后者也是 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span>。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZZq2jXu3WC30rv2Ri_y_wiijwLX6wACTBRrG8ST0VbkoFeM1KZxogEAAwIAA3gAAz0E" alt="14" /><figcaption>14</figcaption></figure><p></p><p>本题忘记了积化和差的公式，在 AI 给了公式的前提下才做对，实质上应该 -5。</p><p>这道题很快就把握了思路，使用轴对称和轮换对称化简，但是对于如何处理 <span><span>sin⁡xcos⁡y+cos⁡xsin⁡y\sin x\cos y+\cos x\sin y</span><span><span><span></span><span>sin</span><span></span><span>x</span><span></span><span>cos</span><span></span><span>y</span><span></span><span>+</span><span></span></span><span><span></span><span>cos</span><span></span><span>x</span><span></span><span>sin</span><span></span><span>y</span></span></span></span> 上犯了难。</p><p>事实上，<span><span>sin⁡(x+y)=sin⁡xcos⁡y+cos⁡xsin⁡y\sin(x+y)=\sin x\cos y+\cos x\sin y</span><span><span><span></span><span>sin</span><span>(</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>sin</span><span></span><span>x</span><span></span><span>cos</span><span></span><span>y</span><span></span><span>+</span><span></span></span><span><span></span><span>cos</span><span></span><span>x</span><span></span><span>sin</span><span></span><span>y</span></span></span></span>，太久没做高中数学了属于是。</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZdq2jwNDaK25aEgRjY94B6BnMJlAwACXBBrG8ST2VYulL-6xJC14gEAAwIAA3gAAz0E" alt="19" /><figcaption>19</figcaption></figure><p></p><p>本题 -4，我猜到了 <span><span>F(x)x\frac{F(x)}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 极限是 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，但是我不知道怎么证明。</p><p>因为 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>[0,T][0,T]</span><span><span><span></span><span>[</span><span>0</span><span>,</span><span></span><span>T</span><span>]</span></span></span></span> 上连续，所以有界，所有在 <span><span>R\mathbb{R}</span><span><span><span></span><span>R</span></span></span></span> 上有界，有界 <span><span>×\times</span><span><span><span></span><span>×</span></span></span></span> 无穷小 <span><span>=0=0</span><span><span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span></p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACCZhq2jw0tGg7wyOThxdnkIHoUPQqNwACXRBrG8ST2VaWOEiud15h6wEAAwIAA3gAAz0E" alt="22" /><figcaption>22</figcaption></figure><p></p><p>本题 -4。这道题是真的低级错误，<span><span>P=MQTP=MQ^{\mathrm{T}}</span><span><span><span></span><span>P</span><span></span><span>=</span><span></span></span><span><span></span><span>M</span><span><span>Q</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span></span></span></span>，带入的时候把 <span><span>QTQ^{\mathrm{T}}</span><span><span><span></span><span><span>Q</span><span><span><span><span><span><span></span><span><span><span>T</span></span></span></span></span></span></span></span></span></span></span></span> 代成 <span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span> 了。</p><p>小总结一下，这份卷子的低级错误就是第 4 和 22，也就是至少得 +9 分，剩下的确实认了，思路问题需要积累。</p></section></section>
<section><h2>25 超越<a href="#25-超越"><span>#</span></a></h2><section><h3>25 超越 1<a href="#25-超越-1"><span>#</span></a></h3></section><section><h3>25 超越 2<a href="#25-超越-2"><span>#</span></a></h3></section><section><h3>25 超越 3<a href="#25-超越-3"><span>#</span></a></h3></section><section><h3>25 超越 4<a href="#25-超越-4"><span>#</span></a></h3></section><section><h3>25 超越 5<a href="#25-超越-5"><span>#</span></a></h3></section><section><h3>25 超越 6<a href="#25-超越-6"><span>#</span></a></h3></section><section><h3>25 超越 7<a href="#25-超越-7"><span>#</span></a></h3></section><section><h3>25 超越 8<a href="#25-超越-8"><span>#</span></a></h3></section><section><h3>25 超越 9<a href="#25-超越-9"><span>#</span></a></h3></section><section><h3>25 超越 10<a href="#25-超越-10"><span>#</span></a></h3></section></section>
<section><h2>27 张四<a href="#27-张四"><span>#</span></a></h2></section>
<section><h2>数学真题 2 刷<a href="#数学真题-2-刷"><span>#</span></a></h2></section>
<section><h2>数学卷子策略总结<a href="#数学卷子策略总结"><span>#</span></a></h2><ol>
<li>在卷子开头写下自己的三个薄弱点：牛莱公式，<span><span>y∗y^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 以及积分区域</li>
<li>确认题目要求求什么</li>
</ol></section>
<section><h2>数学标记题<a href="#数学标记题"><span>#</span></a></h2><ol>
<li>线代的秩不等式证明</li>
<li>牛莱公式的应用</li>
</ol><p>分界线</p><ol>
<li>柯西积分不等式</li>
<li>2022 压轴证明</li>
<li>2019 证明</li>
</ol></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/npee/co/</id>
      <title type="text">考研冲刺前的总结 —— 计算机组成原理</title>
      <published>2026-09-11T00:00:00.000Z</published>
      <updated>2026-09-11T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/npee/co/"/>
      <summary type="text">考研冲刺前的总结 —— 计算机组成原理</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>关于计组、操作系统和计网，我认为学习方法和数据结构有差别。</p><p>对于这三门课，主要是心里要有一个整体的模型，基本上是一章一个模型。每道题目只要套到这个模型分析，那么题目就很容易能做出来。</p><p>需要注意的就是很多时候不要想当然分析，而是必须要套到某个模型上。</p><p>学习这门课，模型是重中之重的，当然其他操作系统和计网也需要非常重视模型。</p></section>
<section><h2>计算机系统概述<a href="#计算机系统概述"><span>#</span></a></h2><section><h3>考纲 - 计算机系统概述<a href="#考纲---计算机系统概述"><span>#</span></a></h3><ul>
<li>
<p>计算机系统层次结构</p>
</li>
<li>
<p>计算机系统的基本组成</p>
</li>
<li>
<p>计算机硬件的基本组成</p>
</li>
<li>
<p>计算机软件和硬件的关系</p>
</li>
<li>
<p>计算机系统的工作原理：“存储程序”的方式；高级语言程序与机器语言程序的转换；程序和指令的执行过程</p>
</li>
<li>
<p>计算机性能指标</p>
</li>
<li>
<p>吞吐量；响应时间；CPU 时钟周期；主频；CPI；CPU 执行时间；MIPS；MFLOPS；GFLOPS；
TFLOPS；PFLOPS；EFLOPS；ZFLOPS</p>
</li>
</ul></section><section><h3>计算机系统层次结构<a href="#计算机系统层次结构"><span>#</span></a></h3><p>这个考点比较绕，主要可以从下面走：</p><p>高级语言 -&gt; 汇编语言 -&gt; （操作系统） -&gt; 机器语言 -&gt; 体系结构 ISA -&gt; 微程序控制器。</p><p>可以理解为谁为谁提供服务。这里的操作系统派在这里不是很准确，但是也没什么大问题。</p><p>可以区分语言层和硬件接口：高级语言通常经编译器转换为汇编语言，
再由汇编器生成遵循 ISA 的机器代码。ISA 规定软件可见的指令、编码和行为，
微体系结构则负责实现 ISA。操作系统属于系统软件层，为应用程序提供硬件抽象和资源管理。</p><p>还需要辨析编译、汇编、翻译、链接的区别。</p><p>编译通常将高级语言转换成汇编语言或目标代码；汇编器将汇编语言转换成机器代码。
“翻译”是把一种语言转换成另一种语言的总称，其中逐条转换且不生成目标文件的过程也是翻译。
链接器将多个目标文件和库连接成可执行文件，是操作系统那块的概念。</p><p>此外，还有 ISA。ISA 是指令集体系结构，相同的 ISA 可以对应不同的机器实现。
例如，x86 ISA 可以经历多代硬件迭代，而 ISA 本身保持兼容。</p></section><section><h3>计算机硬件与软件<a href="#计算机硬件与软件"><span>#</span></a></h3><p>冯·诺依曼结构以“存储程序”为基础，硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。</p><p>早期的机器以运算器为中心，输入输出都要经过运算器；现代计算机以存储器为中心，输入输出和 CPU 可以并行工作，DMA 就是在这个基础上出现的。</p><p>冯·诺依曼机的特点：</p><ul>
<li>指令和数据都以二进制形式存放在同一个存储器中，按地址访问，存储位置不区分指令和数据；</li>
<li>指令由操作码和地址码组成；</li>
<li>指令顺序执行，由 PC 控制，遇到转移指令才改变顺序；</li>
<li>早期以运算器为中心，现代机器更接近以存储器为中心。</li>
</ul><p>需要注意，区分指令和数据靠的是指令周期的阶段，取指周期取出的按指令解释，执行周期取出的按数据解释，而不是看它存在哪里。</p><p>指令和数据分开存储的结构叫哈佛结构，可以同时取指和取数，现代 CPU 的 L1 Cache 一般就是指令 Cache 和数据 Cache 分离，本质上是哈佛结构。</p><p>软件分为系统软件和应用软件。系统软件包括操作系统、编译程序、数据库管理系统、网络软件等，应用软件是面向具体问题的程序。</p><p>硬件和软件在逻辑功能上是等价的，同一个功能既可以用硬件实现，也可以用软件实现，区别在速度和成本。例如乘法既可以用乘法器一个时钟周期算完，也可以用移位加法用一段程序模拟。</p><p>翻译程序分为编译程序和解释程序，两者的区别在是否生成目标程序：</p><ul>
<li>编译程序把源程序整体翻译成目标程序，之后目标程序独立运行，运行时不需要编译程序；</li>
<li>解释程序不生成目标程序，逐条翻译并立即执行，所以运行时需要解释器在场，速度慢。</li>
</ul><p>需要注意的是，编译和解释不是按语言分的，同一个语言既可以有编译器也可以有解释器。</p></section><section><h3>存储程序的执行流<a href="#存储程序的执行流"><span>#</span></a></h3><p>这块放在 CPU 那一章细讲，主要是理解控制驱动和数据驱动。
控制驱动由控制流决定计算顺序，数据驱动则在输入数据就绪时触发计算。</p></section><section><h3>性能指标<a href="#性能指标"><span>#</span></a></h3><p>主要是记忆性的内容，常考 CPI、IPS 及其转换关系。</p><p>CPI 通常表示平均每条指令所需的时钟周期数，主频 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 表示 CPU 每秒的时钟周期数。
一个时钟周期为 <span><span>Tcycle=1/fT_{\text{cycle}}=1/f</span><span><span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>cycle</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1/</span><span>f</span></span></span></span>，一条指令的平均执行时间为
<span><span>Tinstr=CPI/fT_{\text{instr}}=\mathrm{CPI}/f</span><span><span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>instr</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>CPI</span></span><span>/</span><span>f</span></span></span></span>；在单一指令流、以平均 CPI 估算时，指令吞吐率为
<span><span>IPS=f/CPI\mathrm{IPS}=f/\mathrm{CPI}</span><span><span><span></span><span><span>IPS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>/</span><span><span>CPI</span></span></span></span></span>。</p><p>对于这个考点，需要注意题目描述：有时给出执行 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 条指令，
有时给出执行 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 个时钟周期。</p><p>此外，机器 A 的主频高、机器 B 的主频低，并不意味着某程序在 A 上的运行时间
一定比在 B 上短。</p><p>做这类题可以设总指令数为 <span><span>NN</span><span><span><span></span><span>N</span></span></span></span>。</p><p>把几个量写成公式会更好用。设平均 CPI 为 <span><span>CPI\mathrm{CPI}</span><span><span><span></span><span><span>CPI</span></span></span></span></span>，主频为 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span>：</p><span><span><span>TCPU=N×CPI×Tcycle=N×CPIfT_{\text{CPU}}=N\times\mathrm{CPI}\times T_{\text{cycle}}=\frac{N\times\mathrm{CPI}}{f}</span><span><span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>CPU</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>N</span><span></span><span>×</span><span></span></span><span><span></span><span><span>CPI</span></span><span></span><span>×</span><span></span></span><span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>cycle</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>f</span></span></span><span><span></span><span></span></span><span><span></span><span><span>N</span><span></span><span>×</span><span></span><span><span>CPI</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><span><span><span>MIPS=NTCPU×106=fCPI×106\mathrm{MIPS}=\frac{N}{T_{\text{CPU}}\times10^6}=\frac{f}{\mathrm{CPI}\times10^6}</span><span><span><span></span><span><span>MIPS</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>CPU</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>×</span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>N</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>CPI</span></span><span></span><span>×</span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>f</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><span><span><span>MFLOPS=浮点运算次数TCPU×106\mathrm{MFLOPS}=\frac{\text{浮点运算次数}}{T_{\text{CPU}}\times10^6}</span><span><span><span></span><span><span>MFLOPS</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>CPU</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>×</span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>浮点运算次数</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><p>需要注意，MIPS 只有在指令集相同、指令功能相近的机器之间比较才有意义，因为不同 ISA 的一条指令做的事差别很大，甚至同一台机器跑不同程序 MIPS 也不一样。</p><p>响应时间和吞吐量是两个方向：响应时间是单个任务从提交到完成的时间，越短越好；吞吐量是单位时间内完成的任务数，越大越好。流水线、多核主要提升吞吐量，缩短关键路径、减少分支预测失败主要改善响应时间。</p><p>基准程序（Benchmark）是一组有代表性的程序，用它们的运行时间评价机器，SPEC 是最常见的一套。需要注意，基准程序只对它覆盖的那类负载有代表性。</p><p>还有一点，CPU 时间只是程序运行时间的一部分，完整的运行时间还要加上 I/O 等待、操作系统开销、缺页处理等。</p></section></section>
<section><h2>数据表示和运算<a href="#数据表示和运算"><span>#</span></a></h2><section><h3>考纲 - 数据表示和运算<a href="#考纲---数据表示和运算"><span>#</span></a></h3><ul>
<li>数制和编码：进位计数制及其相互转换；定点数的编码表示</li>
<li>运算方法和运算电路：
<ul>
<li>基本运算部件：加法器；算术逻辑单元</li>
<li>加减运算：补码加减运算器；标志位的生成</li>
<li>乘除运算：乘除运算的基本原理；乘法电路和除法电路的基本结构</li>
</ul>
</li>
<li>整数的表示和运算：无符号数的表示和运算；有符号数的表示和运算</li>
<li>浮点数的表示和运算：IEEE 754 标准；浮点数的加减运算</li>
</ul></section><section><h3>字，字节，字长，位<a href="#字字节字长位"><span>#</span></a></h3><p>什么是位，什么是字节，什么是字，什么是字长？</p><p>位是最小的单位，一个二进制位只能表示 0 或 1。</p><p>字节是 8 位；按无符号数解释时，一个字节可以表示 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>255255</span><span><span><span></span><span>255</span></span></span></span>。
字节通常是存储和编址的基本单位。</p><p>而什么是字，什么是字长，需要根据计算机本身的系统结构来确定。</p><p>例如，对于某些早期机器，可以用 2 字节表示一个字，即字长为 16 位；
但字长和编址粒度是两个独立概念，不能由前者推出按字编址。</p><p>现代计算机通常按字节编址，但 1 个字通常包含多个字节，具体取决于 ISA（常见为 2、4 或 8 字节）。</p></section><section><h3>数制和编码<a href="#数制和编码"><span>#</span></a></h3><p>这个考点说难也难，说简单也简单，主要是细节问题。</p><p>2 进制、8 进制、10 进制、16 进制的相互转换。</p><p>对于十进制转二进制的整数部分，可以采用短除法：除以 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 并取余数，
直到商为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，再从下到上把余数拼接起来。</p><p>对于十进制转二进制的小数部分，可以反复乘以 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 并取整数部分，
直到小数部分为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，或达到所需精度，再从上到下把整数部分拼接起来。</p><p>当然，熟练后更快的做法是拼凑，也就是利用 <span><span>2x2^x</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 的幂次展开转换为对应的二进制数。</p><p>这里可以注意，不是所有的十进制数都可以精确转换为二进制数，例如
<span><span>0.10.1</span><span><span><span></span><span>0.1</span></span></span></span> 的二进制展开是无限循环小数。</p><p>对于二进制转十进制，可以采用按权展开法，把各位按权展开后相加。</p><p>对于八进制转二进制，可以采用拆分法，把每个八进制数字拆成 3 个二进制位。</p><p>对于二进制转八进制，可以采用合并法，每 3 个二进制位合并为 1 个八进制数字。</p><p>对于十六进制转二进制，可以采用拆分法，把每个十六进制数字拆成 4 个二进制位。</p><p>对于二进制转十六进制，可以采用合并法，每 4 个二进制位合并为 1 个十六进制数字。</p><p>还可以注意表示，二进制数可以表示为 B 的形式，八进制数可以表示为 O 的形式，十六进制数可以表示为 H 的形式。</p><p>例如 <span><span>10102=1010B1010_2=1010\mathrm{B}</span><span><span><span></span><span>101</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1010</span><span>B</span></span></span></span>、<span><span>138=13O13_8=13\mathrm{O}</span><span><span><span></span><span>1</span><span><span>3</span><span><span><span><span><span><span></span><span><span>8</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>13</span><span>O</span></span></span></span>、<span><span>1516=15H15_{16}=15\mathrm{H}</span><span><span><span></span><span>1</span><span><span>5</span><span><span><span><span><span><span></span><span><span><span>16</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>15</span><span>H</span></span></span></span>。</p></section><section><h3>真值，机器数，无符号数与有符号数，编码<a href="#真值机器数无符号数与有符号数编码"><span>#</span></a></h3><p>真值指的是机器数在指定编码下对应的实际值。例如，按 4 位原码解释时，
<span><span>10102=−2101010_2=-2_{10}</span><span><span><span></span><span>101</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>10</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>；换用无符号数或补码解释时，结果会不同。</p><p>机器数指的是计算机中实际存储的值，一般都是以二进制的方式存储。</p><p>需要注意的是，计算机存储的是位串；编码规则决定如何解释这些位串，同一个数在不同编码下的位串也可能不同。</p><p>在讨论编码之前，需要捋清楚无符号数和有符号数的区别。</p><section><h4>无符号数与有符号数<a href="#无符号数与有符号数"><span>#</span></a></h4><p>无符号数指的是机器数中不表示负数，即表示非负数（包括 0）。
所有位都用于表示数值，不需要单独的符号位。</p><p>例如，8 位无符号数可以表示的范围为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到 <span><span>255255</span><span><span><span></span><span>255</span></span></span></span>，即
<span><span>00000000200000000_2</span><span><span><span></span><span>0000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 到 <span><span>11111111211111111_2</span><span><span><span></span><span>1111111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>而有符号数的第一位一定是符号位，0 表示正数，1 表示负数。需要注意的是，原码、反码、补码都是基于 有符号数 去讨论的，所以即便原码看着和无符号数很像，但是其本质是不一样的。</p></section><section><h4>原码<a href="#原码"><span>#</span></a></h4><p>原码的第一位是符号位，0 表示正数，1 表示负数，后续的位数表示数值的绝对值。</p><p>例如对于 15 和 -15，其 8 位原码分别为 <span><span>00001111200001111_2</span><span><span><span></span><span>0000111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>10001111210001111_2</span><span><span><span></span><span>1000111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>对于 8 位原码，其表示范围为 <span><span>[−127,127][-127,127]</span><span><span><span></span><span>[</span><span>−</span><span>127</span><span>,</span><span></span><span>127</span><span>]</span></span></span></span>；负数和正数的最大编码分别为
<span><span>11111111211111111_2</span><span><span><span></span><span>1111111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>01111111201111111_2</span><span><span><span></span><span>0111111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>从而产生了一个问题，即 0 的表示是不唯一的，即 <span><span>00000000200000000_2</span><span><span><span></span><span>0000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>10000000210000000_2</span><span><span><span></span><span>1000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 都表示 0。</p><p>原码很直观，但是这里先不讲为什么原码的计算很不方便。</p><p>由于原码的计算很不方便，所以很少在计算机中使用。</p></section><section><h4>反码<a href="#反码"><span>#</span></a></h4><p>反码的第一位是符号位，0 表示正数，1 表示负数，后续的位数是数值的绝对值的反码。</p><p>这里先不讨论反码的来源，先说反码的计算方法。</p><p>对于正数，其反码和原码相同，因为正数的反码就是其本身。</p><p>对于负数，其反码是原码除了符号位的每一位取反，即 0 变 1，1 变 0。</p><p>例如对于 15 和 -15，其 8 位反码分别为 <span><span>00001111200001111_2</span><span><span><span></span><span>0000111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>11110000211110000_2</span><span><span><span></span><span>1111000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>对于 8 位反码，其表示范围为 <span><span>[−127,127][-127,127]</span><span><span><span></span><span>[</span><span>−</span><span>127</span><span>,</span><span></span><span>127</span><span>]</span></span></span></span>；负数和正数的最大编码分别为
<span><span>11111111211111111_2</span><span><span><span></span><span>1111111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>01111111201111111_2</span><span><span><span></span><span>0111111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>从而也有一个问题，即 0 的表示是不唯一的，即 <span><span>00000000200000000_2</span><span><span><span></span><span>0000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>11111111211111111_2</span><span><span><span></span><span>1111111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 都表示 0。</p><p>反码在现代整数编码中已经少用，主要作为补码的过渡概念。</p></section></section><section><h3>加法器、补数与补码的来源<a href="#加法器补数与补码的来源"><span>#</span></a></h3><p>加法器是计算机中用于执行二进制加法运算的核心逻辑电路，主要包括半加器、全加器以及多位并行加法器。</p><section><h4>半加器（Half Adder）<a href="#半加器half-adder"><span>#</span></a></h4><p>半加器只负责计算本位两个一位二进制数的加法，不考虑来自低位的进位。</p><p>输入：被加数 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>、加数 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>。</p><p>输出：本位和 <span><span>SS</span><span><span><span></span><span>S</span></span></span></span>，向高位的进位 <span><span>CC</span><span><span><span></span><span>C</span></span></span></span>。</p><p>逻辑表达式：</p><span><span><span>S=A⊕B,C=A∧BS=A\oplus B,\qquad C=A\land B</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span>A</span><span></span><span>⊕</span><span></span></span><span><span></span><span>B</span><span>,</span><span></span><span></span><span>C</span><span></span><span>=</span><span></span></span><span><span></span><span>A</span><span></span><span>∧</span><span></span></span><span><span></span><span>B</span></span></span></span></span><p>示例：计算 <span><span>1+11+1</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 时，<span><span>S=1⊕1=0S=1\oplus1=0</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>⊕</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，<span><span>C=1∧1=1C=1\land1=1</span><span><span><span></span><span>C</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>∧</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，
合起来输出二进制 <span><span>10210_2</span><span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>半加器无法接收低位产生的进位输入，因此不能直接用于多位数的进位加法。</p></section><section><h4>全加器（Full Adder）<a href="#全加器full-adder"><span>#</span></a></h4><p>全加器在半加器的基础上，增加了接收低位进位的功能。</p><p>输入：被加数 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>、加数 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>，来自低位的进位 <span><span>CinC_{\mathrm{in}}</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>in</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>输出：本位和 <span><span>SS</span><span><span><span></span><span>S</span></span></span></span>，向高位的进位 <span><span>CoutC_{\mathrm{out}}</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>out</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>逻辑表达式：</p><span><span><span>S=A⊕B⊕Cin,Cout=(A∧B)∨(Cin∧(A⊕B))=(A∧B)∨(A∧Cin)∨(B∧Cin)\begin{aligned}
S&amp;=A\oplus B\oplus C_{\mathrm{in}},\\
C_{\mathrm{out}}&amp;=(A\land B)\lor\bigl(C_{\mathrm{in}}\land(A\oplus B)\bigr)\\
&amp;=(A\land B)\lor(A\land C_{\mathrm{in}})\lor(B\land C_{\mathrm{in}})
\end{aligned}</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>S</span></span></span><span><span></span><span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>out</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span><span><span><span><span><span></span><span><span></span><span></span><span>=</span><span></span><span>A</span><span></span><span>⊕</span><span></span><span>B</span><span></span><span>⊕</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>in</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span></span></span><span><span></span><span><span></span><span></span><span>=</span><span></span><span>(</span><span>A</span><span></span><span>∧</span><span></span><span>B</span><span>)</span><span></span><span>∨</span><span></span><span><span>(</span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>in</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∧</span><span></span><span>(</span><span>A</span><span></span><span>⊕</span><span></span><span>B</span><span>)</span><span><span>)</span></span></span></span><span><span></span><span><span></span><span></span><span>=</span><span></span><span>(</span><span>A</span><span></span><span>∧</span><span></span><span>B</span><span>)</span><span></span><span>∨</span><span></span><span>(</span><span>A</span><span></span><span>∧</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>in</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>∨</span><span></span><span>(</span><span>B</span><span></span><span>∧</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>in</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span></span><p>示例：计算 <span><span>1+1+11+1+1</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>（包含低位进位 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>）时，<span><span>S=1S=1</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，
<span><span>Cout=1C_{\mathrm{out}}=1</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>out</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，合起来输出二进制 <span><span>11211_2</span><span><span><span></span><span>1</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p></section><section><h4>并行加法器（Parallel Adder）<a href="#并行加法器parallel-adder"><span>#</span></a></h4><p>为了实现多位二进制数的快速相加，通常将多个全加器组合起来使用：</p><p>串行进位加法器将多个全加器首尾相连，进位从低位向高位逐级传递，延迟较高。</p><p>超前进位加法器通过进位生成和传递的布尔逻辑提前计算各位进位，
不必等待低位逐级传递，延迟较低。实际工程中常以 4 位加法器作为基本模块，
再通过进位链级联。</p></section><section><h4>算术逻辑单元（ALU）<a href="#算术逻辑单元alu"><span>#</span></a></h4><p>ALU 是组合逻辑电路，没有记忆功能。输入是操作数 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>、<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 和功能选择信号，输出是运算结果 <span><span>FF</span><span><span><span></span><span>F</span></span></span></span> 以及若干标志位。</p><p>核心是一个加法器，再加移位电路、逻辑运算电路（与、或、异或、非）和一个多路选择器，由操作码决定最终输出哪一路。</p><p>ALU 的位数一般就是机器字长，因为 ALU 要能一次处理一个字。</p><p>需要注意，ALU 只负责算，不负责存。结果要打入寄存器（累加器、通用寄存器或标志寄存器）才算完成一次运算，这也是数据通路里“组合逻辑 + 寄存器”的基本套路。</p><p>加法器是 ALU 的子集，ALU 在加法器外面套了一层功能选择，所以支持减法、逻辑运算、比较（做减法看标志位）。</p><p>补码的好处在这里体现得很明显：减法直接用加法器加补数实现，ALU 不需要单独的减法电路，只需要把 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 取反再把最低位进位设为 1。</p><p>在这里讲加法器，是因为可以理解补码的来源。</p><p>暂时不考虑溢出的情况，仅考虑下面的情况。</p><p>对于 8 位无符号数，<span><span>1313</span><span><span><span></span><span>13</span></span></span></span> 和 <span><span>1212</span><span><span><span></span><span>12</span></span></span></span> 的二进制表示分别为
<span><span>00001101200001101_2</span><span><span><span></span><span>0000110</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>00001100200001100_2</span><span><span><span></span><span>0000110</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，相加可得 <span><span>00011001200011001_2</span><span><span><span></span><span>0001100</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，即 <span><span>2525</span><span><span><span></span><span>25</span></span></span></span>。</p><p>对于 8 位无符号数，<span><span>13−1213-12</span><span><span><span></span><span>13</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span></span></span></span> 可写为
<span><span>000011012−000011002=00000001200001101_2-00001100_2=00000001_2</span><span><span><span></span><span>0000110</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>0000110</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0000000</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，结果为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>。</p><p>对于 8 位原码，<span><span>13+1213+12</span><span><span><span></span><span>13</span><span></span><span>+</span><span></span></span><span><span></span><span>12</span></span></span></span> 的编码为
<span><span>000011012+000011002=00011001200001101_2+00001100_2=00011001_2</span><span><span><span></span><span>0000110</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>0000110</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0001100</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，结果为 <span><span>2525</span><span><span><span></span><span>25</span></span></span></span>。</p><p>对于 8 位原码，<span><span>13−1213-12</span><span><span><span></span><span>13</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span></span></span></span> 的编码为
<span><span>000011012−000011002=00000001200001101_2-00001100_2=00000001_2</span><span><span><span></span><span>0000110</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>0000110</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0000000</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，结果为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>。</p><p>这看起来对人类而言很直观，但是对于计算机来说，相减如何实现？</p><p>如果直接按原码的“绝对值相减、再确定符号”规则实现，
需要比较绝对值并单独处理符号；如果为无符号减法设计专用路径，
还要处理借位。</p><p>这些额外逻辑会增加硬件复杂度，因此通常复用加法器和补码来实现减法。</p><p>硬件资源是稀缺的，所以需要一种更简单的方法来实现减法。</p><p>对模 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 的无符号数 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，其补数定义为
<span><span>(−x) mod n=(n−x) mod n(-x)\bmod n=(n-x)\bmod n</span><span><span><span></span><span>(</span><span>−</span><span>x</span><span>)</span><span></span><span></span><span><span><span>mod</span></span></span><span></span><span></span></span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span>)</span><span></span><span></span><span><span><span>mod</span></span></span><span></span><span></span></span><span><span></span><span>n</span></span></span></span>。</p><p>对于 8 位无符号数，模为 <span><span>28=2562^8=256</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>8</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>256</span></span></span></span>。
因此，<span><span>1212</span><span><span><span></span><span>12</span></span></span></span> 的补数为 <span><span>256−12=244256-12=244</span><span><span><span></span><span>256</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span><span></span><span>=</span><span></span></span><span><span></span><span>244</span></span></span></span>，对应的位串为 <span><span>11110100211110100_2</span><span><span><span></span><span>1111010</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>考虑硬件实现，计算 <span><span>13−1213-12</span><span><span><span></span><span>13</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span></span></span></span> 等同于计算
<span><span>13+(256−12)=13+244=25713+(256-12)=13+244=257</span><span><span><span></span><span>13</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>256</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>13</span><span></span><span>+</span><span></span></span><span><span></span><span>244</span><span></span><span>=</span><span></span></span><span><span></span><span>257</span></span></span></span>。在 8 位寄存器中，最高进位被舍弃，
结果为 <span><span>257 mod 256=1257\bmod256=1</span><span><span><span></span><span>257</span><span></span><span></span><span><span><span>mod</span></span></span><span></span><span></span></span><span><span></span><span>256</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p>在固定 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位二进制、模为 <span><span>2n2^n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 的情况下，补数可以通过对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的每一位取反再加 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 得到。</p><p>所以可以得出下面的结论：</p><p>计算机的寄存器位数是固定的。对于 8 位无符号寄存器，其模为 <span><span>28=2562^8=256</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>8</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>256</span></span></span></span>。</p><p>固定宽度运算只保留低 8 位，结果等价于按模 <span><span>256256</span><span><span><span></span><span>256</span></span></span></span> 截取；是否发生“溢出”要看数值解释：
无符号数看进位标志 CF，补码有符号数看溢出标志 OF。</p><p>在模 256 的系统中，减去一个数相当于加上这个数的补数。</p><p>例如：</p><span><span><span>13−12≡13+(256−12)(mod256)13-12\equiv13+(256-12)\pmod{256}</span><span><span><span></span><span>13</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span><span></span><span>≡</span><span></span></span><span><span></span><span>13</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>256</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span><span>)</span><span></span><span></span></span><span><span></span><span>(</span><span><span><span>mod</span></span></span><span></span><span>256</span><span>)</span></span></span></span></span><p>那么对于有符号数呢？</p><p>考虑原码 <span><span>13−1213-12</span><span><span><span></span><span>13</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span></span></span></span>：其位串为
<span><span>000011012−00001100200001101_2-00001100_2</span><span><span><span></span><span>0000110</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>0000110</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。如果采用与无符号数补数求法类似的思路，能否得到正确结果？</p></section><section><h4>补码<a href="#补码"><span>#</span></a></h4><p>补码的第一位是符号位，0 表示非负数，1 表示负数。对于非负数，其补码和原码相同。
对于负数，其补码是原码除符号位外的每一位取反再加 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>。</p><p>对于 8 位补码，其表示范围为 <span><span>[−128,127][-128,127]</span><span><span><span></span><span>[</span><span>−</span><span>128</span><span>,</span><span></span><span>127</span><span>]</span></span></span></span>，即从 <span><span>10000000210000000_2</span><span><span><span></span><span>1000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 到
<span><span>01111111201111111_2</span><span><span><span></span><span>0111111</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>；没有正 <span><span>128128</span><span><span><span></span><span>128</span></span></span></span>，且只有一个 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p>例如，<span><span>−12-12</span><span><span><span></span><span>−</span><span>12</span></span></span></span> 的原码为 <span><span>10001100210001100_2</span><span><span><span></span><span>1000110</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，其补码为 <span><span>11110100211110100_2</span><span><span><span></span><span>1111010</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>在 8 位补码中，<span><span>13−1213-12</span><span><span><span></span><span>13</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span></span></span></span> 等同于
<span><span>13+[−12]补13+[-12]_{\text{补}}</span><span><span><span></span><span>13</span><span></span><span>+</span><span></span></span><span><span></span><span>[</span><span>−</span><span>12</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，即
<span><span>000011012+111101002=00000001200001101_2+11110100_2=00000001_2</span><span><span><span></span><span>0000110</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1111010</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0000000</span><span><span>1</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>；最高进位因位数限制被舍弃。</p><p>对于补码，可以把第一位（符号位）理解为负位权。
对 8 位补码，<span><span>−12-12</span><span><span><span></span><span>−</span><span>12</span></span></span></span> 的位串可展开为
<span><span>−27+26+25+24+22=−12-2^7+2^6+2^5+2^4+2^2=-12</span><span><span><span></span><span>−</span><span><span>2</span><span><span><span><span><span><span></span><span><span>7</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>5</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>12</span></span></span></span>。</p></section><section><h4>移码<a href="#移码"><span>#</span></a></h4><p>对 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位整数，常规定义的移码（偏置码）偏置为 <span><span>2n−12^{n-1}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>，
编码值为真值加该偏置。</p><p>对于 <span><span>−128-128</span><span><span><span></span><span>−</span><span>128</span></span></span></span>，其补码为 <span><span>10000000210000000_2</span><span><span><span></span><span>1000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，其 8 位移码为 <span><span>00000000200000000_2</span><span><span><span></span><span>0000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>对于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，其补码为 <span><span>00000000200000000_2</span><span><span><span></span><span>0000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，其 8 位移码为 <span><span>10000000210000000_2</span><span><span><span></span><span>1000000</span><span><span>0</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>对采用 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位补码、真值范围为 <span><span>[−2n−1,2n−1−1][-2^{n-1},2^{n-1}-1]</span><span><span><span></span><span>[</span><span>−</span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>,</span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>]</span></span></span></span> 的编码，
移码的位串等价于将补码的符号位取反。</p><p>移码在计算机中主要用于表示浮点数的阶码。IEEE 754 单精度的偏置为 <span><span>127127</span><span><span><span></span><span>127</span></span></span></span>，
双精度的偏置为 <span><span>10231023</span><span><span><span></span><span>1023</span></span></span></span>。</p></section><section><h4>四种编码的对照<a href="#四种编码的对照"><span>#</span></a></h4><p>设字长为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位，把前面几种编码放在一起看：</p>

<table><thead><tr><th>编码</th><th>正数</th><th>负数</th><th>真值范围</th><th>0 的个数</th></tr></thead><tbody><tr><td>原码</td><td>符号位 0 + 绝对值</td><td>符号位 1 + 绝对值</td><td><span><span>[−(2n−1−1), 2n−1−1][-(2^{n-1}-1),\,2^{n-1}-1]</span><span><span><span></span><span>[</span><span>−</span><span>(</span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>,</span><span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>]</span></span></span></span></td><td>2</td></tr><tr><td>反码</td><td>同原码</td><td>原码数值位逐位取反</td><td><span><span>[−(2n−1−1), 2n−1−1][-(2^{n-1}-1),\,2^{n-1}-1]</span><span><span><span></span><span>[</span><span>−</span><span>(</span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>,</span><span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>]</span></span></span></span></td><td>2</td></tr><tr><td>补码</td><td>同原码</td><td>反码加 1</td><td><span><span>[−2n−1, 2n−1−1][-2^{n-1},\,2^{n-1}-1]</span><span><span><span></span><span>[</span><span>−</span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>,</span><span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>]</span></span></span></span></td><td>1</td></tr><tr><td>移码</td><td>补码符号位取反</td><td>同左</td><td><span><span>[−2n−1, 2n−1−1][-2^{n-1},\,2^{n-1}-1]</span><span><span><span></span><span>[</span><span>−</span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>,</span><span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>]</span></span></span></span>，编码值是 <span><span>[0, 2n−1][0,\,2^n-1]</span><span><span><span></span><span>[</span><span>0</span><span>,</span><span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>]</span></span></span></span></td><td>1</td></tr></tbody></table><p>从表中可以看出，补码比原码、反码多表示一个负数，这就是 0 唯一带来的好处。</p><p>移码的编码值随真值单调递增，所以比较浮点数阶码大小时可以直接按无符号数比较，这也是阶码用移码的原因。</p><p>原码和反码的对称性在计算时要多写判断逻辑，补码则把符号位也当成数的一部分参与运算，硬件最省事。</p></section><section><h4>C 语言整数类型及转换<a href="#c-语言整数类型及转换"><span>#</span></a></h4><p>C 语言整数类型的精确位宽由实现和 ABI 决定。但考研用的是 long 为 32 位。</p><p>以 <code>CHAR_BIT=8</code>、ILP32 环境举例：</p><ul>
<li><code>char</code>：1 字节，通常为 8 位；</li>
<li><code>short</code>：2 字节，16 位；</li>
<li><code>int</code>：4 字节，32 位；</li>
<li><code>long</code>：4 字节，32 位；</li>
<li><code>long long</code>：8 字节，64 位。</li>
</ul><p>在 LP64 等其他 ABI 中，<code>long</code> 可能是 8 字节；C 标准只规定各类型的最小范围。</p><p>对于整数类型和转换，需要注意：</p><p>转换到无符号目标类型时，结果按目标类型的模保留低位；
转换到有符号目标类型且值无法表示时，结果由实现定义，不能一概而论为截断。</p><p>在常见二补码实现中，如果是短转长，整型提升或转换通常会进行扩展：无符号数高位补 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，
有符号数按符号位扩展；具体结果仍以目标类型和实现规则为准。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>unsigned</span><span> </span><span>short</span><span> a </span><span>=</span><span> </span><span>65530</span><span>;</span></div></div><div><div><div>2</div></div><div><span>int</span><span> b </span><span>=</span><span> a;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>分析可知，对于无符号数 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>，其 16 位十六进制表示为 <code>FFFAH</code>。
整型提升时零扩展为 32 位 <code>0000FFFAH</code>，再解释为 <code>int</code>，结果为 <span><span>6553065530</span><span><span><span></span><span>65530</span></span></span></span>。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>short</span><span> a </span><span>=</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>2</div></div><div><span>unsigned</span><span> </span><span>int</span><span> b </span><span>=</span><span> a;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>分析可知，对于 16 位有符号数 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>，其位串为 <code>FFFFH</code>。
整型提升先符号扩展为 32 位 <code>FFFFFFFFH</code>，再转换为 <code>unsigned int</code>，
结果为 <span><span>232−12^{32}-1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>32</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p></section></section><section><h3>基本的计算<a href="#基本的计算"><span>#</span></a></h3><section><h4>移位运算<a href="#移位运算"><span>#</span></a></h4><p>移位运算分为逻辑移位和算术移位。</p><p>逻辑移位是直接将二进制位向左或向右移动，移动后空位补 0。</p><p>算术右移时，高位补入原符号位；算术左移时，低位始终补 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p>例如，对于 8 位补码 <code>10101010</code>，逻辑左移一位和算术左移一位均为
<code>01010100</code>；逻辑右移一位为 <code>01010101</code>，算术右移一位为 <code>11010101</code>。</p><p>由于二进制的表达，移位运算天然地和乘除法有关系。</p><p>在不发生溢出的前提下，算术左移通常相当于乘以 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>；
对非负数，算术右移相当于整除 <span><span>22</span><span><span><span></span><span>2</span></span></span></span>，对负数则通常向负无穷取整。</p><p>例如，8 位补码 <code>11001010</code> 的真值为 <span><span>−54-54</span><span><span><span></span><span>−</span><span>54</span></span></span></span>。
算术左移一位得到 <code>10010100</code>，真值为 <span><span>−108-108</span><span><span><span></span><span>−</span><span>108</span></span></span></span>；
算术右移一位得到 <code>11100101</code>，真值为 <span><span>−27-27</span><span><span><span></span><span>−</span><span>27</span></span></span></span>。</p><p>需要注意的是，左移时若有效位被丢弃或符号位发生改变，可能发生溢出。
例如，8 位补码 <code>10000000</code> 的真值为 <span><span>−128-128</span><span><span><span></span><span>−</span><span>128</span></span></span></span>。算术左移一位得到
<code>00000000</code>（按 8 位补码解释为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>），但数学结果应为 <span><span>−256-256</span><span><span><span></span><span>−</span><span>256</span></span></span></span>，
超出了 8 位补码的可表示范围。</p></section><section><h4>对加法器的补充<a href="#对加法器的补充"><span>#</span></a></h4><p>对于固定为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位的加法器，实现减法通常将 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 按位取反，并把最低位进位输入设为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，
最后只保留低 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位：</p><span><span><span>A−B≡A+¬B+1(mod2n)A-B\equiv A+\lnot B+1\pmod{2^n}</span><span><span><span></span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>B</span><span></span><span>≡</span><span></span></span><span><span></span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>¬</span><span>B</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span></span></span><span><span></span><span>(</span><span><span><span>mod</span></span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span>)</span></span></span></span></span><p>从上面可以看出，反码类似加法器的一种状态。对于加法器而言，不是直接把 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 取补，而是取反再 <span><span>+1+1</span><span><span><span></span><span>+</span><span>1</span></span></span></span>。</p></section><section><h4>补码加减法运算<a href="#补码加减法运算"><span>#</span></a></h4><p>本质上，补码加减法运算就是将减法转换为加法。</p><p>对 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位补码运算，结果按模 <span><span>2n2^n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 截取：</p><span><span><span>[A+B]补=[A]补+[B]补(mod2n),[A+B]_{\text{补}}=[A]_{\text{补}}+[B]_{\text{补}}\pmod{2^n},</span><span><span><span></span><span>[</span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>[</span><span>A</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>[</span><span>B</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span></span></span><span><span></span><span>(</span><span><span><span>mod</span></span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span>)</span><span>,</span></span></span></span></span><span><span><span>[A−B]补=[A]补+[−B]补(mod2n)[A-B]_{\text{补}}=[A]_{\text{补}}+[-B]_{\text{补}}\pmod{2^n}</span><span><span><span></span><span>[</span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>B</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>[</span><span>A</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>[</span><span>−</span><span>B</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span></span></span><span><span></span><span>(</span><span><span><span>mod</span></span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span>)</span></span></span></span></span></section><section><h4>判定溢出与标志位<a href="#判定溢出与标志位"><span>#</span></a></h4><p>判断补码溢出常用以下三种方法。对加法而言，只有同号数相加可能溢出：
两个正数相加得到负数，或两个负数相加得到正数时发生溢出。
对减法而言，只有异号数相减可能溢出：被减数与减数符号不同，且结果符号
与被减数符号不同时发生溢出。</p><p>也可以比较进入符号位和从符号位产生的进位：二者不同时发生溢出。</p><p>第三种方法是采用双符号位，即 <span><span>0000</span><span><span><span></span><span>00</span></span></span></span> 表示正数，<span><span>1111</span><span><span><span></span><span>11</span></span></span></span> 表示负数，
<span><span>0101</span><span><span><span></span><span>01</span></span></span></span> 表示正数溢出，<span><span>1010</span><span><span><span></span><span>10</span></span></span></span> 表示负数溢出。</p><p>需要注意的是，双符号位只在运算过程中使用；存储一个 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位补码数时仍只保留 1 位符号位。</p><p>4 个标志位</p><ul>
<li>OF：Overflow Flag，代表有符号数运算是否发生溢出。</li>
<li>SF：Sign Flag，代表运算结果的符号位。</li>
<li>ZF：Zero Flag，代表运算结果是否为 0。</li>
<li>CF：Carry Flag，代表无符号运算产生的进位或借位（具体语义取决于指令集）。
<ul>
<li>对采用“减数取反并加 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>”的加法器，硬件常用
<span><span>CF=Cout⊕Sub\text{CF}=C_{\text{out}}\oplus\text{Sub}</span><span><span><span></span><span><span>CF</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>out</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>⊕</span><span></span></span><span><span></span><span><span>Sub</span></span></span></span></span>，其中 <span><span>Sub=0\text{Sub}=0</span><span><span><span></span><span><span>Sub</span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 表示加法、
<span><span>Sub=1\text{Sub}=1</span><span><span><span></span><span><span>Sub</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 表示减法。</li>
<li>加法运算（<span><span>A+BA+B</span><span><span><span></span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span></span></span></span>）：<span><span>CF=Cout\text{CF}=C_{\text{out}}</span><span><span><span></span><span><span>CF</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>out</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。若最高位产生进位，
则表示无符号加法溢出。</li>
<li>减法运算（<span><span>A−BA-B</span><span><span><span></span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>B</span></span></span></span>）：在 x86 等“CF 表示借位”的约定下，
<span><span>CF=¬Cout\text{CF}=\lnot C_{\text{out}}</span><span><span><span></span><span><span>CF</span></span><span></span><span>=</span><span></span></span><span><span></span><span>¬</span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>out</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>；若 <span><span>A&lt;BA&lt;B</span><span><span><span></span><span>A</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>B</span></span></span></span>，则发生借位。</li>
</ul>
</li>
</ul><p>需要注意的是，对于无符号数的加减法，OF 通常不用于判断无符号溢出；
对于有符号数运算，CF 通常不用于判断有符号溢出，但处理器仍可能同时更新这两个标志位。</p></section><section><h4>乘法<a href="#乘法"><span>#</span></a></h4><p>常见实现有移位加法迭代、顺序乘法器和阵列乘法器。</p><p>对于这三者，可以在 CPU 那一章有一个经典的分析，即为什么从时间上来讲，模拟耗时 &gt; 乘法器 &gt; 乘法阵列器。</p><p>即大体上来分析，模拟需要消耗多个指令周期，乘法器只需要消耗一个指令周期，而乘法阵列器只需要消耗一个时钟周期。</p><p>无符号数乘法（原码一位乘）。思路和手算一样，只是把“错位相加”换成了“部分积右移”。设被乘数 <span><span>XX</span><span><span><span></span><span>X</span></span></span></span>、乘数 <span><span>YY</span><span><span><span></span><span>Y</span></span></span></span> 都是 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位：</p><ol>
<li>看乘数最低位 <span><span>y0y_0</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，为 1 则部分积加 <span><span>XX</span><span><span><span></span><span>X</span></span></span></span>，为 0 则加 0；</li>
<li>部分积和乘数一起逻辑右移一位；</li>
<li>重复 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次，最后得到 <span><span>2n2n</span><span><span><span></span><span>2</span><span>n</span></span></span></span> 位的积。</li>
</ol><p>所以顺序乘法器需要 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次加法和 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次移位，一个加法器加几个寄存器就能实现，代价是慢。</p><p>阵列乘法器把 <span><span>n×nn\times n</span><span><span><span></span><span>n</span><span></span><span>×</span><span></span></span><span><span></span><span>n</span></span></span></span> 个全加器排成阵列，进位在阵列内部横向传递，一次就能算出 <span><span>2n2n</span><span><span><span></span><span>2</span><span>n</span></span></span></span> 位结果，代价是硬件量大。</p><p>有符号数乘法可以直接按原码做：符号位单独异或，数值部分当无符号数乘。也可以用补码直接乘，就是下面的 Booth 算法。</p><p>Booth 算法（补码一位乘）。在乘数最低位右边虚设一位 <span><span>y−1y_{-1}</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，初始为 0，每次看 <span><span>yiyi−1y_i y_{i-1}</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>i</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 两位：</p>

<table><thead><tr><th><span><span>yiyi−1y_i y_{i-1}</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>i</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></th><th>操作</th></tr></thead><tbody><tr><td>00</td><td>部分积加 0</td></tr><tr><td>01</td><td>部分积加 <span><span>[X]补[X]_{\text{补}}</span><span><span><span></span><span>[</span><span>X</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td></tr><tr><td>10</td><td>部分积减 <span><span>[X]补[X]_{\text{补}}</span><span><span><span></span><span>[</span><span>X</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，即加 <span><span>[−X]补[-X]_{\text{补}}</span><span><span><span></span><span>[</span><span>−</span><span>X</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span><span>补</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td></tr><tr><td>11</td><td>部分积加 0</td></tr></tbody></table><p>然后部分积和乘数一起算术右移一位，重复 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次（<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 为乘数位数，最后一步是否移位看具体教材的约定）。</p><p>Booth 的好处是不用管符号，正负数走同一套流程，而且乘数里连续的 0 和连续的 1 都只对应很少的加减操作。</p></section><section><h4>除法器的两种方式<a href="#除法器的两种方式"><span>#</span></a></h4><p>除法的本质是“左移、试减、看余数符号定商”。</p><p>恢复余数法：</p><ol>
<li>余数左移一位，减去除数；</li>
<li>若余数为负，说明不够减，商上 0，再把除数加回来恢复余数；</li>
<li>若余数为正，商上 1；</li>
<li>重复 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次。</li>
</ol><p>恢复余数法的问题是多了一次“加回来”的操作，速度慢。</p><p>不恢复余数法（加减交替法）就不恢复了：</p><ol>
<li>若余数为正，商上 1，左移后减除数；</li>
<li>若余数为负，商上 0，左移后加除数；</li>
<li>重复 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次。</li>
</ol><p>最后一步的规则要注意：如果第 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 步余数为负，需要再做一次加法把它恢复成正确的余数。</p><p>需要注意，原码除法是符号单独处理，数值部分按无符号数除；补码除法可以直接做，但商的修正规则（末位恒置 1 还是加 1）要按教材来，不要自己推。</p></section></section><section><h3>IEEE 浮点数<a href="#ieee-浮点数"><span>#</span></a></h3><section><h4>浮点数的表示<a href="#浮点数的表示"><span>#</span></a></h4><span><span><span>N=(−1)S×1.M×2E−biasN=(-1)^S\times 1.M\times 2^{E-\text{bias}}</span><span><span><span></span><span>N</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span>S</span></span></span></span></span></span></span></span><span></span><span>×</span><span></span></span><span><span></span><span>1.</span><span>M</span><span></span><span>×</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>E</span><span>−</span><span><span>bias</span></span></span></span></span></span></span></span></span></span></span></span></span></span><p>其中 <span><span>SS</span><span><span><span></span><span>S</span></span></span></span> 是符号位，<span><span>1.M1.M</span><span><span><span></span><span>1.</span><span>M</span></span></span></span> 是隐含最高位为 1 的规格化尾数（原码小数），<span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 是把真实阶码加上偏置后得到的无符号阶码字段，<span><span>bias\text{bias}</span><span><span><span></span><span><span>bias</span></span></span></span></span> 是偏置值。</p><p>需要注意，尾数用原码表示，所以不能像补码那样直接按位串比大小；浮点数比较要按符号、阶码、尾数依次比。</p><ul>
<li>float 型浮点数
<ul>
<li>符号位：1 位</li>
<li>阶码：8 位</li>
<li>尾数：23 位</li>
</ul>
</li>
<li>double 型浮点数
<ul>
<li>符号位：1 位</li>
<li>阶码：11 位</li>
<li>尾数：52 位</li>
</ul>
</li>
</ul><p>做这类题的时候，主要是要小心翼翼，不要脑子抽了。</p></section><section><h4>IEEE 浮点数的表示范围与特殊浮点数<a href="#ieee-浮点数的表示范围与特殊浮点数"><span>#</span></a></h4>

<table><thead><tr><th>类型</th><th>符号位 (S)</th><th>阶码位 (E)</th><th>尾数位 (M)</th><th>阶码偏置值 (Bias)</th><th>最小正非规范化数 (绝对值极小)</th><th>最小正规范化数</th><th>最大正规范化数 (绝对值极大)</th><th>十进制有效数字位数</th></tr></thead><tbody><tr><td>单精度 (float, 32 位)</td><td>1 位</td><td>8 位</td><td>23 位</td><td>127</td><td><span><span>2−149≈1.40×10−452^{-149} \approx 1.40 \times 10^{-45}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>−</span><span>149</span></span></span></span></span></span></span></span></span><span></span><span>≈</span><span></span></span><span><span></span><span>1.40</span><span></span><span>×</span><span></span></span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span><span>−</span><span>45</span></span></span></span></span></span></span></span></span></span></span></span></td><td><span><span>2−126≈1.18×10−382^{-126} \approx 1.18 \times 10^{-38}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>−</span><span>126</span></span></span></span></span></span></span></span></span><span></span><span>≈</span><span></span></span><span><span></span><span>1.18</span><span></span><span>×</span><span></span></span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span><span>−</span><span>38</span></span></span></span></span></span></span></span></span></span></span></span></td><td><span><span>(2−2−23)×2127≈3.40×1038(2 - 2^{-23}) \times 2^{127} \approx 3.40 \times 10^{38}</span><span><span><span></span><span>(</span><span>2</span><span></span><span>−</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>−</span><span>23</span></span></span></span></span></span></span></span></span><span>)</span><span></span><span>×</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>127</span></span></span></span></span></span></span></span></span><span></span><span>≈</span><span></span></span><span><span></span><span>3.40</span><span></span><span>×</span><span></span></span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span><span>38</span></span></span></span></span></span></span></span></span></span></span></span></td><td>约 6 ~ 7 位</td></tr><tr><td>双精度 (double, 64 位)</td><td>1 位</td><td>11 位</td><td>52 位</td><td>1023</td><td><span><span>2−1074≈4.94×10−3242^{-1074} \approx 4.94 \times 10^{-324}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1074</span></span></span></span></span></span></span></span></span><span></span><span>≈</span><span></span></span><span><span></span><span>4.94</span><span></span><span>×</span><span></span></span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span><span>−</span><span>324</span></span></span></span></span></span></span></span></span></span></span></span></td><td><span><span>2−1022≈2.23×10−3082^{-1022} \approx 2.23 \times 10^{-308}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1022</span></span></span></span></span></span></span></span></span><span></span><span>≈</span><span></span></span><span><span></span><span>2.23</span><span></span><span>×</span><span></span></span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span><span>−</span><span>308</span></span></span></span></span></span></span></span></span></span></span></span></td><td><span><span>(2−2−52)×21023≈1.80×10308(2 - 2^{-52}) \times 2^{1023} \approx 1.80 \times 10^{308}</span><span><span><span></span><span>(</span><span>2</span><span></span><span>−</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>−</span><span>52</span></span></span></span></span></span></span></span></span><span>)</span><span></span><span>×</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>1023</span></span></span></span></span></span></span></span></span><span></span><span>≈</span><span></span></span><span><span></span><span>1.80</span><span></span><span>×</span><span></span></span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span><span>308</span></span></span></span></span></span></span></span></span></span></span></span></td><td>约 15 ~ 17 位</td></tr></tbody></table>

<table><thead><tr><th>特殊数值名称</th><th>阶码字段 (E)</th><th>尾数字段 (M)</th><th>含义与说明</th></tr></thead><tbody><tr><td>正零 / 负零 (<span><span>±0\pm 0</span><span><span><span></span><span>±</span><span>0</span></span></span></span>)</td><td>全 0</td><td>全 0</td><td>符号位 <span><span>S=0S=0</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 表示 <span><span>+0+0</span><span><span><span></span><span>+</span><span>0</span></span></span></span>，<span><span>S=1S=1</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 表示 <span><span>−0-0</span><span><span><span></span><span>−</span><span>0</span></span></span></span>。在数值比较时 <span><span>+0=−0+0=-0</span><span><span><span></span><span>+</span><span>0</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>0</span></span></span></span> 成立。</td></tr><tr><td>正无穷 / 负无穷 (<span><span>±∞\pm \infty</span><span><span><span></span><span>±</span><span>∞</span></span></span></span>)</td><td>全 1 (单精度为 255，双精度为 2047)</td><td>全 0</td><td>符号位 <span><span>S=0S=0</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 表示 <span><span>+∞+\infty</span><span><span><span></span><span>+</span><span>∞</span></span></span></span>，<span><span>S=1S=1</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 表示 <span><span>−∞-\infty</span><span><span><span></span><span>−</span><span>∞</span></span></span></span>。通常出现在溢出或除以 0 的情况。</td></tr><tr><td>非数 (NaN, Not a Number)</td><td>全 1 (单精度为 255，双精度为 2047)</td><td>不全为 0</td><td>表示无效的未定义操作（例如 <span><span>0/00/0</span><span><span><span></span><span>0/0</span></span></span></span>、<span><span>∞−∞\infty-\infty</span><span><span><span></span><span>∞</span><span></span><span>−</span><span></span></span><span><span></span><span>∞</span></span></span></span> 或对负数开平方时产生）。分为静默 NaN (qNaN) 和发信号 NaN (sNaN)。</td></tr><tr><td>非规范化数 (Subnormal)</td><td>全 0</td><td>不全为 0</td><td>用于实现“渐进下溢”（Gradual Underflow），隐藏位变为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>（即 <span><span>0.M×21−Bias0.M \times 2^{1-\text{Bias}}</span><span><span><span></span><span>0.</span><span>M</span><span></span><span>×</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>1</span><span>−</span><span><span>Bias</span></span></span></span></span></span></span></span></span></span></span></span></span>），填补 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 到最小规范化数之间的空隙。</td></tr></tbody></table></section><section><h4>浮点数的相关计算<a href="#浮点数的相关计算"><span>#</span></a></h4><ul>
<li>对阶：小阶向大阶看齐。阶差为 <span><span>dd</span><span><span><span></span><span>d</span></span></span></span> 时，小阶的尾数右移 <span><span>dd</span><span><span><span></span><span>d</span></span></span></span> 位，阶码加 <span><span>dd</span><span><span><span></span><span>d</span></span></span></span>。右移移出的位不能直接扔掉，要保留下来参加后面的舍入</li>
<li>尾数加减：对阶之后按定点小数做加减，可能进位，也可能出现前导 0</li>
<li>尾数规格化
<ul>
<li>右规：尾数用双符号位时出现 <span><span>01.xxx01.xxx</span><span><span><span></span><span>01.</span><span>xxx</span></span></span></span> 或 <span><span>10.xxx10.xxx</span><span><span><span></span><span>10.</span><span>xxx</span></span></span></span>（加减时进位了），尾数右移 1 位，阶码加 1</li>
<li>左规：出现 <span><span>00.0xx⋯00.0xx\cdots</span><span><span><span></span><span>00.0</span><span>xx</span><span></span><span>⋯</span></span></span></span> 或 <span><span>11.1xx⋯11.1xx\cdots</span><span><span><span></span><span>11.1</span><span>xx</span><span></span><span>⋯</span></span></span></span>（对阶时丢了有效位），尾数每左移 1 位，阶码减 1，直到变成 <span><span>00.1xx⋯00.1xx\cdots</span><span><span><span></span><span>00.1</span><span>xx</span><span></span><span>⋯</span></span></span></span> 或 <span><span>11.0xx⋯11.0xx\cdots</span><span><span><span></span><span>11.0</span><span>xx</span><span></span><span>⋯</span></span></span></span></li>
<li>规格化的目的只有一个，让尾数最高位固定为 1，表示唯一，精度最大</li>
</ul>
</li>
<li>舍入
<ul>
<li>就近舍入（0 舍 1 入）：把保留位之后的部分看成 <span><span>0.xxx0.xxx</span><span><span><span></span><span>0.</span><span>xxx</span></span></span></span>，小于 <span><span>100100</span><span><span><span></span><span>100</span></span></span></span> 舍去，大于 <span><span>100100</span><span><span><span></span><span>100</span></span></span></span> 进 1，恰好等于 <span><span>100100</span><span><span><span></span><span>100</span></span></span></span> 时向偶数舍入，也就是看保留的末位，末位是 0 就舍，末位是 1 就进 1</li>
<li>直接进位：只要后面还有非 0 位就进 1，误差朝大方向</li>
<li>直接舍去：多余位直接扔掉，误差朝 0</li>
<li>向无穷进位 / 舍去：正数进 1，负数舍去</li>
<li>向 0 进位 / 舍去</li>
</ul>
</li>
<li>溢出判断
<ul>
<li>上溢：阶码超过最大阶码，按机器约定产生异常或置为 <span><span>±∞\pm\infty</span><span><span><span></span><span>±</span><span>∞</span></span></span></span></li>
<li>下溢：下溢指的是要下溢到非规格化浮点数都表示不了的程度，此时按机器零处理，不再当异常</li>
</ul>
</li>
</ul></section><section><h4>浮点数与整型转换相关<a href="#浮点数与整型转换相关"><span>#</span></a></h4><p>int 转 float，不会溢出，但可能会发生精度丢失。因为 float 的尾数只有 24 位有效（含隐藏位），而 int 有 31 位数值。</p><p>int 或 float 转 double，精确原值。double 的阶码和尾数都更长，能完整容纳。</p><p>double 转 float，可能溢出 / 精度丢失。阶码范围变小了，数值太大就变成 <span><span>±∞\pm\infty</span><span><span><span></span><span>±</span><span>∞</span></span></span></span>。</p><p>float 或 double 转 int，小数部分直接丢弃（向 0 取整），超出 int 的范围则结果未定义，一般表现为溢出。</p><p>需要注意，转换的顺序会影响结果：先把 float 转成 double 再转 int，和直接转 int 在边界上可能不同，做题时按题目的类型逐次转换。</p></section><section><h4>大端法与小端法<a href="#大端法与小端法"><span>#</span></a></h4><p>大端法：高位字节放在低地址，低位字节放在高地址，和人的书写顺序一致。</p><p>小端法：低位字节放在低地址，高位字节放在高地址，x86 用的是小端。</p><p>例如 32 位整数 <code>0x12345678</code>，从地址 <code>0x1000</code> 开始存放：</p>

<table><thead><tr><th>地址</th><th>大端法</th><th>小端法</th></tr></thead><tbody><tr><td><code>0x1000</code></td><td><code>12H</code></td><td><code>78H</code></td></tr><tr><td><code>0x1001</code></td><td><code>34H</code></td><td><code>56H</code></td></tr><tr><td><code>0x1002</code></td><td><code>56H</code></td><td><code>34H</code></td></tr><tr><td><code>0x1003</code></td><td><code>78H</code></td><td><code>12H</code></td></tr></tbody></table><p>需要注意，大小端只影响多字节数据在内存中的字节顺序，不影响单字节的内部位序，也不影响寄存器内部的位序。</p><p>做题时判断是哪种方式，就看题目给出的内存内容里，低地址放的是高位字节还是低位字节。</p></section><section><h4>数据对齐<a href="#数据对齐"><span>#</span></a></h4><p>数据对齐指的是数据的起始地址必须是其自身大小的整数倍。不对齐时可能需要多访存一次，某些平台甚至直接异常。</p><p>对齐规则一般是：</p><ul>
<li>每个成员的偏移量是其自身大小的整数倍，编译器在成员之间插入填充字节；</li>
<li>结构体总大小是其最大成员大小的整数倍，末尾也要填充。</li>
</ul><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>struct</span><span> </span><span>Test</span><span>{</span></div></div><div><div><div>2</div></div><div><span>    </span><span>char</span><span> </span><span>a</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>short</span><span> </span><span>b</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> </span><span>c</span><span>;</span></div></div><div><div><div>5</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>假设首地址是 0x1000H，那么 a 的地址是 0x1000H，b 的地址是 0x1002H（因为边界对齐，所以空 1 位），c 的地址是 0x1004H，结构体总大小为 8 字节。</p><p>如果把成员按“从大到小”排列，写成 <code>int c; short b; char a;</code>，那么 c 在 0x1000、b 在 0x1004、a 在 0x1006，总大小还是 8 字节，但没有浪费中间的空隙。</p><p>反过来写成 <code>char a; int c; short b;</code>，总大小会变成 12 字节。这就是调整成员顺序可以省空间的原因。</p></section></section></section>
<section><h2>存储系统<a href="#存储系统"><span>#</span></a></h2><section><h3>考纲 - 存储系统<a href="#考纲---存储系统"><span>#</span></a></h3><ul>
<li>存储器的分类</li>
<li>层次化存储器的基本结构</li>
<li>半导体随机存储器（RAM）：SRAM，DRAM，Flash 存储器</li>
<li>主存储器：DRAM 芯片和内存条、多模块存储器、主存储器和 CPU 之间的连接</li>
<li>外部存储器：磁盘存储器、固态硬盘</li>
<li>高速缓冲存储器
<ul>
<li>Cache 的基本原理：Cache 和主存之间的映射方式</li>
<li>Cache 中的主存替换算法；cache 写策略</li>
</ul>
</li>
<li>虚拟存储器
<ul>
<li>虚拟存储器的基本概念</li>
<li>页式虚拟存储器：基本原理、页表、地址转换、TLB（快表）</li>
<li>段式存储器的基本原理</li>
<li>段页式存储器的基本原理</li>
</ul>
</li>
</ul></section><section><h3>存储器分类<a href="#存储器分类"><span>#</span></a></h3><ul>
<li>
<p>按存储元件分类</p>
<ul>
<li>半导体材质：SRAM，DRAM</li>
<li>磁性材料：磁盘</li>
<li>光介质：光盘（需要注意可以随机寻址，但是只能顺序读）</li>
</ul>
</li>
<li>
<p>存取方式</p>
<ul>
<li>随机存取：RAM</li>
<li>顺序存取：磁带</li>
<li>直接存取：磁盘</li>
<li>相联存储：TLB，路由表，按内容访问的存储器</li>
</ul>
</li>
<li>
<p>信息可更改性</p>
<ul>
<li>只读：ROM，注意 flash 属于只读</li>
<li>可读可写：RAM</li>
</ul>
</li>
<li>
<p>可保存性</p>
<ul>
<li>易失性：RAM</li>
<li>非易失性：ROM，磁盘，光盘</li>
</ul>
</li>
</ul></section><section><h3>存储器的组成与层次化<a href="#存储器的组成与层次化"><span>#</span></a></h3><section><h4>层次化<a href="#层次化"><span>#</span></a></h4><p>CPU - Cache - 主存 - 磁盘 - 磁带/光盘</p><p>越往上速度越快、容量越小、单位成本越高；越往下容量越大、速度越慢、单位成本越低。寄存器也在最上层，容量最小、速度最快。</p><p>层次化能成立的前提是局部性原理：程序在一段时间内只访问一小部分地址。Cache 同时利用时间局部性和空间局部性，虚拟存储器主要利用时间局部性。</p><p>需要注意，各层之间的信息调度主体不同：Cache 与主存之间由硬件自动完成，主存与外存之间由操作系统的缺页处理完成。</p></section><section><h4>辨析存储周期与存取时间<a href="#辨析存储周期与存取时间"><span>#</span></a></h4><p>存储周期 &gt; 存取时间，存储周期 = 存取时间 + 复原时间。</p></section></section><section><h3>主存<a href="#主存"><span>#</span></a></h3><p>最先需要辨析的，是主存和内存。考研范围里，主存和内存是一个意思，而内存和生活中的常用语是不同的。</p><section><h4>SRAM<a href="#sram"><span>#</span></a></h4><p>本质为双稳态触发器，无须刷新。静态 RAM 存取速度快，但是集成度低，功耗大，成本高一般用于 cache 上。</p></section><section><h4>DRAM<a href="#dram"><span>#</span></a></h4><p>本质为电容，需要定时刷新。存取速度较慢，容易漏电丢失信息，读出过程为破坏性读出。</p><p>DRAM 需要地址线复用，并且需要注意的是，看清楚题目要求你计算什么。是地址线多少，还是几个 DRAM 组合起来的地址线多少。</p><p>例如，对于一个容量为 <span><span>16 KB16\text{ KB}</span><span><span><span></span><span>16</span><span><span> KB</span></span></span></span></span>、按字节编址的主存系统，CPU 访问该主存所需的系统地址线总共为 <span><span>1414</span><span><span><span></span><span>14</span></span></span></span> 根，因为 <span><span>16 KB=214 B16\text{ KB}=2^{14}\text{ B}</span><span><span><span></span><span>16</span><span><span> KB</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>14</span></span></span></span></span></span></span></span></span><span><span> B</span></span></span></span></span>。</p><p>这 <span><span>1414</span><span><span><span></span><span>14</span></span></span></span> 根地址线（<span><span>A13∼A0A_{13}\sim A_0</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>13</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∼</span><span></span></span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>）的功能划分为：</p><ul>
<li>高 4 位地址线（<span><span>A13∼A10A_{13}\sim A_{10}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>13</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∼</span><span></span></span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>10</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>）：用于片选译码。整个 <span><span>16 KB16\text{ KB}</span><span><span><span></span><span>16</span><span><span> KB</span></span></span></span></span> 空间按 <span><span>1 KB1\text{ KB}</span><span><span><span></span><span>1</span><span><span> KB</span></span></span></span></span> 划分为 16 个模块，通过这 4 根线译码产生片选信号，分别选中 <span><span>2 KB2\text{ KB}</span><span><span><span></span><span>2</span><span><span> KB</span></span></span></span></span> 的 ROM 模块以及 14 片 <span><span>1 K×8 位1\text{ K}\times 8\text{ 位}</span><span><span><span></span><span>1</span><span><span> K</span></span><span></span><span>×</span><span></span></span><span><span></span><span>8</span><span><span> </span><span>位</span></span></span></span></span> 的 DRAM 芯片；</li>
<li>低 10 位地址线（<span><span>A9∼A0A_9\sim A_0</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>9</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∼</span><span></span></span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>）：用于片内寻址。由于单片 DRAM 采用地址线复用技术，该 10 位片内地址在进入 DRAM 芯片前会被分时复用，拆分为 5 位行地址和 5 位列地址，因此所有 14 片 DRAM 的片内地址引脚全部并联接到这组复用线路上。</li>
</ul><p>注意，DRAM 内部是 5 根地址线，然后整个系统的地址总线就是 14。</p><p>内存条就是把多片 DRAM 芯片装在一块 PCB 上，再加一个 SPD 芯片（一般是 EEPROM，存容量、时序等参数，开机时由 BIOS 读取）。</p><p>需要注意，内存条的数据位宽要匹配内存总线宽度，例如 64 位总线就用 8 片 8 位的芯片并联；带 ECC 的内存条还要额外加校验芯片。</p><p>有三种刷新（复原）方式：</p><ul>
<li>集中刷新：在规定的最大复原周期内，前面的时间专门划给 CPU 时候，然后最后的时间专门划给刷新，缺点是有死区</li>
<li>分散刷新：把每一个系统工作周期分为两半，前半部分用来供 CPU 进行正常的读写操作，后半部分固定用来复原刷新一行存储单元，复原操作完全分散在每一个存取周期内部，系统响应极度平滑，随时可访存；但由于每次存取都要强行带上复原操作，导致整个存取周期直接翻倍拉长，大大降低了存储器的实际工作效率</li>
<li>异步刷新：集中与分散的折中方案。假设刷新周期为 2ms，存储阵列有 <span><span>128128</span><span><span><span></span><span>128</span></span></span></span> 行，就把 2ms 均分为 <span><span>128128</span><span><span><span></span><span>128</span></span></span></span> 段，每隔约 <span><span>15.6μs15.6\mu s</span><span><span><span></span><span>15.6</span><span>μ</span><span>s</span></span></span></span> 发出一次单行的复原请求。每一行有各自短暂的“死区”（仅占用一个读写周期的时间），死区被完全打散，宏观上几乎感觉不到停顿</li>
</ul><p>对于集中刷新，集中刷新被粗暴分成两个部分，一部分是给 CPU 使用，一部分是给刷新使用。</p><p>对于分散刷新，是每一个工作周期都刷新，也就是执行一下，刷新一下。</p><p>对于异步刷新，是执行一行刷新一次。</p><p>一般采用异步刷新，从而引出了如何设计几行几列：设存储阵列为 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 行 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 列，要求 <span><span>m≥nm\ge n</span><span><span><span></span><span>m</span><span></span><span>≥</span><span></span></span><span><span></span><span>n</span></span></span></span>，且 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 尽可能接近 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span>。</p><p>需要注意，行数越多，单次刷新涉及的单元越少，但刷新次数越多；行列接近正方形时，地址复用最省引脚，芯片内部连线也最短。</p><p>对于行缓冲器，一般是 SRAM 实现，用于缓存行数据。</p></section><section><h4>ROM<a href="#rom"><span>#</span></a></h4><p>断电后不会丢失数据，可靠。</p><ul>
<li>ROM
<ul>
<li>MROM，掩膜 ROM，不可修改</li>
<li>PROM，一次编程 ROM</li>
<li>EPROM，可擦除可编程 ROM，使用紫外线擦除且擦除次数有限</li>
<li>EEPROM，电擦除可编程 ROM</li>
</ul>
</li>
<li>Flash 闪存，读写性能不对称</li>
<li>SSD 固态硬盘</li>
</ul><p>可以注意，主存里一般是有 ROM 的，因为要存储 BIOS。</p></section><section><h4>SRAM、DRAM 与 Flash 的对比<a href="#sramdram-与-flash-的对比"><span>#</span></a></h4>

<table><thead><tr><th>对比项</th><th>SRAM</th><th>DRAM</th><th>Flash</th></tr></thead><tbody><tr><td>存储元</td><td>双稳态触发器（6 管）</td><td>电容（1 管 1 容）</td><td>浮栅晶体管</td></tr><tr><td>是否需要刷新</td><td>不需要</td><td>需要，定时刷新</td><td>不需要</td></tr><tr><td>读出是否破坏</td><td>非破坏性</td><td>破坏性，读出后要重写</td><td>非破坏性</td></tr><tr><td>地址线</td><td>不需要复用</td><td>行地址、列地址复用</td><td>按页、块寻址</td></tr><tr><td>速度</td><td>快</td><td>慢</td><td>介于两者之间</td></tr><tr><td>集成度</td><td>低</td><td>高</td><td>最高</td></tr><tr><td>功耗</td><td>大</td><td>小</td><td>小</td></tr><tr><td>成本</td><td>高</td><td>低</td><td>低</td></tr><tr><td>易失性</td><td>易失</td><td>易失</td><td>非易失</td></tr><tr><td>用途</td><td>Cache</td><td>主存</td><td>U 盘、SSD、BIOS</td></tr></tbody></table><p>需要注意，Flash 的读和写粒度不同：读以页为单位，写（编程）也是页，但擦除必须以块为单位，所以随机写要先读出整块、改完再写回，这也是 SSD 随机写慢的根本原因。</p><p>NOR Flash 可以按字节随机读，支持片内执行，常用来存 BIOS；NAND Flash 按页读写、成本低、容量大，用来做 SSD 和 U 盘。</p></section><section><h4>多模块存储器<a href="#多模块存储器"><span>#</span></a></h4><ul>
<li>
<p>连续编址，高位地址作为模块号，低位地址为模块内地址，各个模块不能并行访问，无法提高存储器的吞吐率。</p>
</li>
<li>
<p>交叉编址（低位编址），低位地址用作模块号，高位地址作为模块内地址。</p>
<ul>
<li>轮流启动：按模块号轮流启动，每个模块的存取周期为 <span><span>TT</span><span><span><span></span><span>T</span></span></span></span>，总线传送周期为 <span><span>rr</span><span><span><span></span><span>r</span></span></span></span>，则连续读取 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 个字所需的时间为 <span><span>t=T+(m−1)rt=T+(m-1)r</span><span><span><span></span><span>t</span><span></span><span>=</span><span></span></span><span><span></span><span>T</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>r</span></span></span></span></li>
<li>同时启动：一次性取 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个模块，即连续几个字节一起读，可以理解为类似超字长</li>
<li>需要注意，交叉编址能提高带宽的前提是 <span><span>m≥Trm\ge \frac{T}{r}</span><span><span><span></span><span>m</span><span></span><span>≥</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>r</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>T</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，否则模块还没复原完，下一轮又轮到它了</li>
</ul>
</li>
</ul><p>需要注意，多模块交叉存储提高的是带宽，不是单个字的访问延迟。单个字的延迟还是由模块本身决定。</p></section></section><section><h3>主存与 CPU 的连接<a href="#主存与-cpu-的连接"><span>#</span></a></h3><p>这块知识并不难，主要是要把 16 进制的地址转换成 2 进制理解，并且不要想当然地去计算（比如说本来只有位扩展，但是写的字位扩展）。</p><p>还有就是一定要捋清楚 A0 - A15 谁是高位，谁是低位，这个题目里会讲。</p><section><h4>位扩展<a href="#位扩展"><span>#</span></a></h4><p>芯片的字数够、位数不够。所有芯片的地址线、片选线并联，数据线分别接到不同的位，几片一起构成一个更宽的字。</p><p>例如用 <span><span>1 K×41\text{ K}\times 4</span><span><span><span></span><span>1</span><span><span> K</span></span><span></span><span>×</span><span></span></span><span><span></span><span>4</span></span></span></span> 位的芯片组成 <span><span>1 K×81\text{ K}\times 8</span><span><span><span></span><span>1</span><span><span> K</span></span><span></span><span>×</span><span></span></span><span><span></span><span>8</span></span></span></span> 位的存储器，需要 2 片，两片的地址线全部并联，一片接 <span><span>D0∼D3D_0\sim D_3</span><span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∼</span><span></span></span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，另一片接 <span><span>D4∼D7D_4\sim D_7</span><span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∼</span><span></span></span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>7</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，读写同时进行。</p></section><section><h4>字扩展<a href="#字扩展"><span>#</span></a></h4><p>位数够、字数不够。数据线并联，地址线的低位并联，高位用来译码产生片选信号。</p><p>例如用 <span><span>1 K×81\text{ K}\times 8</span><span><span><span></span><span>1</span><span><span> K</span></span><span></span><span>×</span><span></span></span><span><span></span><span>8</span></span></span></span> 位的芯片组成 <span><span>4 K×84\text{ K}\times 8</span><span><span><span></span><span>4</span><span><span> K</span></span><span></span><span>×</span><span></span></span><span><span></span><span>8</span></span></span></span> 位的存储器，需要 4 片，地址线 <span><span>A9∼A0A_9\sim A_0</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>9</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∼</span><span></span></span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 并联，<span><span>A11A10A_{11}A_{10}</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>11</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>10</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 经 2-4 译码器产生 4 个片选信号。</p></section><section><h4>字位扩展<a href="#字位扩展"><span>#</span></a></h4><p>两者都需要，先位扩展成一组，再把多组字扩展。</p><p>需要注意，片选信号的产生有两种方式：</p><ul>
<li>线选法：高位地址线直接作为片选，简单，但地址空间有空洞，不能充分利用；</li>
<li>译码片选法：高位地址经译码器产生片选，地址连续，用得多，但要考虑译码器的使能端接法。</li>
</ul><p>计算地址范围时，先算出每片的容量，再乘以片数，然后根据题目给的起始地址写出十六进制范围，不要凭印象写。</p></section></section><section><h3>磁盘与 SSD<a href="#磁盘与-ssd"><span>#</span></a></h3><ul>
<li>
<p>磁盘：直接存取存储器，扇区是最小的单位。</p>
<ul>
<li>磁道（柱面） -&gt; 盘面（磁头） -&gt; 扇区（这个是地址划分）</li>
<li>非格式化容量 &gt; 格式化容量</li>
<li>格式化容量 <span><span>==</span><span><span><span></span><span>=</span></span></span></span> 记录面数 <span><span>×\times</span><span><span><span></span><span>×</span></span></span></span> 每面磁道数 <span><span>×\times</span><span><span><span></span><span>×</span></span></span></span> 每道扇区数 <span><span>×\times</span><span><span><span></span><span>×</span></span></span></span> 扇区容量</li>
<li>数据传输率 <span><span>==</span><span><span><span></span><span>=</span></span></span></span> 每道扇区数 <span><span>×\times</span><span><span><span></span><span>×</span></span></span></span> 扇区容量 <span><span>×\times</span><span><span><span></span><span>×</span></span></span></span> 转速（转速的单位要换成转每秒）</li>
<li>平均旋转等待时间 <span><span>==</span><span><span><span></span><span>=</span></span></span></span> 磁盘转一圈时间的一半，即 <span><span>12×60转速（r/min）\frac{1}{2}\times\frac{60}{\text{转速（r/min）}}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>×</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>转速（</span><span>r/min</span><span>）</span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>60</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></li>
<li>响应时间 = 排队时延 + 控制时间 + 寻道时间 + 旋转等待时间 + 数据传输时间（具体题目会给条件，给的条件的都要算进去）</li>
<li>需要注意，磁盘地址按柱面、磁头、扇区排列，先同柱面再换磁头，就是为了减少寻道</li>
<li>RAID 独立冗余磁盘阵列。将多个独立的物理磁盘合成一个逻辑磁盘
<ul>
<li>RAID0：条带化，没有冗余，容量利用率 <span><span>100%100\%</span><span><span><span></span><span>100%</span></span></span></span>，坏一块盘数据全丢</li>
<li>RAID1：镜像，容量利用率 <span><span>50%50\%</span><span><span><span></span><span>50%</span></span></span></span>，可靠性最高</li>
<li>RAID2：海明码校验，已经淘汰</li>
<li>RAID3：位交叉奇偶校验，校验信息集中在一个盘上，容量利用率 <span><span>(n−1)/n(n-1)/n</span><span><span><span></span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>/</span><span>n</span></span></span></span></li>
<li>RAID4：块交叉奇偶校验，校验盘成为写瓶颈</li>
<li>RAID5：无独立校验盘分布式奇偶校验磁盘阵列，容量利用率 <span><span>(n−1)/n(n-1)/n</span><span><span><span></span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>/</span><span>n</span></span></span></span>，允许坏 1 块盘</li>
</ul>
</li>
</ul>
</li>
<li>
<p>SSD</p>
<ul>
<li>基于闪存的存储设备</li>
<li>读/写以页为单位，擦除以块为单位</li>
<li>随机写慢，是因为擦除时间耗时长，并且如果修改的话，需要先复制到另一个页，写入后然后再写回。</li>
<li>磨损均衡
<ul>
<li>动态磨损均衡：写入数据的时候优先写入到空闲的页</li>
<li>静态磨损均衡：在后台自动迁移到高磨损块中（把基本只读的东西搬运）</li>
</ul>
</li>
</ul>
</li>
</ul></section><section><h3>cache<a href="#cache"><span>#</span></a></h3><section><h4>cache 的基本工作原理<a href="#cache-的基本工作原理"><span>#</span></a></h4><p>主存和 Cache 都按块划分，块大小相同，块内地址一一对应。</p><p>CPU 访存时，先用地址中的某几位判断它落在 Cache 的哪一行，再比较标记，标记一致且有效位为 1 就是命中，直接读 Cache；否则就是不命中，需要从主存把整个块调入，再按替换算法决定换出哪一块。</p><p>所以一次访存的时间取决于命中率，而命中率取决于程序局部性和映射、替换策略。</p><p>需要注意，Cache 与主存之间以块为单位交换，CPU 与 Cache 之间以字为单位访问，块大小的选择是空间局部性和缺失代价的折中。</p></section><section><h4>局部性原理<a href="#局部性原理"><span>#</span></a></h4><ul>
<li>时间局部性：访问我之后，在短时间内还会再访问自己</li>
<li>空间局部性：访问我之后，在短时间内会访问我身边的人</li>
</ul></section><section><h4>cache 命中率<a href="#cache-命中率"><span>#</span></a></h4><ul>
<li>耗时
<ul>
<li>在访问 cache 时同时读主存</li>
<li>在访问 cache 后发现未命中，再读主存</li>
<li>这两种方案看具体题目怎么讲</li>
</ul>
</li>
</ul><p>设命中率为 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span>，Cache 访问时间为 <span><span>tct_c</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>c</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，主存访问时间为 <span><span>tmt_m</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p><p>同时访问时，未命中也不用再等一次 Cache，所以</p><span><span><span>tavg=h tc+(1−h) tmt_{\text{avg}}=h\,t_c+(1-h)\,t_m</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span><span><span>avg</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>h</span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>c</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>h</span><span>)</span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><p>先查 Cache、未命中再查主存时，未命中的那一次要先把 Cache 查完，所以</p><span><span><span>tavg=tc+(1−h) tmt_{\text{avg}}=t_c+(1-h)\,t_m</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span><span><span>avg</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>c</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>h</span><span>)</span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><p>效率是</p><span><span><span>e=tctavge=\frac{t_c}{t_{\text{avg}}}</span><span><span><span></span><span>e</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>t</span><span><span><span><span><span><span></span><span><span><span><span>avg</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>t</span><span><span><span><span><span><span></span><span><span>c</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><p>需要注意，题目说“Cache 与主存同时访问”时，主存里也要有这一块的数据，命中时主存的读出结果被丢弃，这是用硬件换时间。</p><p>多级 Cache 要分清局部缺失率和全局缺失率：局部缺失率是相对于本级的访问次数算的，全局缺失率是相对于 CPU 的总访问次数算的，两者的分母不同。</p></section><section><h4>cache 映射方式<a href="#cache-映射方式"><span>#</span></a></h4><ul>
<li>直接映射</li>
<li>全相联映射</li>
<li>组相联映射</li>
</ul><p>设 Cache 有 <span><span>2c2^c</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>c</span></span></span></span></span></span></span></span></span></span></span> 行，块大小是 <span><span>2b2^b</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>b</span></span></span></span></span></span></span></span></span></span></span> 字节，主存地址 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 位。</p><p>直接映射：地址分为标记、行号、块内地址。行号 <span><span>cc</span><span><span><span></span><span>c</span></span></span></span> 位，块内地址 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 位，标记 <span><span>m−c−bm-c-b</span><span><span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>c</span><span></span><span>−</span><span></span></span><span><span></span><span>b</span></span></span></span> 位。一个主存块只能放到固定的行，硬件只需要一个比较器，冲突多。</p><p>全相联映射：地址分为标记、块内地址。标记 <span><span>m−bm-b</span><span><span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>b</span></span></span></span> 位。任何块可以放到任何行，冲突最少，但要和所有行的标记同时比较，成本高，只适合小容量。</p><p>组相联映射：Cache 分成 <span><span>2s2^s</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>s</span></span></span></span></span></span></span></span></span></span></span> 组，每组 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 路。地址分为标记、组号、块内地址。组号 <span><span>ss</span><span><span><span></span><span>s</span></span></span></span> 位，标记 <span><span>m−s−bm-s-b</span><span><span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>s</span><span></span><span>−</span><span></span></span><span><span></span><span>b</span></span></span></span> 位。这是前两者的折中，<span><span>k=1k=1</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span> 就是直接映射，<span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 等于行数就是全相联。</p><p>需要注意，块内地址的位数只由块大小决定，和 Cache 总容量无关；组号位数由组数决定，组数等于行数除以路数。</p><p>地址划分的位数一旦算错，后面的命中判断全错，所以做题第一步先把三个字段的位数写在草稿上。</p><p>命中率的典型场景分析见后面单独的一节。</p></section><section><h4>cache 替换算法<a href="#cache-替换算法"><span>#</span></a></h4><ul>
<li>RAND</li>
<li>FIFO：对于 FIFO，需要注意其并不是按照物理顺序存进去的，而是也要存一个 id 来记录</li>
<li>LRU：最近最少使用，对于 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个块需要 <span><span>⌈log⁡2n⌉\lceil\log_2 n\rceil</span><span><span><span></span><span>⌈</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>⌉</span></span></span></span> 位来记录。每次访问都把自己的计数器清零，其他块的计数器 +1，替换则是替换掉计数器最大的（也就是最久没被访问的）</li>
<li>LFU：最不经常使用算法，即新装入时计数器初始化为 0，每次访问 +1（到最大值了则是不变）。每次替换替换掉最小的。这个方法的问题是全局较大可能并非近期需求最大，例如半个小时前正在微信通话，而微信通话结束了，现在任务需求是聊天，那么微信通话的版块会持续占用</li>
</ul></section><section><h4>cache 一致性问题<a href="#cache-一致性问题"><span>#</span></a></h4><ul>
<li>cache 写命中处理
<ul>
<li>全写法（直写法）：同时写入主存和 cache，可以引入缓冲机制</li>
<li>回写法（写回法）：仅写回 cache，提高了 cache 效率</li>
</ul>
</li>
<li>cache 写不命中处理方法
<ul>
<li>写分配法：写入主存对应单元，然后调入 cache（也有的书是先调入 cache 再写 cache），具体题目具体分析</li>
<li>非写分配法：不命中直接写入主存，不调入 cache</li>
</ul>
</li>
</ul><p>四种组合里，全写法配非写分配、回写法配写分配是最常见的搭配：全写法每次都要写主存，再调入 cache 意义不大；回写法只写 cache，不调入的话修改无处落地。</p><p>需要注意，写分配法会带来一次额外的块调入，如果程序写的是整块数据（比如清零一个大数组），反而非写分配更快。</p></section><section><h4>cache 的容量与位数计算<a href="#cache-的容量与位数计算"><span>#</span></a></h4><p>注意指令 cache 与数据 cache 分离（看题目里具体要求）。</p><p>有效位是必要的，因为 cache 的命中与否需要通过有效位来判断。</p><p>对于脏位，则是回写法需要。</p><p>对于替换算法，例如 LRU，FIFO，LFU 需要替换算法位（注意直接映射不需要替换算法）</p><p>其他的是标记位 tag，数据位。</p><p>总位数可以按行算：</p><span><span><span>总位数=行数×(有效位+脏位+替换算法位+标记位+数据位)\text{总位数}=\text{行数}\times(\text{有效位}+\text{脏位}+\text{替换算法位}+\text{标记位}+\text{数据位})</span><span><span><span></span><span><span>总位数</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>行数</span></span><span></span><span>×</span><span></span></span><span><span></span><span>(</span><span><span>有效位</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>脏位</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>替换算法位</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>标记位</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>数据位</span></span><span>)</span></span></span></span></span><p>需要注意，写回法才有脏位，直接映射没有替换算法位，这两项是最容易漏的。</p></section><section><h4>cache 的应用<a href="#cache-的应用"><span>#</span></a></h4><ul>
<li>cache 数据与指令分离</li>
<li>多级 cache</li>
</ul></section><section><h4>关于 cache 其他需要注意的事项<a href="#关于-cache-其他需要注意的事项"><span>#</span></a></h4><p>cache 块大小和 cache 本身大小无关。</p></section></section><section><h3>虚拟存储器<a href="#虚拟存储器"><span>#</span></a></h3><p>这块内容主要是操作系统的部分讲的很详细，下面主要讲几点比较需要注意的。</p><section><h4>虚拟存储器与 cache 的辨析<a href="#虚拟存储器与-cache-的辨析"><span>#</span></a></h4><p>两者都建立在局部性原理上，但方向不同：Cache 解决的是速度，虚拟存储器解决的是容量。</p><p>Cache 的缺失由硬件处理，代价是几十个时钟周期；虚存的缺页由操作系统处理，代价是毫秒级，所以虚存的缺失率必须极低。</p><p>正因为缺失代价太大，虚存几乎都采用全相联或大组相联，替换算法接近 LRU，写策略采用写回法。</p><p>虚存的地址转换是硬件（MMU）做的，但页表的填写、缺页的调入是操作系统做的，所以是软硬件结合。</p></section><section><h4>页式虚拟存储器<a href="#页式虚拟存储器"><span>#</span></a></h4><p>虚拟地址分成虚页号和页内偏移，物理地址分成实页号和页内偏移，页内偏移不变，只换页号。</p><p>页表项一般包含：有效位（是否在内存）、物理页号、访问权限、脏位（是否被修改）、访问位（供替换算法使用）。</p><p>地址转换：CPU 给出虚地址，MMU 用虚页号查页表得到物理页号，再和页内偏移拼成物理地址。</p><p>需要注意，页表在主存里，所以不命中 TLB 时一次访存要访问两次主存（一次查页表，一次取数据），这就是引入 TLB 的原因。</p><p>页表的表项数和虚拟地址空间大小有关，和物理内存大小无关；页表本身可能很大，所以用多级页表，只把用到的页表页放在内存里。</p></section><section><h4>段式虚拟存储器<a href="#段式虚拟存储器"><span>#</span></a></h4><p>段是按程序的逻辑结构划分的，每段长度不同，段表项包含段长、段基址、权限等。</p><p>虚地址分成段号和段内偏移，转换时用段号查段表得到段基址，再加上段内偏移。</p><p>需要注意两点：段内偏移不能超过段长，否则越界；段式便于共享和保护，因为段是有意义的逻辑单位（代码段、数据段、栈段）。</p></section><section><h4>段页式虚拟存储器<a href="#段页式虚拟存储器"><span>#</span></a></h4><p>先把程序按逻辑分段，再把每个段分成固定大小的页。</p><p>虚地址分成段号、段内页号、页内偏移。转换时先查段表得到该段页表的基址，再查页表得到物理页号。</p><p>所以不命中 TLB 时，一次访存最多要查三次主存：段表、页表、数据。TLB 里通常直接存放最终的映射，避免重复查表。</p>

<table><thead><tr><th>对比项</th><th>页式</th><th>段式</th><th>段页式</th></tr></thead><tbody><tr><td>划分依据</td><td>固定大小，物理划分</td><td>逻辑意义，程序划分</td><td>先逻辑分段，段内再分页</td></tr><tr><td>地址结构</td><td>虚页号 + 页内偏移</td><td>段号 + 段内偏移</td><td>段号 + 段内页号 + 页内偏移</td></tr><tr><td>是否等长</td><td>等长</td><td>不等长</td><td>页等长，段不等长</td></tr><tr><td>碎片</td><td>内部碎片</td><td>外部碎片</td><td>内部碎片</td></tr><tr><td>共享与保护</td><td>不方便</td><td>方便</td><td>较方便</td></tr><tr><td>表</td><td>页表</td><td>段表</td><td>段表 + 页表</td></tr></tbody></table></section><section><h4>组相联 TLB<a href="#组相联-tlb"><span>#</span></a></h4><p>与 cache 类似。</p></section><section><h4>辨析 TLB，Page 和 cache 的层次<a href="#辨析-tlbpage-和-cache-的层次"><span>#</span></a></h4><p>见下面的分析。</p></section><section><h4>页号、块号与具体地址<a href="#页号块号与具体地址"><span>#</span></a></h4><p>需要辨析，不要相互混淆，尤其是在做题的时候，给的是第 x 块，而不可以将之当成具体地址去算 cache。</p><p>由于边界对齐，所以很多时候都不需要存完整的地址，存“块”地址即可。</p></section></section><section><h3>cache 命中率分析<a href="#cache-命中率分析"><span>#</span></a></h3><p>假设系统环境如下：</p><ol>
<li>数据类型：标准 32 位整型，每个 <code>int</code> 占 <span><span>4 B4\text{ B}</span><span><span><span></span><span>4</span><span><span> B</span></span></span></span></span>。</li>
<li>Cache 块大小（Block Size）：<span><span>B=64 BB = 64\text{ B}</span><span><span><span></span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>64</span><span><span> B</span></span></span></span></span>（即每个 Cache 块恰好容纳 <span><span>64/4=1664 / 4 = 16</span><span><span><span></span><span>64/4</span><span></span><span>=</span><span></span></span><span><span></span><span>16</span></span></span></span> 个 <code>int</code>）。</li>
<li>Cache 总容量（Capacity）：<span><span>C=8 KB=8192 BC = 8\text{ KB} = 8192\text{ B}</span><span><span><span></span><span>C</span><span></span><span>=</span><span></span></span><span><span></span><span>8</span><span><span> KB</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8192</span><span><span> B</span></span></span></span></span>（共 <span><span>8192/64=1288192 / 64 = 128</span><span><span><span></span><span>8192/64</span><span></span><span>=</span><span></span></span><span><span></span><span>128</span></span></span></span> 个 Cache 行）。</li>
<li>映射与替换：采用全相联映射（Fully Associative），替换策略为 LRU。</li>
</ol><section><h4>场景 1 深入辨析（容量截断效应）<a href="#场景-1-深入辨析容量截断效应"><span>#</span></a></h4></section><section><h4>1. 数据规模与排布 - 1<a href="#1-数据规模与排布---1"><span>#</span></a></h4><ul>
<li>数组规模：<span><span>1024 行×64 列1024 \text{ 行} \times 64 \text{ 列}</span><span><span><span></span><span>1024</span><span><span> </span><span>行</span></span><span></span><span>×</span><span></span></span><span><span></span><span>64</span><span><span> </span><span>列</span></span></span></span></span>。</li>
<li>数组总大小：<span><span>1024×64×4 B=256 KB1024 \times 64 \times 4\text{ B} = 256\text{ KB}</span><span><span><span></span><span>1024</span><span></span><span>×</span><span></span></span><span><span></span><span>64</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>256</span><span><span> KB</span></span></span></span></span>。</li>
<li>每行大小：<span><span>64×4 B=256 B64 \times 4\text{ B} = 256\text{ B}</span><span><span><span></span><span>64</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>256</span><span><span> B</span></span></span></span></span>（跨越 <span><span>256/64=4256 / 64 = 4</span><span><span><span></span><span>256/64</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span> 个 Cache 块）。</li>
<li>核心关系：数组总容量（<span><span>256 KB256\text{ KB}</span><span><span><span></span><span>256</span><span><span> KB</span></span></span></span></span>）<span><span>≫\gg</span><span><span><span></span><span>≫</span></span></span></span> Cache 容量（<span><span>8 KB8\text{ KB}</span><span><span><span></span><span>8</span><span><span> KB</span></span></span></span></span>）。</li>
</ul></section><section><h4>2. 行优先访问分析 - 1<a href="#2-行优先访问分析---1"><span>#</span></a></h4><ul>
<li>访问模式：按内存连续物理地址线性扫描。</li>
<li>命中过程：
<ul>
<li>每当访问到新 Cache 块的首个元素时，发生 1 次冷缺失（Cold Miss），并将包含连续 16 个 <code>int</code> 的整块装入 Cache。</li>
<li>紧随其后的 15 个元素全部命中空间局部性（Hit）。</li>
</ul>
</li>
<li>命中率计算：
<span><span>Hit Rate行=16−116=1516=93.75%\text{Hit Rate}_{\text{行}} = \frac{16 - 1}{16} = \frac{15}{16} = 93.75\%</span><span><span><span></span><span><span><span>Hit Rate</span></span><span><span><span><span><span><span></span><span><span><span><span>行</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>16</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>16</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>16</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>15</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>93.75%</span></span></span></span>
满足命中率 <span><span>≥90%\ge 90\%</span><span><span><span></span><span>≥</span><span></span></span><span><span></span><span>90%</span></span></span></span> 的要求！</li>
</ul></section><section><h4>3. 列优先访问分析 - 1<a href="#3-列优先访问分析---1"><span>#</span></a></h4><ul>
<li>访问模式：外层循环遍历列，内层循环遍历行。</li>
<li>访存步长（Stride）：每次访问跨越一行，步长为 <span><span>256 B256\text{ B}</span><span><span><span></span><span>256</span><span><span> B</span></span></span></span></span>（<span><span>44</span><span><span><span></span><span>4</span></span></span></span> 个块）。</li>
<li>命中过程：
<ul>
<li>遍历第 0 列时，依次访问 <code>A[0][0], A[1][0], ..., A[1023][0]</code>，共访问 1024 个元素，分布在 1024 个互不相同的 Cache 块中。</li>
<li>遍历整列需要的数据量为 <span><span>1024×64 B=64 KB1024 \times 64\text{ B} = 64\text{ KB}</span><span><span><span></span><span>1024</span><span></span><span>×</span><span></span></span><span><span></span><span>64</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>64</span><span><span> KB</span></span></span></span></span>。</li>
<li>但 Cache 只有 <span><span>8 KB8\text{ KB}</span><span><span><span></span><span>8</span><span><span> KB</span></span></span></span></span>（只能存 128 个块）！当访问到第 128 行以后，前面装入的块早就被 LRU 策略无情淘汰冲刷掉了。</li>
<li>当第 0 列全部结束、开始访问第 1 列的 <code>A[0][1]</code> 时，原本包含该元素的块早在一万年前就被踢出了 Cache！</li>
<li>因此，每个元素在被访问时，其所在的块都不在 Cache 中。</li>
</ul>
</li>
<li>命中率计算：
<span><span>Hit Rate列=0%\text{Hit Rate}_{\text{列}} = 0\%</span><span><span><span></span><span><span><span>Hit Rate</span></span><span><span><span><span><span><span></span><span><span><span><span>列</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0%</span></span></span></span>
完美达成列访问 <span><span>0%0\%</span><span><span><span></span><span>0%</span></span></span></span> 的指标！</li>
</ul></section><section><h4>场景 2 深入辨析（工作集常驻效应）<a href="#场景-2-深入辨析工作集常驻效应"><span>#</span></a></h4></section><section><h4>1. 数据规模与排布 - 2<a href="#1-数据规模与排布---2"><span>#</span></a></h4><ul>
<li>数组规模：<span><span>64 行×24 列64 \text{ 行} \times 24 \text{ 列}</span><span><span><span></span><span>64</span><span><span> </span><span>行</span></span><span></span><span>×</span><span></span></span><span><span></span><span>24</span><span><span> </span><span>列</span></span></span></span></span>。</li>
<li>数组总大小：<span><span>64×24×4 B=6144 B=6 KB64 \times 24 \times 4\text{ B} = 6144\text{ B} = 6\text{ KB}</span><span><span><span></span><span>64</span><span></span><span>×</span><span></span></span><span><span></span><span>24</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>6144</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>6</span><span><span> KB</span></span></span></span></span>。</li>
<li>占用的 Cache 块数：<span><span>6144 B/64 B=966144\text{ B} / 64\text{ B} = 96</span><span><span><span></span><span>6144</span><span><span> B</span></span><span>/64</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>96</span></span></span></span> 个块。</li>
<li>核心关系：数组总容量（<span><span>6 KB6\text{ KB}</span><span><span><span></span><span>6</span><span><span> KB</span></span></span></span></span>）<span><span>&lt;&lt;</span><span><span><span></span><span>&lt;</span></span></span></span> Cache 容量（<span><span>8 KB8\text{ KB}</span><span><span><span></span><span>8</span><span><span> KB</span></span></span></span></span>，可容纳 128 个块）。</li>
<li>决定性结论：整个数组可以被 Cache 100% 完全装下，遍历全程不会触发任何容量替换（Capacity Eviction）！</li>
</ul></section><section><h4>2. 行优先访问分析 - 2<a href="#2-行优先访问分析---2"><span>#</span></a></h4><ul>
<li>访问总次数：<span><span>64×24=153664 \times 24 = 1536</span><span><span><span></span><span>64</span><span></span><span>×</span><span></span></span><span><span></span><span>24</span><span></span><span>=</span><span></span></span><span><span></span><span>1536</span></span></span></span> 次。</li>
<li>缺失情况：按行线性读入，共经历 <span><span>9696</span><span><span><span></span><span>96</span></span></span></span> 个数据块，因此发生 <span><span>9696</span><span><span><span></span><span>96</span></span></span></span> 次冷缺失（Cold Miss）。</li>
<li>命中情况：其余所有访问均为块内空间局部性命中，命中次数为 <span><span>1536−96=14401536 - 96 = 1440</span><span><span><span></span><span>1536</span><span></span><span>−</span><span></span></span><span><span></span><span>96</span><span></span><span>=</span><span></span></span><span><span></span><span>1440</span></span></span></span> 次。</li>
<li>命中率计算：
<span><span>Hit Rate行=14401536=1516=93.75%\text{Hit Rate}_{\text{行}} = \frac{1440}{1536} = \frac{15}{16} = 93.75\%</span><span><span><span></span><span><span><span>Hit Rate</span></span><span><span><span><span><span><span></span><span><span><span><span>行</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>1536</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1440</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>16</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>15</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>93.75%</span></span></span></span></li>
</ul></section><section><h4>3. 列优先访问分析 - 2<a href="#3-列优先访问分析---2"><span>#</span></a></h4><ul>
<li>访问总次数：同样是 <span><span>15361536</span><span><span><span></span><span>1536</span></span></span></span> 次。</li>
<li>缺失情况：
<ul>
<li>列优先访问时，由于数据跳步访问，冷缺失的发生时刻被打散了。</li>
<li>但是，因为 Cache 容积（128 行）大于数组占用的总行数（96 行），一旦某个块因冷缺失被调入 Cache，在整轮遍历结束之前，它就永远不会被挤出 Cache！</li>
<li>这意味着：整个数组占据的这 96 个块，无论按什么乱七八糟的顺序访问，每个块都仅且只会在第一次被触碰时发生 1 次冷缺失！</li>
<li>整个遍历过程的总缺失次数依然严格等于 96 次！</li>
</ul>
</li>
<li>命中情况：除了 96 次初次调入外，剩下的 <span><span>1536−96=14401536 - 96 = 1440</span><span><span><span></span><span>1536</span><span></span><span>−</span><span></span></span><span><span></span><span>96</span><span></span><span>=</span><span></span></span><span><span></span><span>1440</span></span></span></span> 次访问，全部命中！</li>
<li>命中率计算：
<span><span>Hit Rate列=1536−961536=14401536=93.75%\text{Hit Rate}_{\text{列}} = \frac{1536 - 96}{1536} = \frac{1440}{1536} = 93.75\%</span><span><span><span></span><span><span><span>Hit Rate</span></span><span><span><span><span><span><span></span><span><span><span><span>列</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>1536</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1536</span><span>−</span><span>96</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>1536</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1440</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>93.75%</span></span></span></span></li>
</ul><p>两者命中率不仅完全相同（均为 <span><span>93.75%93.75\%</span><span><span><span></span><span>93.75%</span></span></span></span>），而且远超 <span><span>80%+80\%+</span><span><span><span></span><span>80%</span><span>+</span></span></span></span>！</p></section><section><h4>场景 3 <span><span>1024×41024 \times 4</span><span><span><span></span><span>1024</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span></span></span></span> 的长条矩阵<a href="#场景-3-102441024-times-410244-的长条矩阵"><span>#</span></a></h4><p>我们选取体系结构中极为经典的小列宽长矩阵：<span><span>1024 行×4 列1024 \text{ 行} \times 4 \text{ 列}</span><span><span><span></span><span>1024</span><span><span> </span><span>行</span></span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span><span> </span><span>列</span></span></span></span></span> 的 <code>int</code> 数组。</p><ul>
<li>一行的大小：<span><span>4 列×4 B=16 B4 \text{ 列} \times 4\text{ B} = 16\text{ B}</span><span><span><span></span><span>4</span><span><span> </span><span>列</span></span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>16</span><span><span> B</span></span></span></span></span>。
<ul>
<li>核心几何特征：<span><span>16 B&lt;64 B16\text{ B} &lt; 64\text{ B}</span><span><span><span></span><span>16</span><span><span> B</span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>64</span><span><span> B</span></span></span></span></span>，一个 Cache 块内部可以横向并排严丝合缝地塞进 <span><span>64 B/16 B=464\text{ B}/16\text{ B}=4</span><span><span><span></span><span>64</span><span><span> B</span></span><span>/16</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span> 行数组数据。</li>
</ul>
</li>
<li>数组总容量：<span><span>1024×4×4 B=16384 B=16 KB1024 \times 4 \times 4\text{ B} = 16384\text{ B} = 16\text{ KB}</span><span><span><span></span><span>1024</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>16384</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>16</span><span><span> KB</span></span></span></span></span>。
<ul>
<li>核心容量特征：数组总容量（<span><span>16 KB16\text{ KB}</span><span><span><span></span><span>16</span><span><span> KB</span></span></span></span></span>）等于 Cache 容量的 2 倍（<span><span>8 KB8\text{ KB}</span><span><span><span></span><span>8</span><span><span> KB</span></span></span></span></span>），Cache 无法一次性容纳整张数组，遍历全程会发生残酷的容量替换（Capacity Eviction）！</li>
</ul>
</li>
<li>数组占用的总 Cache 块数：<span><span>16 KB/64 B=25616\text{ KB} / 64\text{ B} = 256</span><span><span><span></span><span>16</span><span><span> KB</span></span><span>/64</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>256</span></span></span></span> 个块。</li>
</ul></section><section><h4>场景 3 访问全流程深入推演<a href="#场景-3-访问全流程深入推演"><span>#</span></a></h4></section><section><h4>1. 行优先访问 - 3<a href="#1-行优先访问---3"><span>#</span></a></h4><ul>
<li>访问模式：内存连续线性地址访问。</li>
<li>过程推演：
<ul>
<li>每当指针跨过一个 64B 边界时，触发 1 次冷缺失（Cold Miss），将 64B（连续 16 个 <code>int</code>，即整整 4 行数据）调入 Cache。</li>
<li>随后的连续 15 次访问全部在同一 Cache 行内命中（Hit）。</li>
</ul>
</li>
<li>命中率计算：
<span><span>Hit Rate行=16−116=1516=93.75%\text{Hit Rate}_{\text{行}} = \frac{16 - 1}{16} = \frac{15}{16} = 93.75\%</span><span><span><span></span><span><span><span>Hit Rate</span></span><span><span><span><span><span><span></span><span><span><span><span>行</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>16</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>16</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>16</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>15</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>93.75%</span></span></span></span>
（连续空间局部性完美发挥，依然高达 <span><span>93.75%93.75\%</span><span><span><span></span><span>93.75%</span></span></span></span>！）</li>
</ul></section><section><h4>2. 列优先访问 - 3<a href="#2-列优先访问---3"><span>#</span></a></h4><ul>
<li>访问模式：外层按列循环，内层按行循环（依次访问第 0 列的 <code>A[0][0] ~ A[1023][0]</code>，接着第 1 列……）。</li>
<li>跨度与块内渗透：
<ul>
<li>访问 <code>A[0][0]</code>：缺失（Miss）！系统从内存调入包含 <code>A[0][0] ~ A[3][3]</code> 的整整 64 字节块。</li>
<li>访问 <code>A[1][0]</code>：命中（Hit）！它就在刚才载入的块的第 2 个 16B 槽位里。</li>
<li>访问 <code>A[2][0]</code>：命中（Hit）！它在同一个块的第 3 个 16B 槽位里。</li>
<li>访问 <code>A[3][0]</code>：命中（Hit）！同样命中！</li>
<li>访问 <code>A[4][0]</code>：跳出当前块范围，缺失（Miss）！调入下一块（包含第 4~7 行）。</li>
<li>访问 <code>A[5][0], A[6][0], A[7][0]</code>：连续 3 次命中！</li>
</ul>
</li>
<li>容量颠簸效应：
<ul>
<li>当第 0 列全部遍历完时，共访问了 1024 个元素，消耗了 256 个 Cache 块的装载。</li>
<li>但 Cache 只有 128 行！依据 LRU 策略，前半段（前 128 个块）早就被后半段冲刷出去了。</li>
<li>因此，当开始遍历第 1 列的 <code>A[0][1]</code> 时，先前调入的块已经不在 Cache 中，无法享受列与列之间的时间局部性！</li>
<li>也就是说：每一列都要重新经历一次上述的“一漏三中”周期！</li>
</ul>
</li>
<li>命中率计算：
在每一列内部，每连续 4 个垂直元素中，必有 1 次缺失，3 次命中：
<span><span>Hit Rate列=4−14=34=75%\text{Hit Rate}_{\text{列}} = \frac{4 - 1}{4} = \frac{3}{4} = 75\%</span><span><span><span></span><span><span><span>Hit Rate</span></span><span><span><span><span><span><span></span><span><span><span><span>列</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>4</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>75%</span></span></span></span></li>
</ul></section><section><h4>cache 命中率辨析<a href="#cache-命中率辨析"><span>#</span></a></h4>

<table><thead><tr><th>场景</th><th>数组规约</th><th>单行与 Cache 块关系</th><th>总容量与 Cache 容量</th><th>行访问命中率</th><th>列访问命中率</th><th>支配机制</th></tr></thead><tbody><tr><td>场景 1</td><td><span><span>1024×641024 \times 64</span><span><span><span></span><span>1024</span><span></span><span>×</span><span></span></span><span><span></span><span>64</span></span></span></span> (<span><span>256 KB256\text{ KB}</span><span><span><span></span><span>256</span><span><span> KB</span></span></span></span></span>)</td><td>行远大于块 (<span><span>256 B&gt;64 B256\text{ B} &gt; 64\text{ B}</span><span><span><span></span><span>256</span><span><span> B</span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>64</span><span><span> B</span></span></span></span></span>)</td><td>撑爆 Cache (<span><span>256 KB≫8 KB256\text{ KB} \gg 8\text{ KB}</span><span><span><span></span><span>256</span><span><span> KB</span></span><span></span><span>≫</span><span></span></span><span><span></span><span>8</span><span><span> KB</span></span></span></span></span>)</td><td><span><span>93.75%93.75\%</span><span><span><span></span><span>93.75%</span></span></span></span></td><td><span><span>0%0\%</span><span><span><span></span><span>0%</span></span></span></span></td><td>容量惩罚：无时间局部性，列跨度抹杀空间局部性</td></tr><tr><td>场景 2</td><td><span><span>64×2464 \times 24</span><span><span><span></span><span>64</span><span></span><span>×</span><span></span></span><span><span></span><span>24</span></span></span></span> (<span><span>6 KB6\text{ KB}</span><span><span><span></span><span>6</span><span><span> KB</span></span></span></span></span>)</td><td>行大于块 (<span><span>96 B&gt;64 B96\text{ B} &gt; 64\text{ B}</span><span><span><span></span><span>96</span><span><span> B</span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>64</span><span><span> B</span></span></span></span></span>)</td><td>整体容纳 (<span><span>6 KB&lt;8 KB6\text{ KB} &lt; 8\text{ KB}</span><span><span><span></span><span>6</span><span><span> KB</span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>8</span><span><span> KB</span></span></span></span></span>)</td><td><span><span>93.75%93.75\%</span><span><span><span></span><span>93.75%</span></span></span></span></td><td><span><span>93.75%93.75\%</span><span><span><span></span><span>93.75%</span></span></span></span></td><td>工作集常驻：无淘汰挤出，全保底命中</td></tr><tr><td>场景 3</td><td><span><span>1024×41024 \times 4</span><span><span><span></span><span>1024</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span></span></span></span> (<span><span>16 KB16\text{ KB}</span><span><span><span></span><span>16</span><span><span> KB</span></span></span></span></span>)</td><td>行小于块 (<span><span>16 B&lt;64 B16\text{ B} &lt; 64\text{ B}</span><span><span><span></span><span>16</span><span><span> B</span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>64</span><span><span> B</span></span></span></span></span>)</td><td>撑爆 Cache (<span><span>16 KB&gt;8 KB16\text{ KB} &gt; 8\text{ KB}</span><span><span><span></span><span>16</span><span><span> KB</span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>8</span><span><span> KB</span></span></span></span></span>)</td><td><span><span>93.75%93.75\%</span><span><span><span></span><span>93.75%</span></span></span></span></td><td><span><span>75%75\%</span><span><span><span></span><span>75%</span></span></span></span></td><td>微观跨行渗透：块内垂直捕获，列访问破天荒兜底！</td></tr></tbody></table><p>第二个的本质是所有数据小于整个 cache。</p><p>第三个的本质是一行数组数据小于一个 cache 行。</p></section></section><section><h3>TLB 组相联 + cache 组相联映射模型<a href="#tlb-组相联--cache-组相联映射模型"><span>#</span></a></h3><p><span><span>4 GB4\text{ GB}</span><span><span><span></span><span>4</span><span><span> GB</span></span></span></span></span> 逻辑地址空间以及 <span><span>228 B2^{28}\text{ B}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>28</span></span></span></span></span></span></span></span></span><span><span> B</span></span></span></span></span> 的物理地址空间。主存块大小 <span><span>64 B64\text{ B}</span><span><span><span></span><span>64</span><span><span> B</span></span></span></span></span>，页大小 <span><span>1 KB1\text{ KB}</span><span><span><span></span><span>1</span><span><span> KB</span></span></span></span></span>。</p><p>一开始全是空的。</p><ol>
<li>
<p>虚拟地址（VA）划分（共 32 位）：</p>
<ul>
<li>页内偏移量（Page Offset）：页面大小为 <span><span>1 KB=210 B1\text{ KB}=2^{10}\text{ B}</span><span><span><span></span><span>1</span><span><span> KB</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>10</span></span></span></span></span></span></span></span></span><span><span> B</span></span></span></span></span>，占 10 位。</li>
<li>虚拟页号（VPN）：<span><span>32−10=2232-10=22</span><span><span><span></span><span>32</span><span></span><span>−</span><span></span></span><span><span></span><span>10</span><span></span><span>=</span><span></span></span><span><span></span><span>22</span></span></span></span> 位。</li>
</ul>
</li>
<li>
<p>TLB 结构设定（设为 2 路组相联，共 16 个表项）：</p>
<ul>
<li>组数为 <span><span>16/2=816/2=8</span><span><span><span></span><span>16/2</span><span></span><span>=</span><span></span></span><span><span></span><span>8</span></span></span></span> 组，TLB 组索引（TLB Index）占 <span><span>log⁡28=3\log_2 8=3</span><span><span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>8</span><span></span><span>=</span><span></span></span><span><span></span><span>3</span></span></span></span> 位。</li>
<li>TLB 标记（TLB Tag）占 <span><span>22−3=1922-3=19</span><span><span><span></span><span>22</span><span></span><span>−</span><span></span></span><span><span></span><span>3</span><span></span><span>=</span><span></span></span><span><span></span><span>19</span></span></span></span> 位。</li>
</ul>
</li>
<li>
<p>物理地址（PA）划分（共 28 位）：</p>
<ul>
<li>物理页号（PPN）：<span><span>28−10=1828-10=18</span><span><span><span></span><span>28</span><span></span><span>−</span><span></span></span><span><span></span><span>10</span><span></span><span>=</span><span></span></span><span><span></span><span>18</span></span></span></span> 位。</li>
<li>页内偏移量（Page Offset）：与虚拟地址相同，占 10 位。</li>
</ul>
</li>
<li>
<p>Cache 结构设定（设为 4 路组相联，Cache 总容量 <span><span>16 KB16\text{ KB}</span><span><span><span></span><span>16</span><span><span> KB</span></span></span></span></span>）：</p>
<ul>
<li>块内偏移（Block Offset）：块大小为 <span><span>64 B=26 B64\text{ B}=2^6\text{ B}</span><span><span><span></span><span>64</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span></span></span></span></span><span><span> B</span></span></span></span></span>，占 6 位。</li>
<li>块数为 <span><span>16 KB/64 B=25616\text{ KB}/64\text{ B}=256</span><span><span><span></span><span>16</span><span><span> KB</span></span><span>/64</span><span><span> B</span></span><span></span><span>=</span><span></span></span><span><span></span><span>256</span></span></span></span> 块。</li>
<li>组数为 <span><span>256/4=64256/4=64</span><span><span><span></span><span>256/4</span><span></span><span>=</span><span></span></span><span><span></span><span>64</span></span></span></span> 组，Cache 组索引（Cache Index）占 <span><span>log⁡264=6\log_2 64=6</span><span><span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>64</span><span></span><span>=</span><span></span></span><span><span></span><span>6</span></span></span></span> 位。</li>
<li>Cache 标记（Cache Tag）占 <span><span>28−6−6=1628-6-6=16</span><span><span><span></span><span>28</span><span></span><span>−</span><span></span></span><span><span></span><span>6</span><span></span><span>−</span><span></span></span><span><span></span><span>6</span><span></span><span>=</span><span></span></span><span><span></span><span>16</span></span></span></span> 位。</li>
</ul>
</li>
</ol><section><h4>阶段一：硬件初次地址转换与 TLB 缺失<a href="#阶段一硬件初次地址转换与-tlb-缺失"><span>#</span></a></h4><ol>
<li>发出虚拟地址：CPU 从程序计数器（PC）发出取指的 32 位虚拟地址 VA。</li>
<li>查 TLB：MMU 提取 22 位 VPN，用其中的 3 位组索引定位 TLB 组，对比各路 Tag。</li>
<li>TLB Miss：初始全空，TLB 缺失。</li>
</ol></section><section><h4>阶段二：访存查页表与触发缺页异常（Page Fault）<a href="#阶段二访存查页表与触发缺页异常page-fault"><span>#</span></a></h4><ol>
<li>查页表（Page Walk）：
<ul>
<li>MMU 结合页表基址寄存器（PTBR）与 VPN 计算出页表项（PTE）的物理地址并访问主存。</li>
</ul>
</li>
<li>检测到缺页：
<ul>
<li>读出 PTE 后，硬件发现其有效位 Valid = 0，说明该页面尚未被调入物理内存中！</li>
</ul>
</li>
<li>抛出异常：
<ul>
<li>MMU 产生缺页异常（Fault），CPU 中断当前取指流程，保存当前的 PC 和程序状态字（PSW），硬件从用户态切换到内核态（核心态）。</li>
</ul>
</li>
</ol></section><section><h4>阶段三：操作系统内核接管处理（缺页中断服务程序）<a href="#阶段三操作系统内核接管处理缺页中断服务程序"><span>#</span></a></h4><ol>
<li>保护现场：OS 保存各通用寄存器现场。</li>
<li>合法性检查：读取引发异常的虚拟地址（如 x86 的 CR2 寄存器），检查该地址是否合法（在进程的合法逻辑空间内且有执行权限）。</li>
<li>分配物理页框：在主存中寻找一个空闲的物理页框（Frame），假设分配到的物理页号为 <span><span>PPNx\text{PPN}_x</span><span><span><span></span><span><span><span>PPN</span></span><span><span><span><span><span><span></span><span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</li>
<li>启动磁盘 I/O（调页）：
<ul>
<li>OS 向外存（磁盘/交换区）控制器发出读命令，将该页对应的 1KB 指令数据从外存读入到刚才分配的物理页框中。</li>
<li>此时当前进程被置为阻塞态，CPU 调度其他进程执行（DMA 传输数据中）。</li>
</ul>
</li>
<li>I/O 完成中断：
<ul>
<li>1KB 数据全部传输进物理内存后，磁盘控制器发出 I/O 中断，OS 唤醒该进程。</li>
</ul>
</li>
<li>修改页表项（PTE）：
<ul>
<li>OS 将该页对应的 PTE 填入物理页号 <span><span>PPNx\text{PPN}_x</span><span><span><span></span><span><span><span>PPN</span></span><span><span><span><span><span><span></span><span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，将有效位置为 Valid = 1，设置访问权限。</li>
</ul>
</li>
<li>恢复现场与返回：
<ul>
<li>恢复原进程现场，执行异常返回指令（如 <code>iret</code>），重新执行刚才被中断的那条取指指令，CPU 切回用户态。</li>
</ul>
</li>
</ol></section><section><h4>阶段四：重新取指与第二次地址转换<a href="#阶段四重新取指与第二次地址转换"><span>#</span></a></h4><ol>
<li>重新发出 VA：PC 再次送出刚才的 32 位虚拟地址 VA。</li>
<li>再次查 TLB：
<ul>
<li>硬件再次用 VPN 查 TLB，依然 TLB Miss（因为刚才缺页处理一般不手动塞 TLB，或者即使软件重填此处也按标准硬件流程来走）。</li>
</ul>
</li>
<li>再次查页表：
<ul>
<li>MMU 再次通过 PTBR + VPN 查主存页表。</li>
</ul>
</li>
<li>页表命中（Hit）：
<ul>
<li>这一次读到的 PTE 中 Valid = 1，成功读出物理页号 <span><span>PPNx\text{PPN}_x</span><span><span><span></span><span><span><span>PPN</span></span><span><span><span><span><span><span></span><span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>！</li>
</ul>
</li>
<li>写入/更新 TLB：
<ul>
<li>MMU 将这次成功的映射对 <code>(TLB Tag, PPN_x, 属性)</code> 填入 TLB 对应的组中，有效位置 1。</li>
</ul>
</li>
</ol></section><section><h4>阶段五：物理地址拼接与 Cache 访问<a href="#阶段五物理地址拼接与-cache-访问"><span>#</span></a></h4><ol>
<li>拼装物理地址 PA：
<ul>
<li>将 18 位的 <span><span>PPNx\text{PPN}_x</span><span><span><span></span><span><span><span>PPN</span></span><span><span><span><span><span><span></span><span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 与 10 位的页内偏移拼合，得到 28 位物理地址 PA。</li>
</ul>
</li>
<li>查询 Cache：
<ul>
<li>用 PA 的中间 6 位定位 Cache 组，比对该组内 4 个路（Way）的 16 位 Cache Tag。</li>
</ul>
</li>
<li>Cache Miss：
<ul>
<li>因为 Cache 初始全空，发生 Cache 冷缺失。</li>
</ul>
</li>
<li>从主存装入 Cache：
<ul>
<li>发出 PA 向主存（刚才刚刚从磁盘调入指令的物理页中）读取该指令所在的 64B 数据块。</li>
<li>将 64B 载入到 Cache 对应组的一个空闲槽位中，填入 Cache Tag，有效位置 1。</li>
</ul>
</li>
<li>指令送达 CPU：
<ul>
<li>从这 64B 的 Cache 块中，依据 PA 的低 6 位（Block Offset）截取出目标指令。</li>
<li>送入指令寄存器（IR），CPU 终于可以开始译码执行了！</li>
</ul>
</li>
</ol></section></section></section>
<section><h2>指令系统<a href="#指令系统"><span>#</span></a></h2><section><h3>考纲 - 指令系统<a href="#考纲---指令系统"><span>#</span></a></h3><ul>
<li>指令格式的基本概念</li>
<li>指令格式</li>
<li>寻址方式</li>
<li>数据的对齐和大/小端存储方式</li>
<li>CISC 和 RISC 的基本概念</li>
<li>高级语言程序和机器级代码之间的对应
<ul>
<li>编译器、汇编器与链接器的基本概念</li>
<li>选择结构语句的机器级表示</li>
<li>循环语句结构的机器级表示</li>
<li>过程（函数）调用对应的机器级表示</li>
</ul>
</li>
</ul></section><section><h3>指令寻址与数据寻址<a href="#指令寻址与数据寻址"><span>#</span></a></h3><section><h4>指令格式<a href="#指令格式"><span>#</span></a></h4><p>操作码 - 地址码</p><p>事实上，这个地址码的名我认为有点误导，因为其实不是地址码，更准确的来说应该是操作数。</p><p>根据指令的不同执行阶段，来划分这个地址码到底应该解释成什么。</p><ul>
<li>零地址指令</li>
<li>一地址指令</li>
<li>二地址指令</li>
<li>三地址指令</li>
</ul><p>关于上面的指令，如果题目没说，那么默认按照 x86 格式解析。</p><p>但是也应该具体题目具体分析。</p></section><section><h4>定长与变长操作码<a href="#定长与变长操作码"><span>#</span></a></h4><p>可以迁移到计网的子网划分那块去理解，以及哈夫曼树。</p><p>定长操作码的位数固定，译码简单，但指令条数被限制在 <span><span>2n2^n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 以内，浪费编码空间。</p><p>变长操作码（扩展操作码）把地址码的部分位拿来当操作码用，从“地址多、条数少”的指令开始分配，留出前缀给“地址少、条数多”的指令。</p><p>例如指令字长 16 位、每个地址码 4 位：</p><ul>
<li>三地址指令的操作码有 4 位，最多 16 条，如果只安排 15 条（<code>0000</code> 到 <code>1110</code>），剩下的 <code>1111</code> 就可以用来扩展；</li>
<li>用 <code>1111</code> 当前缀，操作码变成 8 位，地址码剩两个，又能安排 16 条二地址指令；</li>
<li>如果二地址只用了 14 条，剩下的两种前缀又能各扩展出 16 条一地址指令，共 32 条。</li>
</ul><p>需要注意两点：</p><ul>
<li>扩展操作码必须满足“短操作码不能是长操作码的前缀”，否则译码有歧义，这和哈夫曼编码的规则是同一件事；</li>
<li>做这类题从地址最多的指令开始算，先确定留下的前缀数，再逐级往下推。</li>
</ul></section><section><h4>指令的类型<a href="#指令的类型"><span>#</span></a></h4><ul>
<li>数据传送指令</li>
<li>算术和逻辑运算指令</li>
<li>移位操作指令</li>
<li>顺序控制指令</li>
<li>输入输出指令</li>
<li>CPU 控制指令</li>
</ul><p>具体题目具体分析。</p></section><section><h4>指令寻址<a href="#指令寻址"><span>#</span></a></h4><p>指令寻址分为顺序寻址和跳跃寻址。</p></section><section><h4>辨析 PC 与指令格式<a href="#辨析-pc-与指令格式"><span>#</span></a></h4><p>假设计算机主存为 4GB，采用 32 位的指令字。PC 指的是什么，PC 指的是程序计数器。也就是说，PC 是用来存储当前要执行的指令的地址的。那么总共有多少条指令呢？显然是 4GB/32bit，即 <span><span>2302^{30}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>30</span></span></span></span></span></span></span></span></span></span></span></span> 条指令，所以 PC 至少需要 30 位。</p><p>相关的题目我认为本质上是需要辨析清楚 PC 的作用。</p></section><section><h4>数据寻址<a href="#数据寻址"><span>#</span></a></h4><ul>
<li>隐含寻址：操作数隐含在指令或处理器约定中，例如 ALU 的累加器（AC）寄存器；
对双操作数指令，另一个操作数可能是隐含的。</li>
<li>立即寻址：立即数寻址即指令中直接给出操作数。</li>
<li>直接寻址：直接寻址即指令中直接给出操作数的地址，需要通过这个地址找到真正的数据。</li>
<li>间接寻址：间接寻址即指令中给出操作数地址的地址，需要通过这个地址的地址找到操作数的地址，然后通过这个地址找到真正的数据。</li>
<li>寄存器寻址：寄存器寻址即指令中直接给出操作数的寄存器，需要通过这个寄存器找到真正的数据。</li>
<li>寄存器间接寻址：指令给出保存操作数地址的寄存器，通过该寄存器中的地址找到数据。</li>
<li>相对寻址：相对寻址即指令中给出操作数相对地址，按 ISA 约定的 PC 基准（通常为下一条指令地址）
加上位移来找到真正的数据。</li>
<li>基址寻址：基址寻址以寄存器中的基地址加上偏移量形成有效地址，常用于数组、栈和结构体访问。</li>
<li>变址寻址：可以理解为数组寻址，基于数组首地址和偏移量来寻址，
例如 <span><span>0x1000+4×10=0x1028\mathtt{0x1000}+4\times10=\mathtt{0x1028}</span><span><span><span></span><span><span>0x1000</span></span><span></span><span>+</span><span></span></span><span><span></span><span>4</span><span></span><span>×</span><span></span></span><span><span></span><span>10</span><span></span><span>=</span><span></span></span><span><span></span><span><span>0x1028</span></span></span></span></span>，即元素 <code>a[10]</code> 的地址（假设元素大小为 4 字节）。</li>
<li>堆栈寻址：可以理解为汇编的 push 和 pop 指令。</li>
</ul><p>把寻址方式放在一起对比，重点看有效地址怎么来、取操作数要访存几次：</p>

<table><thead><tr><th>寻址方式</th><th>有效地址</th><th>取操作数访存次数</th></tr></thead><tbody><tr><td>立即寻址</td><td>不需要，操作数就在指令里</td><td>0</td></tr><tr><td>直接寻址</td><td>指令中直接给出</td><td>1</td></tr><tr><td>间接寻址</td><td>指令给出地址的地址</td><td>2 次或更多</td></tr><tr><td>寄存器寻址</td><td>不需要，操作数在寄存器里</td><td>0</td></tr><tr><td>寄存器间接寻址</td><td>寄存器中给出的地址</td><td>1</td></tr><tr><td>相对寻址</td><td><span><span>PC+A\text{PC}+A</span><span><span><span></span><span><span>PC</span></span><span></span><span>+</span><span></span></span><span><span></span><span>A</span></span></span></span></td><td>1</td></tr><tr><td>基址寻址</td><td><span><span>BR+A\text{BR}+A</span><span><span><span></span><span><span>BR</span></span><span></span><span>+</span><span></span></span><span><span></span><span>A</span></span></span></span></td><td>1</td></tr><tr><td>变址寻址</td><td><span><span>IX+A\text{IX}+A</span><span><span><span></span><span><span>IX</span></span><span></span><span>+</span><span></span></span><span><span></span><span>A</span></span></span></span></td><td>1</td></tr><tr><td>堆栈寻址</td><td><span><span>SP\text{SP}</span><span><span><span></span><span><span>SP</span></span></span></span></span> 指向的单元</td><td>1</td></tr></tbody></table><p>需要注意，基址寻址和变址寻址的式子长得一样，但用途相反：基址寄存器由操作系统设定，面向系统，用于程序重定位和多道程序；变址寄存器由用户设定，面向用户，用于数组和循环。</p><p>相对寻址的基准是“下一条指令的地址”，不是当前指令的地址，因为取指后 PC 已经自增了。</p></section></section><section><h3>x86 汇编与 MIPS 汇编<a href="#x86-汇编与-mips-汇编"><span>#</span></a></h3><p>x86 汇编需要知道基本的语法以及作用，对于 MIPS 汇编则会给出具体的意思。</p><p>对于后者，一定不可以想当然分析，需要结合题目所给的东西推断（因为可能会和 x86 不一样）。</p></section><section><h3>CISC 和 RISC<a href="#cisc-和-risc"><span>#</span></a></h3><section><h4>CISC<a href="#cisc"><span>#</span></a></h4><p>对于 CPU 采用微程序控制方式。</p><p>指令多，指令功能强，大部分指令使用的很少。</p><p>指令一般大于 100 个。</p><p>指令长度不固定，寻址方式多，访存指令不受限制，通用寄存器数量少。</p></section><section><h4>RISC<a href="#risc"><span>#</span></a></h4><p>对于 CPU 采用硬布线方式。</p><p>指令小于 100 个。</p><p>必须实现指令流水线。</p><p>指令长度固定，寻址方式少，只有 load/store 访存，通用寄存器数量多，大多数指令能在一个时钟周期内完成。</p></section><section><h4>两者的对比<a href="#两者的对比"><span>#</span></a></h4>

<table><thead><tr><th>对比项</th><th>CISC</th><th>RISC</th></tr></thead><tbody><tr><td>指令数量</td><td>多</td><td>少</td></tr><tr><td>指令长度</td><td>变长</td><td>定长</td></tr><tr><td>寻址方式</td><td>多</td><td>少</td></tr><tr><td>访存指令</td><td>不受限制</td><td>只有 load/store</td></tr><tr><td>控制器</td><td>微程序为主</td><td>硬布线为主</td></tr><tr><td>流水线</td><td>不易实现</td><td>容易实现</td></tr><tr><td>通用寄存器</td><td>少</td><td>多</td></tr><tr><td>程序代码量</td><td>小</td><td>大</td></tr><tr><td>编译优化</td><td>难</td><td>容易</td></tr></tbody></table><p>需要注意，CISC 不等于“一定用微程序”，RISC 也不等于“一定不能有微程序”，这只是主流的实现倾向；同样，RISC 的程序代码量更大，但换来的是流水线友好。</p></section></section><section><h3>MIPS 指令集的多条指令执行<a href="#mips-指令集的多条指令执行"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 斐波那契数列</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>f</span><span>(</span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span>    </span><span>if</span><span> (n </span><span>&lt;</span><span> </span><span>2</span><span>) {</span></div></div><div><div><div>4</div></div><div><span>        </span><span>return</span><span> n;</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>6</div></div><div><span>    </span><span>return</span><span> </span><span>f</span><span>(n </span><span>-</span><span> </span><span>1</span><span>) </span><span>+</span><span> </span><span>f</span><span>(n </span><span>-</span><span> </span><span>2</span><span>);</span></div></div><div><div><div>7</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div>

<table><thead><tr><th>内存虚拟地址</th><th>机器指令（32 位十六进制）</th><th>MIPS 汇编指令</th><th>指令功能说明</th></tr></thead><tbody><tr><td><code>0040 0100H</code></td><td><code>27 BD FF E8</code></td><td><code>addiu $sp, $sp, -24</code></td><td>分配 24 字节栈帧空间</td></tr><tr><td><code>0040 0104H</code></td><td><code>AF BF 00 14</code></td><td><code>sw $ra, 20($sp)</code></td><td>保存返回地址寄存器 <code>$ra</code></td></tr><tr><td><code>0040 0108H</code></td><td><code>AF B0 00 10</code></td><td><code>sw $s0, 16($sp)</code></td><td>保存局部寄存器 <code>$s0</code></td></tr><tr><td><code>0040 010CH</code></td><td><code>AF B1 00 0C</code></td><td><code>sw $s1, 12($sp)</code></td><td>保存局部寄存器 <code>$s1</code></td></tr><tr><td><code>0040 0110H</code></td><td><code>00 80 80 21</code></td><td><code>addu $s0, $a0, $zero</code></td><td>将参数 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 暂存至 <code>$s0</code></td></tr><tr><td><code>0040 0114H</code></td><td><code>28 82 00 02</code></td><td><code>slti $v0, $a0, 2</code></td><td>若 <code>$n&lt;2</code>，<code>$v0=1</code>；否则为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span></td></tr><tr><td><code>0040 0118H</code></td><td><code>10 40 00 03</code></td><td><code>beq $v0, $zero, L1</code></td><td>若 <code>$v0=0</code>，跳转到 L1（递归分支）</td></tr><tr><td><code>0040 011CH</code></td><td><code>00 80 10 21</code></td><td><code>addu $v0, $a0, $zero</code></td><td>基准返回值；分支延迟槽</td></tr><tr><td><code>0040 0120H</code></td><td><code>08 10 00 52</code></td><td><code>j EXIT</code></td><td>跳转至函数退出处 EXIT</td></tr><tr><td><code>0040 0124H</code></td><td><code>00 00 00 00</code></td><td><code>nop</code></td><td>跳转延迟槽</td></tr><tr><td><code>0040 0128H</code></td><td><code>22 04 FF FF</code></td><td><code>L1: addi $a0, $s0, -1</code></td><td>计算 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>，送入 <code>$a0</code></td></tr><tr><td><code>0040 012CH</code></td><td>[ 指令 1 ]</td><td><code>jal f</code></td><td>递归调用 <span><span>f(n−1)f(n-1)</span><span><span><span></span><span>f</span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span></td></tr><tr><td><code>0040 0130H</code></td><td><code>00 00 00 00</code></td><td><code>nop</code></td><td>调用延迟槽</td></tr><tr><td><code>0040 0134H</code></td><td><code>00 40 88 21</code></td><td><code>addu $s1, $v0, $zero</code></td><td>保存 <span><span>f(n−1)f(n-1)</span><span><span><span></span><span>f</span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span> 至 <code>$s1</code></td></tr><tr><td><code>0040 0138H</code></td><td><code>22 04 FF FE</code></td><td><code>addi $a0, $s0, -2</code></td><td>计算 <span><span>n−2n-2</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>2</span></span></span></span> 并送入参数寄存器 <code>$a0</code></td></tr><tr><td><code>0040 013CH</code></td><td>[ 指令 2 ]</td><td><code>jal f</code></td><td>递归调用 <span><span>f(n−2)f(n-2)</span><span><span><span></span><span>f</span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>2</span><span>)</span></span></span></span></td></tr><tr><td><code>0040 0140H</code></td><td><code>00 00 00 00</code></td><td><code>nop</code></td><td>调用延迟槽</td></tr><tr><td><code>0040 0144H</code></td><td><code>02 22 10 21</code></td><td><code>addu $v0, $s1, $v0</code></td><td>累加两次递归结果，存于 <code>$v0</code></td></tr><tr><td><code>0040 0148H</code></td><td><code>8F BF 00 14</code></td><td><code>EXIT: lw $ra, 20($sp)</code></td><td>恢复返回地址寄存器 <code>$ra</code></td></tr><tr><td><code>0040 014CH</code></td><td><code>8F B0 00 10</code></td><td><code>lw $s0, 16($sp)</code></td><td>恢复寄存器 <code>$s0</code></td></tr><tr><td><code>0040 0150H</code></td><td><code>8F B1 00 0C</code></td><td><code>lw $s1, 12($sp)</code></td><td>恢复寄存器 <code>$s1</code></td></tr><tr><td><code>0040 0154H</code></td><td><code>27 BD 00 18</code></td><td><code>addiu $sp, $sp, 24</code></td><td>释放 24 字节栈帧空间</td></tr><tr><td><code>0040 0158H</code></td><td><code>03 E0 00 08</code></td><td><code>jr $ra</code></td><td>子程序返回</td></tr><tr><td><code>0040 015CH</code></td><td><code>00 00 00 00</code></td><td><code>nop</code></td><td>返回延迟槽</td></tr></tbody></table></section><section><h3>基于 CISC 指令的多条指令执行<a href="#基于-cisc-指令的多条指令执行"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 斐波那契数列</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>f</span><span>(</span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span>    </span><span>if</span><span> (n </span><span>&lt;</span><span> </span><span>2</span><span>) {</span></div></div><div><div><div>4</div></div><div><span>        </span><span>return</span><span> n;</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>6</div></div><div><span>    </span><span>return</span><span> </span><span>f</span><span>(n </span><span>-</span><span> </span><span>1</span><span>) </span><span>+</span><span> </span><span>f</span><span>(n </span><span>-</span><span> </span><span>2</span><span>);</span></div></div><div><div><div>7</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div>

<table><thead><tr><th>虚拟地址</th><th>机器码字节（十六进制，按内存顺序）</th><th>汇编指令（AT&amp;T 格式）</th><th>指令功能说明</th></tr></thead><tbody><tr><td><code>00401020H</code></td><td><code>55</code></td><td><code>pushl %ebp</code></td><td>保存主调函数基址指针</td></tr><tr><td><code>00401021H</code></td><td><code>89 E5</code></td><td><code>movl %esp, %ebp</code></td><td>建立当前栈帧基址</td></tr><tr><td><code>00401023H</code></td><td><code>53</code></td><td><code>pushl %ebx</code></td><td>保护寄存器 ebx</td></tr><tr><td><code>00401024H</code></td><td><code>83 EC 04</code></td><td><code>subl $4, %esp</code></td><td>为局部变量分配栈空间</td></tr><tr><td><code>00401027H</code></td><td><code>8B 5D 08</code></td><td><code>movl 8(%ebp), %ebx</code></td><td>从栈中取出参数 n 送入 ebx</td></tr><tr><td><code>0040102AH</code></td><td><code>83 FB 01</code></td><td><code>cmpl $1, %ebx</code></td><td>比较参数 n 与 1</td></tr><tr><td><code>0040102DH</code></td><td><code>7E 20</code></td><td><code>jle .L_BASE</code></td><td>若 <span><span>n≤1n\le1</span><span><span><span></span><span>n</span><span></span><span>≤</span><span></span></span><span><span></span><span>1</span></span></span></span>，跳转至基准情况</td></tr><tr><td><code>0040102FH</code></td><td><code>8D 43 FF</code></td><td><code>leal -1(%ebx), %eax</code></td><td>计算 n - 1 送入 eax</td></tr><tr><td><code>00401032H</code></td><td><code>50</code></td><td><code>pushl %eax</code></td><td>将参数 (n - 1) 压栈</td></tr><tr><td><code>00401033H</code></td><td><code>E8 E8 FF FF FF</code></td><td><code>call f</code></td><td>递归调用 f(n - 1)</td></tr><tr><td><code>00401038H</code></td><td><code>83 C4 04</code></td><td><code>addl $4, %esp</code></td><td>恢复栈顶（平衡参数压栈）</td></tr><tr><td><code>0040103BH</code></td><td><code>89 45 F8</code></td><td><code>movl %eax, -8(%ebp)</code></td><td>暂存 f(n - 1) 返回值</td></tr><tr><td><code>0040103EH</code></td><td><code>8D 43 FE</code></td><td><code>leal -2(%ebx), %eax</code></td><td>计算 n - 2 送入 eax</td></tr><tr><td><code>00401041H</code></td><td><code>50</code></td><td><code>pushl %eax</code></td><td>将参数 (n - 2) 压栈</td></tr><tr><td><code>00401042H</code></td><td><code>E8 D9 FF FF FF</code></td><td><code>call f</code></td><td>递归调用 f(n - 2)</td></tr><tr><td><code>00401047H</code></td><td><code>83 C4 04</code></td><td><code>addl $4, %esp</code></td><td>恢复栈顶</td></tr><tr><td><code>0040104AH</code></td><td><code>03 45 F8</code></td><td><code>addl -8(%ebp), %eax</code></td><td>累加两个递归结果，存于 eax</td></tr><tr><td><code>0040104DH</code></td><td><code>EB 02</code></td><td><code>jmp .L_EXIT</code></td><td>跳转至函数返回清理处</td></tr><tr><td><code>0040104FH</code></td><td><code>89 D8</code></td><td><code>.L_BASE: movl %ebx, %eax</code></td><td>基准情况：将 n 直接作为返回值</td></tr><tr><td><code>00401051H</code></td><td><code>8D 65 FC</code></td><td><code>.L_EXIT: leal -4(%ebp), %esp</code></td><td>将栈顶定位到保存的 ebx 槽位</td></tr><tr><td><code>00401054H</code></td><td><code>5B</code></td><td><code>popl %ebx</code></td><td>恢复寄存器 ebx</td></tr><tr><td><code>00401055H</code></td><td><code>5D</code></td><td><code>popl %ebp</code></td><td>恢复原基址指针</td></tr><tr><td><code>00401056H</code></td><td><code>C3</code></td><td><code>ret</code></td><td>子程序返回</td></tr></tbody></table></section><section><h3>过程调用的机器级表示<a href="#过程调用的机器级表示"><span>#</span></a></h3><p>过程调用要解决四件事：参数传递、返回地址保存、局部变量分配、寄存器保护。</p><p>栈帧是这四件事的载体。每次调用时，栈指针 <span><span>sp\text{sp}</span><span><span><span></span><span><span>sp</span></span></span></span></span> 下移一段空间作为新栈帧，帧指针 <span><span>fp\text{fp}</span><span><span><span></span><span><span>fp</span></span></span></span></span>（x86 里是 <code>%ebp</code> / <code>%rbp</code>）指向栈帧底部，用 <span><span>fp\text{fp}</span><span><span><span></span><span><span>fp</span></span></span></span></span> 加偏移访问参数和局部变量，这样 <span><span>sp\text{sp}</span><span><span><span></span><span><span>sp</span></span></span></span></span> 在函数内部怎么变都不影响访问。</p><p>一个典型的栈帧从高地址到低地址依次是：</p><ul>
<li>调用者传入的参数（超过寄存器能传的部分）；</li>
<li>返回地址；</li>
<li>保存的旧的 <span><span>fp\text{fp}</span><span><span><span></span><span><span>fp</span></span></span></span></span>；</li>
<li>被调用者保存的寄存器；</li>
<li>局部变量；</li>
<li>临时空间。</li>
</ul><p>需要注意，<code>call</code> 指令干了两件事：把返回地址压栈，然后跳转到目标地址；<code>ret</code> 则从栈顶弹出返回地址并跳转，所以 <code>call</code> 和 <code>ret</code> 必须配对，栈必须平衡。</p><p>寄存器约定（以 x86-64 为例）：</p><ul>
<li>参数依次放 <code>%rdi</code>、<code>%rsi</code>、<code>%rdx</code>、<code>%rcx</code>、<code>%r8</code>、<code>%r9</code>，超过 6 个的放栈上；</li>
<li>返回值放 <code>%rax</code>；</li>
<li><code>%rbx</code>、<code>%rbp</code>、<code>%r12</code> 到 <code>%r15</code> 由被调用者保存；</li>
<li><code>%rax</code>、<code>%rcx</code>、<code>%rdx</code>、<code>%rsi</code>、<code>%rdi</code>、<code>%r8</code> 到 <code>%r11</code> 由调用者保存。</li>
</ul><p>“调用者保存”的意思是调用者自己负责在 <code>call</code> 之前把有用的值存起来，因为被调用者可以随意改这些寄存器。考试里常考的就是“某个值在 <code>call</code> 前后是否需要显式保存”。</p><p>递归调用时每一层都有自己的栈帧，所以返回地址和局部变量不会互相覆盖，这也是递归必须用栈的原因。递归层次太深会栈溢出。</p></section><section><h3>选择结构与循环结构的机器级表示<a href="#选择结构与循环结构的机器级表示"><span>#</span></a></h3><p>条件转移靠标志位。<code>cmp</code> 做减法但不保存结果，只设置标志位；<code>test</code> 做与运算，常用来判断是否为 0。</p><p>然后 <code>jcc</code> 系列根据标志位跳转：<code>je/jz</code>、<code>jne/jnz</code>、<code>jg/jge</code>（有符号）、<code>ja/jae</code>（无符号）、<code>jl/jle</code>（有符号）。</p><p>需要注意，有符号和无符号的比较必须用不同的跳转指令，因为有符号看 SF 和 OF，无符号看 CF，同一组数据按不同解释会得到相反的结论。</p><p>if-else 的机器级表示是“条件不成立就跳到 else 块，执行完 then 块再无条件跳到结束”。编译器也常用条件传送（<code>cmov</code>）来避免分支，但要求两个分支都能安全求值，否则可能引入非法访问。</p><p>循环一般被翻译成 do-while 形式：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>while</span><span> (i </span><span>&lt;</span><span> n) { ... }</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>等价于</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>  </span><span>goto</span><span> test;</span></div></div><div><div><div>2</div></div><div><span>loop:</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>...</span></div></div><div><div><div>4</div></div><div><span>test:</span></div></div><div><div><div>5</div></div><div><span>  </span><span>if</span><span> (i </span><span>&lt;</span><span> n) </span><span>goto</span><span> loop;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这样末尾只判断一次、跳回开头，比“开头判断、末尾再跳回开头判断”少一次跳转。</p><p>需要注意，编译器会把循环变量优化掉，或者做循环展开，遇到这类题要按题目给出的汇编分析，不要先入为主。</p></section><section><h3>指令本身的可考点<a href="#指令本身的可考点"><span>#</span></a></h3><p>这块的题基本围着三个东西转：</p><ul>
<li>指令格式：操作码和地址码怎么分，能表示多少条指令、支持多少种寻址；</li>
<li>寻址方式：有效地址怎么算，访存几次，相对寻址的基准是谁；</li>
<li>执行过程：一条指令在数据通路上怎么走，每个周期有哪些微操作。</li>
</ul><p>做题时先把指令字长、地址码长度、操作码长度这三个量写成式子，再判断是定长操作码还是扩展操作码。</p><p>需要注意，指令字长不等于机器字长，也不等于存储字长，三者可以不同。</p></section></section>
<section><h2>CPU<a href="#cpu"><span>#</span></a></h2><section><h3>CPU - 考纲<a href="#cpu---考纲"><span>#</span></a></h3><ul>
<li>CPU 的功能和基本结构</li>
<li>指令执行过程</li>
<li>数据通路的功能和基本结构</li>
<li>控制器的功能和工作原理</li>
<li>异常和中断机制
<ul>
<li>异常和中断的基本概念</li>
<li>异常和中断的分类</li>
<li>异常和中断的检测与响应</li>
</ul>
</li>
<li>指令流水线
<ul>
<li>指令流水线的基本概念</li>
<li>指令流水线的基本实现</li>
<li>结构冒险、数据冒险和控制冒险的处理</li>
<li>超标量和动态流水线的基本概念</li>
</ul>
</li>
<li>多处理器的基本概念
<ul>
<li>SISD、SIMD、MIMD</li>
<li>向量处理器的基本概念</li>
<li>硬件多线程的基本概念</li>
<li>多核处理器的基本概念</li>
<li>共享内存多处理器（SMP）的基本概念</li>
</ul>
</li>
</ul></section><section><h3>CPU 的功能和基本架构<a href="#cpu-的功能和基本架构"><span>#</span></a></h3><ul>
<li>
<p>PC</p>
</li>
<li>
<p>指令寄存器</p>
</li>
<li>
<p>通用寄存器组</p>
</li>
<li>
<p>标志寄存器</p>
</li>
<li>
<p>存储器地址寄存器</p>
</li>
<li>
<p>存储器数据寄存器</p>
</li>
<li>
<p>指令译码器</p>
</li>
<li>
<p>算术逻辑单元</p>
</li>
<li>
<p>时序信号产生部件</p>
</li>
<li>
<p>操作控制信号形成部件</p>
</li>
<li>
<p>总线控制逻辑</p>
</li>
<li>
<p>中断机构</p>
</li>
<li>
<p>用户可见寄存器</p>
<ul>
<li>PC</li>
<li>通用寄存器</li>
<li>专用地址寄存器
<ul>
<li>基址寄存器</li>
<li>变址寄存器</li>
<li>堆栈指针</li>
</ul>
</li>
<li>只读用户可见寄存器
<ul>
<li>标志寄存器 FR</li>
</ul>
</li>
</ul>
</li>
<li>
<p>用户不可见寄存器</p>
<ul>
<li>IR 指令寄存器</li>
<li>MAR 地址寄存器</li>
<li>MDR 数据寄存器</li>
<li>页表基址寄存器</li>
</ul>
</li>
</ul></section><section><h3>CPU 的时序控制<a href="#cpu-的时序控制"><span>#</span></a></h3><section><h4>指令周期相关<a href="#指令周期相关"><span>#</span></a></h4><p>一个完整的指令周期通常分成四个阶段：</p><ul>
<li>取指周期：从 PC 指向的主存单元取出指令送到 IR，PC 加上指令字长；</li>
<li>间址周期：如果指令采用间接寻址，还要再访存一次取有效地址；</li>
<li>执行周期：真正做运算或访存；</li>
<li>中断周期：指令执行完检查是否有中断请求，有则保存断点、关中断、转入中断服务程序。</li>
</ul><p>需要注意，不是每条指令都有间址周期和中断周期，取指周期和执行周期是必需的。</p><p>时钟周期、机器周期（CPU 周期）和指令周期的关系是：一个指令周期包含若干个机器周期，一个机器周期包含若干个时钟周期。</p><p>四个周期都可能访存，所以数据通路上的 MAR、MDR 是共用的，这也是单总线结构下不同周期要分时使用总线的根本原因。</p><p>需要注意，这里的四阶段是指令周期的划分，描述一条指令的生命周期；它和流水线的 IF / ID / EX / MEM / WB 五段不是一回事，五段式是流水段的划分，里面没有间址周期，中断也在取指段末尾顺便采样。五段式的展开见后面一条指令的不同阶段那一节。</p><p>见下面的模型分析。</p></section><section><h4>处理器指令执行模型<a href="#处理器指令执行模型"><span>#</span></a></h4><ul>
<li>单周期处理器
<ul>
<li>CPI 为 1</li>
<li>不擅长乘除法等复杂指令（因为这类指令需要运行的时间很久）</li>
<li>不需要指令寄存器</li>
</ul>
</li>
<li>多周期处理器
<ul>
<li>将指令周期分为多个时钟周期</li>
</ul>
</li>
<li>流水线处理器
<ul>
<li>CPI 接近 1</li>
</ul>
</li>
</ul><p>需要与单总线处理器辨析。</p><p>单周期处理器不可能是单总线处理器。</p></section></section><section><h3>数据通路的基本功能<a href="#数据通路的基本功能"><span>#</span></a></h3><section><h4>数据通路组织与分类<a href="#数据通路组织与分类"><span>#</span></a></h4><ul>
<li>按部件连接方式划分
<ul>
<li>总线式数据通路</li>
<li>专用数据通路</li>
</ul>
</li>
<li>按时序组织方式划分
<ul>
<li>单周期数据通路</li>
<li>多周期数据通路</li>
<li>流水线数据通路</li>
</ul>
</li>
</ul></section><section><h4>单总线结构数据通路<a href="#单总线结构数据通路"><span>#</span></a></h4><p>可见后续 2009 年真题，数据如何流动。</p></section><section><h4>专用数据通路<a href="#专用数据通路"><span>#</span></a></h4><p>专用数据通路就是每个部件之间都有专门的数据线连接，不共享总线，可以并行传送，速度快但线路多。</p><p>单总线结构是所有部件挂在一条总线上，同一时刻只能有一对部件通信，所以要分多个时钟周期才能完成一次运算。</p><p>需要注意，考试里给单总线结构的数据通路图，就是要你按时钟节拍写出每个节拍的微操作。核心规则只有一条：同一时刻总线上只能有一个输出，写寄存器时要写使能。</p></section><section><h4>辨析 CPU 内部的 CU 与数据通路<a href="#辨析-cpu-内部的-cu-与数据通路"><span>#</span></a></h4><p>CPU 大致可以分为负责做决策的 CU 以及下面负责干活的数据通路。</p><p>而数据通路又可以分为 ALU，寄存器组。</p><p>在做题的时候可以先想想物件是属于 CU 的，还是属于数据通路的。</p></section></section><section><h3>硬布线控制器<a href="#硬布线控制器"><span>#</span></a></h3><p>硬布线控制器用组合逻辑电路直接产生控制信号，输入是指令操作码、时序信号（机器周期、节拍）和状态标志，输出是各部件的控制信号。</p><p>设计步骤大致是：</p><ol>
<li>根据指令系统列出每条指令的微操作序列；</li>
<li>把微操作按机器周期和节拍排成操作时间表；</li>
<li>对每个控制信号写出布尔表达式并化简；</li>
<li>用门电路实现。</li>
</ol><p>特点是速度快，信号延迟只有几级门；但设计好之后就难以修改和扩展，增加一条指令可能要重新设计电路，所以主要用于 RISC。</p><p>需要注意，硬布线控制器也有时序系统，只是它不用微指令解释，而是把节拍信号直接接到组合逻辑上。</p></section><section><h3>微程序控制器<a href="#微程序控制器"><span>#</span></a></h3><p>微程序控制器的基本组成：</p><ul>
<li>控制存储器 CM：存放全部微程序，一般是 ROM；</li>
<li>微指令寄存器 <span><span>μIR\mu\text{IR}</span><span><span><span></span><span>μ</span><span><span>IR</span></span></span></span></span>：存放当前执行的微指令；</li>
<li>微地址寄存器 <span><span>μPC\mu\text{PC}</span><span><span><span></span><span>μ</span><span><span>PC</span></span></span></span></span>：存放下一条微指令的地址；</li>
<li>微地址形成部件：根据操作码或下址字段产生微地址；</li>
<li>时序系统：产生节拍信号。</li>
</ul><p>需要注意，<span><span>μPC\mu\text{PC}</span><span><span><span></span><span>μ</span><span><span>PC</span></span></span></span></span> 和 PC 不是一回事：PC 指向主存中的机器指令，<span><span>μPC\mu\text{PC}</span><span><span><span></span><span>μ</span><span><span>PC</span></span></span></span></span> 指向 CM 中的微指令；取机器指令走主存，取微指令走 CM。</p><p>一条机器指令 - 一个微程序 - 多个微指令</p><p>一个微指令 - 多个微命令</p><p>一个微命令 - 一个微操作</p><ul>
<li>机器指令：软件程序员能看到的最高层指令（比如汇编里的 ADD、MOV）。</li>
<li>微程序：这一条机器指令背后的“操作总剧本”（存放在 ROM 里）。</li>
<li>微指令：剧本里的每一个节拍/步骤（通常一个时钟周期执行一条微指令）。</li>
<li>微命令：这一步里硬件发出的控制电信号（比如“允许寄存器输出”、“开门”）。</li>
<li>微操作：控制电信号落实在硬件电路上的物理动作（微命令是“因”，微操作是“果”，两者严格一一对应）。</li>
</ul><p>辨析微程序控制器的层次，是在机器级代码之下的，因为微程序本质上是硬件电路的软件化。</p><section><h4>微程序的工作流程<a href="#微程序的工作流程"><span>#</span></a></h4><p>和正常指令执行类似，先执行一段公共的取指微程序：从主存中取出机器指令送入 IR，并完成 PC 的更新。</p><p>随后根据 IR 中的操作码，通过微地址形成部件生成该机器指令对应微程序的首条微指令地址，送入 μPC。</p><p>接着从 CM 中取出首条微指令送入 μIR，之后就是逐条取出、逐条执行，直到这条机器指令的微程序结束。</p></section><section><h4>微程序和机器指令<a href="#微程序和机器指令"><span>#</span></a></h4><p>一个机器指令对应一个微程序。</p><p>微程序总数 = 机器指令条数 + 公共微程序数</p></section><section><h4>微程序的编码<a href="#微程序的编码"><span>#</span></a></h4><ul>
<li>直接编码（直接控制）方式：每一位直接对应一个微命令</li>
<li>字段直接编码方式：将控制字段分成若干字段，每个字段分别编码，需要注意加一个停机位。比如说有 4 个互斥类，分别有 1，2，3，4 个微命令，加上停机位则是 2，3，4，5，所以分别需要 1，2，2，3 位来存储。</li>
<li>字段间接编码方式：某个微命令字段的实际含义由另一个字段的编码共同决定
<ul>
<li>字段 A（模式选择字段，1 位）字段 B（具体操作字段，3 位）</li>
<li>比如字段 A 为 0 的时候，代表算术模式，为 1 的时候为访存模式</li>
</ul>
</li>
</ul></section><section><h4>微程序地址形成<a href="#微程序地址形成"><span>#</span></a></h4><ul>
<li>增量方式（计数器方式）：μPC 自动 + 1</li>
<li>断定方式（下址字段方式）：当前微指令显式指定下条微地址</li>
</ul><p>实际运行时取决于以下三种情况</p><ul>
<li>微程序入口地址形成：一条机器指令从主存中取出并送入 IR 后，其操作码经微地址形成部件生成对应微程序的首条微指令地址，送入 μPC</li>
<li>顺序执行</li>
<li>条件分支</li>
</ul></section><section><h4>微程序指令格式<a href="#微程序指令格式"><span>#</span></a></h4><ul>
<li>
<p>水平型指令：操作控制（n 位），顺序控制（判断测试字段，后继地址字段）</p>
</li>
<li>
<p>垂直型指令：微操作码，目的地址，源地址</p>
<ul>
<li>指令短，编写简单，但是微程序长，执行速度慢</li>
</ul>
</li>
<li>
<p>水平并行能力强</p>
</li>
<li>
<p>一条水平可以完成更多工作</p>
</li>
<li>
<p>水平指令字长但微程序短</p>
</li>
<li>
<p>水平编写难度大，垂直类似机器指令好编写</p>
</li>
</ul></section></section><section><h3>中断与异常<a href="#中断与异常"><span>#</span></a></h3><p>中断又称外中断，异常又称内中断。默认中断指的是外中断。</p><section><h4>异常<a href="#异常"><span>#</span></a></h4><p>异常是 CPU 在执行指令的过程中由内部检测到的意外事件，和当前指令有关。</p><ul>
<li>故障（fault）：缺页异常，除 0 异常，处理完回到本条指令重新执行</li>
<li>自陷（trap）：由陷入指令主动触发，例如系统调用、断点，处理完执行下一条</li>
<li>终止（abort）：硬件故障等致命错误，处理程序一般直接终止进程</li>
</ul></section><section><h4>中断<a href="#中断"><span>#</span></a></h4><p>中断是外部设备发出的请求，和当前指令无关，响应在一条指令执行完之后。</p><ul>
<li>可屏蔽中断：受中断屏蔽字和 EINT 控制，键盘、磁盘等普通外设</li>
<li>不可屏蔽中断：不受 EINT 影响，用于电源掉电等紧急情况</li>
</ul></section><section><h4>异常和中断的检测与响应<a href="#异常和中断的检测与响应"><span>#</span></a></h4><p>检测的时机不同：中断请求在每个指令周期的末尾统一采样，异常在指令执行过程中由内部逻辑检测。</p><p>响应需要满足条件：有请求、CPU 处于开中断状态（对可屏蔽中断）、当前指令执行完（对中断）。</p><p>响应的过程由中断隐指令完成，全部由硬件自动实现：</p><ul>
<li>关中断，防止响应过程被打断；</li>
<li>保存断点，把 PC 和 PSW 压栈或存入指定单元；</li>
<li>识别中断源并转入中断服务程序，可屏蔽中断一般通过中断向量表。</li>
</ul><p>需要注意，隐指令不是指令，它没有操作码，也不在指令系统中，是硬件在响应阶段自动做的一串动作。</p><p>中断处理程序的完整流程在 I/O 那一章展开，这里只要记住“硬件做前一半，软件做后一半”。</p></section></section><section><h3>指令流水线<a href="#指令流水线"><span>#</span></a></h3><section><h4>指令流水线操作<a href="#指令流水线操作"><span>#</span></a></h4><p>见本节模型。</p><p>先把性能指标写清楚。设流水线有 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 段，每段时间为 <span><span>Δt\Delta t</span><span><span><span></span><span>Δ</span><span>t</span></span></span></span>（取最慢的那一段），连续执行 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 条指令，则总时间为</p><span><span><span>Tk=(k+n−1)ΔtT_k=(k+n-1)\Delta t</span><span><span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>k</span><span></span><span>+</span><span></span></span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>Δ</span><span>t</span></span></span></span></span><p>吞吐率、加速比和效率分别是</p><span><span><span>TP=nTk=n(k+n−1)ΔtTP=\frac{n}{T_k}=\frac{n}{(k+n-1)\Delta t}</span><span><span><span></span><span>T</span><span>P</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>T</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>(</span><span>k</span><span></span><span>+</span><span></span><span>n</span><span></span><span>−</span><span></span><span>1</span><span>)</span><span>Δ</span><span>t</span></span></span><span><span></span><span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><span><span><span>S=T顺序T流水=nkΔt(k+n−1)Δt=nkk+n−1S=\frac{T_{\text{顺序}}}{T_{\text{流水}}}=\frac{nk\Delta t}{(k+n-1)\Delta t}=\frac{nk}{k+n-1}</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>流水</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>顺序</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>(</span><span>k</span><span></span><span>+</span><span></span><span>n</span><span></span><span>−</span><span></span><span>1</span><span>)</span><span>Δ</span><span>t</span></span></span><span><span></span><span></span></span><span><span></span><span><span>nk</span><span>Δ</span><span>t</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>k</span><span></span><span>+</span><span></span><span>n</span><span></span><span>−</span><span></span><span>1</span></span></span><span><span></span><span></span></span><span><span></span><span><span>nk</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><span><span><span>E=Sk=nk+n−1E=\frac{S}{k}=\frac{n}{k+n-1}</span><span><span><span></span><span>E</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>k</span></span></span><span><span></span><span></span></span><span><span></span><span><span>S</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>k</span><span></span><span>+</span><span></span><span>n</span><span></span><span>−</span><span></span><span>1</span></span></span><span><span></span><span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><p>当 <span><span>n→∞n\to\infty</span><span><span><span></span><span>n</span><span></span><span>→</span><span></span></span><span><span></span><span>∞</span></span></span></span> 时，<span><span>TP→1/ΔtTP\to 1/\Delta t</span><span><span><span></span><span>T</span><span>P</span><span></span><span>→</span><span></span></span><span><span></span><span>1/Δ</span><span>t</span></span></span></span>，<span><span>S→kS\to k</span><span><span><span></span><span>S</span><span></span><span>→</span><span></span></span><span><span></span><span>k</span></span></span></span>，<span><span>E→1E\to 1</span><span><span><span></span><span>E</span><span></span><span>→</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p>需要注意，段数不是越多越好：段数增加后，每段的时间受流水寄存器开销限制，而且冒险带来的停顿会变多，实际加速比远小于 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span>。</p><p>流水线时空图就是把每条指令画成一行、横轴是时间，斜着看就是流水，有停顿的地方画一段空白。</p></section><section><h4>MIPS 指令<a href="#mips-指令"><span>#</span></a></h4><p>见上一节模型。</p></section><section><h4>结构冒险<a href="#结构冒险"><span>#</span></a></h4><p>即共同争夺某种资源，又称资源冲突。例如取指和访存同时要用存储器，或者两条指令同时要用同一个功能部件。</p><p>处理办法：</p><ul>
<li>资源重复：把指令存储器和数据存储器分开（哈佛结构），或者增加功能部件、增加端口；</li>
<li>分时使用：同一部件在不同流水段轮流使用，代价是插入停顿。</li>
</ul></section><section><h4>数据冒险<a href="#数据冒险"><span>#</span></a></h4><p>例如写后读：后一条指令要读的寄存器，正好是前一条指令还没写回的结果。</p><p>数据冒险有三种：写后读（RAW）、读后写（WAR）、写后写（WAW）。按序流水线只可能出现 RAW，乱序流水线三种都要考虑。</p><p>处理办法：</p><ul>
<li>延迟指令：插入气泡，等结果写回再继续；</li>
<li>旁路转发：把 ALU 的结果直接送给下一条指令的输入端，不用等写回寄存器，能解决大多数 RAW；</li>
<li>load-use 冒险：load 的数据要到 MEM 末尾才出来，转发也来不及，必须停一个周期，然后再转发。</li>
</ul><p>这三类处理见后续模型。</p></section><section><h4>控制冒险<a href="#控制冒险"><span>#</span></a></h4><p>对于 if / loop 相关指令，需要等待条件跳转判断是否成立。</p><p>主要有几种解决方案：</p><ul>
<li>延迟分支处理：把一条一定执行的指令放进延迟槽，或者插入气泡</li>
<li>分支预测技术：尽早生成目标地址并预测方向
<ul>
<li>静态预测：每次都选择成立 / 不成立</li>
<li>动态预测：根据程序运行时的历史信息来预测，常用两位饱和计数器和分支历史表</li>
<li>预测错误：需要清除流水线，惩罚是已经取入的指令条数</li>
</ul>
</li>
</ul><p>需要注意，分支预测只解决“猜方向”，目标地址的计算还要在 ID 段尽早完成，否则就算方向猜对了也要等地址算出来。</p></section><section><h4>高级流水线技术<a href="#高级流水线技术"><span>#</span></a></h4><ul>
<li>超标量流水线：增加功能部件（硬件），结合动态分支预测以及乱序执行</li>
<li>超长指令字技术：多条并行的指令合成一个长指令字</li>
<li>超流水线技术：把一个指令进一步细分成更多的流水段，理想情况下 CPI &lt; 1</li>
</ul><p>需要注意，超标量的并行是硬件在运行时找出来的（动态），超长指令字的并行是编译器在编译时打包好的（静态），后者对编译器要求高，但硬件简单。</p><p>动态流水线指的是流水段可以按需重组，允许指令乱序执行、乱序完成，但必须顺序提交，以保持程序语义。</p></section></section><section><h3>多处理器<a href="#多处理器"><span>#</span></a></h3><section><h4>SISD<a href="#sisd"><span>#</span></a></h4><p>单指令单数据流。</p></section><section><h4>SIMD<a href="#simd"><span>#</span></a></h4><p>单指令多数据流，代表为向量处理器。</p><p>向量处理器的一条向量指令处理一整个向量，内部用流水线的方式逐元素计算，元素之间没有数据相关性，所以能流水起来，还能用链接技术把多条向量指令串起来。</p><p>需要注意，SIMD 的并行度受向量长度限制，遇到条件分支不好处理，所以后来又有带掩码的向量指令。</p></section><section><h4>MISD<a href="#misd"><span>#</span></a></h4><p>多指令单数据流（无应用）</p></section><section><h4>MIMD<a href="#mimd"><span>#</span></a></h4><p>多指令多数据流，应用有多计算机系统 / 多处理器系统。</p></section><section><h4>硬件多线程<a href="#硬件多线程"><span>#</span></a></h4><ul>
<li>细颗粒度多线程：每个时钟周期轮流切换不同线程的指令执行，可隐藏短流水线停顿，但单线程执行被拉长。</li>
<li>粗颗粒度多线程：平时专注跑单一线程，仅在发生重大停顿（如 Cache 缺失）时才切换到其他线程，切换有充填开销。</li>
<li>同时多线程：基于多发射超标量流水线，允许在同一个时钟周期内同时发射和执行多个不同线程的指令，硬件利用率最高。</li>
</ul></section><section><h4>多核处理器<a href="#多核处理器"><span>#</span></a></h4><p>一个 CPU 有多个核，实现真正的并行。</p><p>但是需要注意的是，多任务操作系统并发就足够了。</p></section><section><h4>共享内存多处理器<a href="#共享内存多处理器"><span>#</span></a></h4><p>多个处理器核心围着“同一口超级大饭锅”吃饭！</p><ol>
<li>
<p>共享单一地址空间：
系统里虽然有多个 CPU（或处理器核心），但它们看到并使用的是同一个统一编址的物理内存空间。任何一个 CPU 都可以直接通过访存指令（Load/Store）去读写整个内存里的任意一个地址。</p>
</li>
<li>
<p>通信方式超简单（靠内存通信）：
处理器之间不用像发微信、寄快递（消息传递）那样麻烦，CPU-A 想给 CPU-B 传数据，只需要写到某块内存变量里，CPU-B 直接去读这个变量就拿到了。</p>
</li>
<li>
<p>关键难点：同步与一致性：
大家都在读写同一个地方，就容易“抢饭吃”发生打架（数据冲突/读写冲突）！所以硬件必须提供 Cache 一致性协议（确保各 CPU 的私有 Cache 里数据是一致的），软件上也需要加锁/互斥机制来保证同步。</p>
</li>
<li>
<p>常见两大家族：</p>
<ul>
<li>UMA（均匀存储访问 / 经典 SMP）：每个 CPU 访问内存中任何区域的时间都是一模一样的（平权模式）。</li>
<li>NUMA（非均匀存储访问）：内存物理上分块挂在不同 CPU 旁边，访问自己身边的“本地内存”超快，访问挂在别人那里的“远程内存”稍慢，但逻辑上依然是一个统一的大内存。</li>
</ul>
</li>
</ol></section></section><section><h3>数据是如何在硬件里流动的<a href="#数据是如何在硬件里流动的"><span>#</span></a></h3><p>以 2009 年真题为例，解释数据流动。</p><p>解释的内容是：ADD (R1), R0</p><p></p><figure><img alt="2009-44" loading="lazy" width="690" height="499" src="/_astro/2009-44.ltoWk_rU_Z2kmaag.webp" /><figcaption>2009-44</figcaption></figure><p></p>

<table><thead><tr><th>时钟节拍</th><th>功能（微操作）</th><th>有效控制信号</th><th>所属阶段与总线行为机制</th></tr></thead><tbody><tr><td>C1</td><td><span><span>MAR←(PC)\text{MAR} \leftarrow (\text{PC})</span><span><span><span></span><span><span>MAR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>PC</span></span><span>)</span></span></span></span></td><td><code>PCout, MARin</code></td><td>【取指】PC 地址送内部总线打入 MAR</td></tr><tr><td>C2</td><td><span><span>MDR←M(MAR)\text{MDR} \leftarrow M(\text{MAR})</span><span><span><span></span><span><span>MDR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>M</span><span>(</span><span><span>MAR</span></span><span>)</span></span></span></span>, <span><span>PC←(PC)+1\text{PC} \leftarrow (\text{PC}) + 1</span><span><span><span></span><span><span>PC</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>PC</span></span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span></td><td><code>MemR, MDRinE, PC+1</code></td><td>【取指】启动读主存（走外总线），PC 硬件自增</td></tr><tr><td>C3</td><td><span><span>IR←(MDR)\text{IR} \leftarrow (\text{MDR})</span><span><span><span></span><span><span>IR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>MDR</span></span><span>)</span></span></span></span></td><td><code>MDRout, IRin</code></td><td>【取指】指令码经内部总线送入指令寄存器</td></tr><tr><td>C4</td><td>指令译码</td><td>无</td><td>【译码】控制器硬件组合逻辑/微码解析操作码</td></tr><tr><td>C5</td><td><span><span>A←(R0)\text{A} \leftarrow (\text{R0})</span><span><span><span></span><span><span>A</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>R0</span></span><span>)</span></span></span></span></td><td><code>R0out, Ain</code></td><td>【执行】源操作数 R0 送入 ALU 暂存器 A 锁存</td></tr><tr><td>C6</td><td><span><span>MAR←(R1)\text{MAR} \leftarrow (\text{R1})</span><span><span><span></span><span><span>MAR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>R1</span></span><span>)</span></span></span></span></td><td><code>R1out, MARin</code></td><td>【执行】目的操作数内存地址（R1）送入 MAR</td></tr><tr><td>C7</td><td><span><span>MDR←M(MAR)\text{MDR} \leftarrow M(\text{MAR})</span><span><span><span></span><span><span>MDR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>M</span><span>(</span><span><span>MAR</span></span><span>)</span></span></span></span></td><td><code>MemR, MDRinE</code></td><td>【执行】启动读主存，操作数从外总线读入 MDR</td></tr><tr><td>C8</td><td><span><span>AC←(A)+(MDR)\text{AC} \leftarrow (\text{A}) + (\text{MDR})</span><span><span><span></span><span><span>AC</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>A</span></span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span><span>MDR</span></span><span>)</span></span></span></span></td><td><code>MDRout, ADD, ACin</code></td><td>【执行】MDR 送内总线，ALU 加法，结果进 AC</td></tr><tr><td>C9</td><td><span><span>MDR←(AC)\text{MDR} \leftarrow (\text{AC})</span><span><span><span></span><span><span>MDR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>AC</span></span><span>)</span></span></span></span></td><td><code>ACout, MDRin</code></td><td>【写回】运算结果从 AC 经内总线送入 MDR</td></tr><tr><td>C10</td><td><span><span>M(MAR)←(MDR)M(\text{MAR}) \leftarrow (\text{MDR})</span><span><span><span></span><span>M</span><span>(</span><span><span>MAR</span></span><span>)</span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>MDR</span></span><span>)</span></span></span></span></td><td><code>MemW, MDRoutE</code></td><td>【写回】启动写主存，MDR 数据经外总线写入内存</td></tr></tbody></table><p>注意到 C7 时，CPU 内部总线是空闲的，所以可以重排如下：</p>

<table><thead><tr><th>时钟节拍</th><th>功能（微操作）</th><th>有效控制信号</th><th>总线并行与硬件动作机制说明</th></tr></thead><tbody><tr><td>C1</td><td><span><span>MAR←(PC)\text{MAR} \leftarrow (\text{PC})</span><span><span><span></span><span><span>MAR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>PC</span></span><span>)</span></span></span></span></td><td><code>PCout, MARin</code></td><td>【取指】PC 地址送入内部总线，打入 MAR</td></tr><tr><td>C2</td><td><span><span>MDR←M(MAR)\text{MDR} \leftarrow M(\text{MAR})</span><span><span><span></span><span><span>MDR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>M</span><span>(</span><span><span>MAR</span></span><span>)</span></span></span></span>，<span><span>PC←(PC)+1\text{PC} \leftarrow (\text{PC}) + 1</span><span><span><span></span><span><span>PC</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>PC</span></span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span></td><td><code>MemR, MDRinE, PC+1</code></td><td>【取指】启动读主存（走外总线），PC 硬件自增</td></tr><tr><td>C3</td><td><span><span>IR←(MDR)\text{IR} \leftarrow (\text{MDR})</span><span><span><span></span><span><span>IR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>MDR</span></span><span>)</span></span></span></span></td><td><code>MDRout, IRin</code></td><td>【取指】指令机器码经内部总线打入指令寄存器 IR</td></tr><tr><td>C4</td><td>指令译码</td><td>无</td><td>【译码】控制器逻辑对操作码进行译码，内部无总线流动</td></tr><tr><td>C5</td><td><span><span>MAR←(R1)\text{MAR} \leftarrow (\text{R1})</span><span><span><span></span><span><span>MAR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>R1</span></span><span>)</span></span></span></span></td><td><code>R1out, MARin</code></td><td>【重排前置】优先将目标内存地址（R1）经内总线打入 MAR</td></tr><tr><td>C6</td><td><span><span>MDR←M(MAR)\text{MDR} \leftarrow M(\text{MAR})</span><span><span><span></span><span><span>MDR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>M</span><span>(</span><span><span>MAR</span></span><span>)</span></span></span></span>，<span><span>A←(R0)\text{A} \leftarrow (\text{R0})</span><span><span><span></span><span><span>A</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>R0</span></span><span>)</span></span></span></span></td><td><code>MemR, MDRinE, R0out, Ain</code></td><td>【双总线并行·核心优化】① 外总线：启动主存读，数据由外总线打入 MDR (<code>MemR, MDRinE</code>)；② 内总线：利用内总线空闲，将 R0 数据打入暂存器 A (<code>R0out, Ain</code>)。👉 两组操作互不抢占总线，单周期同时完成，净省 1 拍！</td></tr><tr><td>C7</td><td><span><span>AC←(A)+(MDR)\text{AC} \leftarrow (\text{A}) + (\text{MDR})</span><span><span><span></span><span><span>AC</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>A</span></span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span><span>MDR</span></span><span>)</span></span></span></span></td><td><code>MDRout, ADD, ACin</code></td><td>【执行加法】MDR 读出的操作数送内总线，与暂存器 A 相加，结果存入累加器 AC</td></tr><tr><td>C8</td><td><span><span>MDR←(AC)\text{MDR} \leftarrow (\text{AC})</span><span><span><span></span><span><span>MDR</span></span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>AC</span></span><span>)</span></span></span></span></td><td><code>ACout, MDRin</code></td><td>【写回准备】运算结果从 AC 经内部总线打入 MDR 缓冲锁存</td></tr><tr><td>C9</td><td><span><span>M(MAR)←(MDR)M(\text{MAR}) \leftarrow (\text{MDR})</span><span><span><span></span><span>M</span><span>(</span><span><span>MAR</span></span><span>)</span><span></span><span>←</span><span></span></span><span><span></span><span>(</span><span><span>MDR</span></span><span>)</span></span></span></span></td><td><code>MemW, MDRoutE</code></td><td>【写回主存】启动主存写，MDR 数据经外部数据总线写入 R1 所指主存单元</td></tr></tbody></table></section><section><h3>一条指令的不同阶段<a href="#一条指令的不同阶段"><span>#</span></a></h3><p>取指令 - 分析指令 - 执行指令 - 访存 - 写回</p><p>一般来讲，这么划分的是 RISC 指令，所以 RISC 更经常考一条指令的执行。</p><section><h4>指令一：RISC 纯算术指令 <code>ADD R1, R2, R3</code><a href="#指令一risc-纯算术指令-add-r1-r2-r3"><span>#</span></a></h4><p>语义：<span><span>R1←R2+R3R1 \leftarrow R2 + R3</span><span><span><span></span><span>R</span><span>1</span><span></span><span>←</span><span></span></span><span><span></span><span>R</span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>R</span><span>3</span></span></span></span>（寄存器之间运算，完全不碰内存）</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[IF] 取指 -&gt; [ID] 译码 + 读 R2/R3 -&gt; [EX] ALU 算加法 -&gt; [MEM] 旁路空闲 -&gt; [WB] 写回 R1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>取指令阶段（IF）：
<ul>
<li>PC 送出地址，从 Instruction Cache 中读取 32 位定长指令字到 IR。</li>
<li>PC 自动递增：<span><span>PC←PC+4\text{PC} \leftarrow \text{PC} + 4</span><span><span><span></span><span><span>PC</span></span><span></span><span>←</span><span></span></span><span><span></span><span><span>PC</span></span><span></span><span>+</span><span></span></span><span><span></span><span>4</span></span></span></span>。</li>
</ul>
</li>
<li>分析指令 / 译码阶段（ID）：
<ul>
<li>译码：硬件识别出操作码为 <code>ADD</code>。</li>
<li>读寄存器：由于 RISC 指令格式规整，硬件直接并行读取源寄存器堆中的 <span><span>R2R2</span><span><span><span></span><span>R</span><span>2</span></span></span></span> 和 <span><span>R3R3</span><span><span><span></span><span>R</span><span>3</span></span></span></span> 的内容，存入流水线寄存器（ID/EX 寄存器）。</li>
</ul>
</li>
<li>执行阶段（EX）：
<ul>
<li>真正做加法！ALU 将输入的 <span><span>R2R2</span><span><span><span></span><span>R</span><span>2</span></span></span></span> 和 <span><span>R3R3</span><span><span><span></span><span>R</span><span>3</span></span></span></span> 直接相加：
<span><span>ALU_Out=R2+R3\text{ALU\_Out} = R2 + R3</span><span><span><span></span><span><span>ALU_Out</span></span><span></span><span>=</span><span></span></span><span><span></span><span>R</span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>R</span><span>3</span></span></span></span></li>
<li>将计算结果锁存进流水线寄存器（EX/MEM 寄存器）。</li>
</ul>
</li>
<li>访存阶段（MEM）：
<ul>
<li>空操作（NOP / 旁路透传）！</li>
<li>因为这是纯算术指令，不访问任何数据 Cache，该阶段完全不消耗内存总线，ALU 的运算结果原封不动地直接传到下一个流水线寄存器（MEM/WB 寄存器）。</li>
</ul>
</li>
<li>写回阶段（WB）：
<ul>
<li>控制信号打开通用寄存器堆的写使能。</li>
<li>将经过 MEM 阶段传递过来的运算结果写入目的寄存器 <span><span>R1R1</span><span><span><span></span><span>R</span><span>1</span></span></span></span>。指令顺利结束！</li>
</ul>
</li>
</ol></section><section><h4>指令二：RISC 纯存储指令 <code>SW R1, 0(R2)</code>（Store Word）<a href="#指令二risc-纯存储指令-sw-r1-0r2store-word"><span>#</span></a></h4><p>语义：<span><span>Mem[R2+0]←R1\text{Mem}[R2 + 0] \leftarrow R1</span><span><span><span></span><span><span>Mem</span></span><span>[</span><span>R</span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>0</span><span>]</span><span></span><span>←</span><span></span></span><span><span></span><span>R</span><span>1</span></span></span></span>（纯地址计算并写入内存，不修改通用寄存器）</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[IF] 取指 -&gt; [ID] 译码 + 读基址 R2/数据 R1+ 符号扩展 -&gt; [EX] ALU 算地址 -&gt; [MEM] 写内存 -&gt; [WB] 空操作</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol>
<li>取指令阶段（IF）：
<ul>
<li>PC 发出地址，从 Instruction Cache 读出该 <code>SW</code> 指令。</li>
<li>PC 自动自增 4。</li>
</ul>
</li>
<li>分析指令 / 译码阶段（ID）：
<ul>
<li>译码：识别出是 Store 指令。</li>
<li>读寄存器：同时读出基址寄存器 <span><span>R2R2</span><span><span><span></span><span>R</span><span>2</span></span></span></span>（用于算物理位置）和源数据寄存器 <span><span>R1R1</span><span><span><span></span><span>R</span><span>1</span></span></span></span>（待写入内存的内容）。</li>
<li>立即数符号扩展：将指令里的 16 位偏移量 <code>0</code> 进行符号扩展生成 32 位立即数。</li>
</ul>
</li>
<li>执行阶段（EX）：
<ul>
<li>计算有效访存地址（EA）！</li>
<li>ALU 此时不是算加法业务，而是在算地址：
<span><span>EA=R2+SignExtend(offset)\text{EA} = R2 + \text{SignExtend}(\text{offset})</span><span><span><span></span><span><span>EA</span></span><span></span><span>=</span><span></span></span><span><span></span><span>R</span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span><span>SignExtend</span></span><span>(</span><span><span>offset</span></span><span>)</span></span></span></span></li>
<li>同时将要写入的数据（<span><span>R1R1</span><span><span><span></span><span>R</span><span>1</span></span></span></span> 的值）继续沿流水线送入下一级缓冲。</li>
</ul>
</li>
<li>访存阶段（MEM）：
<ul>
<li>真正的内存写操作！</li>
<li>将 EX 阶段算出的有效地址 <span><span>EA\text{EA}</span><span><span><span></span><span><span>EA</span></span></span></span></span> 送往 Data Cache。</li>
<li>发出写控制使能信号，把寄存器 <span><span>R1R1</span><span><span><span></span><span>R</span><span>1</span></span></span></span> 的数据正式写入该内存单元中。</li>
</ul>
</li>
<li>写回阶段（WB）：
<ul>
<li>空操作（NOP）！</li>
<li>存储指令的目的地是内存，在 MEM 阶段使命就已经彻底达成了，它没有任何通用寄存器需要更新，寄存器堆写使能关闭，直接提交（Commit）！</li>
</ul>
</li>
</ol></section><section><h4>RISC 指令对比<a href="#risc-指令对比"><span>#</span></a></h4>

<table><thead><tr><th>阶段</th><th>纯算术指令 <code>ADD R1, R2, R3</code></th><th>纯存储指令 <code>SW R1, 0(R2)</code></th></tr></thead><tbody><tr><td>IF（取指）</td><td>取指令，<span><span>PC←PC+4\text{PC} \leftarrow \text{PC} + 4</span><span><span><span></span><span><span>PC</span></span><span></span><span>←</span><span></span></span><span><span></span><span><span>PC</span></span><span></span><span>+</span><span></span></span><span><span></span><span>4</span></span></span></span></td><td>取指令，<span><span>PC←PC+4\text{PC} \leftarrow \text{PC} + 4</span><span><span><span></span><span><span>PC</span></span><span></span><span>←</span><span></span></span><span><span></span><span><span>PC</span></span><span></span><span>+</span><span></span></span><span><span></span><span>4</span></span></span></span></td></tr><tr><td>ID（译码）</td><td>译码，读源寄存器 <span><span>R2,R3R2, R3</span><span><span><span></span><span>R</span><span>2</span><span>,</span><span></span><span>R</span><span>3</span></span></span></span></td><td>译码，读基址 <span><span>R2R2</span><span><span><span></span><span>R</span><span>2</span></span></span></span> 与写入数据 <span><span>R1R1</span><span><span><span></span><span>R</span><span>1</span></span></span></span>，扩展偏移量</td></tr><tr><td>EX（执行）</td><td>ALU 算算术结果（<span><span>R2+R3R2 + R3</span><span><span><span></span><span>R</span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>R</span><span>3</span></span></span></span>）</td><td>ALU 算内存有效地址（<span><span>R2+offsetR2 + \text{offset}</span><span><span><span></span><span>R</span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span><span>offset</span></span></span></span></span>）</td></tr><tr><td>MEM（访存）</td><td>空操作（NOP），数据直接穿透传递</td><td>内存写入：把 <span><span>R1R1</span><span><span><span></span><span>R</span><span>1</span></span></span></span> 数据写入目标地址</td></tr><tr><td>WB（写回）</td><td>寄存器写回：结果写入目标寄存器 <span><span>R1R1</span><span><span><span></span><span>R</span><span>1</span></span></span></span></td><td>空操作（NOP），无需更新任何寄存器</td></tr></tbody></table></section></section><section><h3>指令流水线的真题辨析<a href="#指令流水线的真题辨析"><span>#</span></a></h3><blockquote><p>先过。</p></blockquote></section><section><h3>数据冲突的三种方案辨析和时空图<a href="#数据冲突的三种方案辨析和时空图"><span>#</span></a></h3><blockquote><p>先过。</p></blockquote></section></section>
<section><h2>总线<a href="#总线"><span>#</span></a></h2><ul>
<li>总线的基本概念</li>
<li>总线的组成及性能指标</li>
<li>总线事务与定时</li>
</ul><section><h3>总线概述<a href="#总线概述"><span>#</span></a></h3><section><h4>总线分类<a href="#总线分类"><span>#</span></a></h4><ul>
<li>内部总线：CPU 芯片连接 ALU，寄存器等</li>
<li>系统总线
<ul>
<li>数据总线</li>
<li>地址总线</li>
<li>控制总线</li>
</ul>
</li>
<li>IO 总线：与内部 IO 设备通信</li>
<li>通信总线：与外部 IO 设备或者不同计算机通信</li>
</ul></section><section><h4>总线性能指标<a href="#总线性能指标"><span>#</span></a></h4><ul>
<li>总线传输周期：一次总线操作需要的时间，包括地址、数据和应答等阶段</li>
<li>总线时钟频率：早期与 CPU 同频，现在有独立的总线时钟</li>
<li>总线工作频率：一个总线周期里能完成几次数据传输，突发传输时工作频率可以高于时钟频率</li>
<li>总线宽度：数据线的根数，单位是位</li>
<li>总线带宽：单位时间内传输的字节数</li>
<li>总线复用：同一组线分时传送不同的信息</li>
<li>总线寻址能力：由地址位数决定，<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位地址最多寻址 <span><span>2n2^n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 个单元</li>
</ul><p>带宽的计算是常考点：</p><span><span><span>带宽=总线宽度（字节）×总线工作频率\text{带宽}=\text{总线宽度（字节）}\times\text{总线工作频率}</span><span><span><span></span><span><span>带宽</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>总线宽度（字节）</span></span><span></span><span>×</span><span></span></span><span><span></span><span><span>总线工作频率</span></span></span></span></span></span><p>需要注意，如果采用突发传输，一次地址传送后连续传多个数据，那么有效带宽要按“一个总线周期传几个数据”来算，不能只算一次。</p><p>总线复用常见的是地址线和数据线复用，好处是减少引脚数，代价是要加锁存器把地址锁住，而且同一组线不能同时传地址和数据，速度会降低。</p><p>需要注意，总线宽度增加会让并行传输的线间干扰变严重，这也是高速接口转向串行的原因。</p></section><section><h4>总线结构<a href="#总线结构"><span>#</span></a></h4><ul>
<li>单总线结构</li>
<li>双总线结构（分成系统总线和 IO 总线）</li>
<li>三总线结构（双总线 + DMA）</li>
<li>南北桥结构
<ul>
<li>北桥，即 MCH，作为高速枢纽连接 CPU</li>
<li>南桥，即 ICH，作为 IO 控制器集线器</li>
</ul>
</li>
<li>现代架构
<ul>
<li>内存访问路径缩短</li>
<li>处理期间高速互连</li>
<li>IO 通路直连</li>
</ul>
</li>
</ul></section><section><h4>总线事务<a href="#总线事务"><span>#</span></a></h4><ul>
<li>地址传送阶段</li>
<li>设备应答阶段（数据准备）</li>
<li>数据传输阶段
<ul>
<li>非突发式传输</li>
<li>突发式传输：传输一个地址，后续都不需要传输地址。</li>
</ul>
</li>
</ul><p>真题有一年专门考了这块内容，需要注意把每个时间点都算上。</p><ul>
<li>串行传输
<ul>
<li>一帧数据以起始位（逻辑 0）开始，以停止位（逻辑 1）结束，接收方靠这个规律同步</li>
<li>奇偶校验：在数据后加一位校验位，使 1 的个数为奇数或偶数，只能检错不能纠错</li>
</ul>
</li>
<li>并行：多条线同时传输多个位</li>
</ul><p>由于电气特性，并行传输的工作频率难以提高，线间干扰和时序偏移会随频率恶化，所以现代高速接口一般是串行的。</p></section><section><h4>总线定时<a href="#总线定时"><span>#</span></a></h4><ul>
<li>同步定时：采用统一的时钟信号协调发送方和接受方，间隔为总线周期</li>
<li>异步定时：通过主从设备握手信号
<ul>
<li>不互锁</li>
<li>半互锁：发，读发进行确认，对确认进行确认</li>
<li>全互锁</li>
</ul>
</li>
<li>半同步：增设 wait 信号线，主设备检测 wait 状态，直到低电平。</li>
<li>分离式定时方式：
<ul>
<li>上述都是独占式</li>
<li>请求阶段：主设备获得总线使用权，发送地址和命令</li>
<li>应答阶段：从设备 B 准备好数据后，主动申请总线</li>
</ul>
</li>
</ul></section></section><section><h3>辨析系统总线<a href="#辨析系统总线"><span>#</span></a></h3>

<table><thead><tr><th>总线类型</th><th>传输内容</th><th>方向性</th></tr></thead><tbody><tr><td>地址总线 (AB)</td><td>内存单元或 I/O 端口的物理地址</td><td>单向（通常由 CPU/主设备发往从设备，DMA期间由DMA控制器发出）</td></tr><tr><td>数据总线 (DB)</td><td>真正的内容信息（数据、指令码、控制字/状态字）</td><td>双向</td></tr><tr><td>控制总线 (CB)</td><td>协调操作的控制脉冲/握手信号（读/写选通、中断请求、就绪信号等）</td><td>单根线单向，总线整体双向</td></tr></tbody></table></section></section>
<section><h2>输入 / 输出系统<a href="#输入--输出系统"><span>#</span></a></h2><section><h3>输入 / 输出系统 - 考纲<a href="#输入--输出系统---考纲"><span>#</span></a></h3><ul>
<li>IO 接口（IO 控制器）
<ul>
<li>IO 接口的功能和基本结构</li>
<li>IO 端口及其编址</li>
</ul>
</li>
<li>IO 方式
<ul>
<li>程序查询方式</li>
<li>程序中断方式
<ul>
<li>中断的基本概念</li>
<li>中断响应过程</li>
<li>中断处理过程</li>
<li>多重中断和屏蔽的概念</li>
</ul>
</li>
<li>DMA 方式
<ul>
<li>DMA 控制器的组成</li>
<li>DMA 传送过程</li>
</ul>
</li>
</ul>
</li>
</ul></section><section><h3>IO 接口与 IO 端口<a href="#io-接口与-io-端口"><span>#</span></a></h3><p>IO 接口 = 设备</p><p>IO 端口是寄存器</p><section><h4>IO 接口的功能与基本结构<a href="#io-接口的功能与基本结构"><span>#</span></a></h4><p>I/O 接口是设备和总线之间的桥梁，主要功能有：</p><ul>
<li>地址译码与设备选择；</li>
<li>数据缓冲，解决 CPU 和设备之间的速度差异；</li>
<li>记录并报告设备状态（忙、就绪、错误）；</li>
<li>接收 CPU 的控制命令并转换成设备能懂的操作；</li>
<li>数据格式转换，比如串并转换、电平转换。</li>
</ul><p>基本结构包括数据缓冲寄存器、状态寄存器、控制寄存器、地址译码电路和控制逻辑，以及和设备之间的信号线。</p><p>需要注意，I/O 端口是接口里 CPU 可以直接访问的寄存器，接口还包括端口之外的逻辑，两者不是一回事。</p></section><section><h4>IO 端口的编址<a href="#io-端口的编址"><span>#</span></a></h4><ul>
<li>独立编址（x86）：I/O 空间和内存空间分开，用专门的 IN/OUT 指令访问，控制逻辑复杂，但内存空间完整；</li>
<li>统一编址：I/O 端口占用内存地址的一部分，用普通的访存指令就能访问，无需专门 IO 指令，但译码电路复杂，还要占用内存空间。</li>
</ul><p>需要注意，统一编址下普通的 load/store 指令就能访问外设，所以操作系统做权限检查时要把这块地址一起管起来。</p></section></section><section><h3>程序查询方式<a href="#程序查询方式"><span>#</span></a></h3><p>软件介入轮询。</p><p>独占查询。</p><p>忙等待。</p><p>流程是：CPU 先向设备发命令，然后反复读设备状态寄存器，直到“就绪”位为 1，才用一条输入指令把数据读进 CPU，再写到内存。</p><p>问题是 CPU 和外设完全串行工作，设备慢，CPU 就一直空转，效率极低，只适合简单、低速的场合。</p><p>需要注意，程序查询方式下 CPU 并没有“阻塞”，它是在原地死循环，操作系统也无法调度别的进程，这和中断方式把进程挂到阻塞队列是两回事。</p></section><section><h3>程序中断方式<a href="#程序中断方式"><span>#</span></a></h3><section><h4>中断屏蔽字<a href="#中断屏蔽字"><span>#</span></a></h4><p>中断屏蔽字是确认多个中断同时发生时，谁可以把谁打断。</p><p>对于五个任务 m0, m1, m2, m3, m4，假设处理顺序要 m3，m1，m4，m2，m0。那么对 m4 而言，其不能被 0，2 以及自己 4 打断，所以，应该设置为 10101。</p><p>只有优先级比自己高的中断源，对应的屏蔽位才设为 0（允许打断我）。</p></section><section><h4>中断流程<a href="#中断流程"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[外设/内部异常触发]</span></div></div><div><div><div>2</div></div><div><span><span>        </span></span><span>│</span></div></div><div><div><div>3</div></div><div><span><span>   </span></span><span>======【第一阶段：硬件主场（中断隐指令完成）】======</span></div></div><div><div><div>4</div></div><div><span><span>        </span></span><span>├─ 1. 关中断（硬件置锁）</span></div></div><div><div><div>5</div></div><div><span><span>        </span></span><span>├─ 2. 保存断点（PC 和 PSW 压栈）</span></div></div><div><div><div>6</div></div><div><span><span>        </span></span><span>└─ 3. 引出中断服务程序（根据中断向量查表并跳到 ISR 入口）</span></div></div><div><div><div>7</div></div><div><span><span>        </span></span><span>│</span></div></div><div><div><div>8</div></div><div><span><span>   </span></span><span>======【第二阶段：软件主场（操作系统中断服务程序 ISR 执行）】======</span></div></div><div><div><div>9</div></div><div><span><span>        </span></span><span>├─ 4. 保存现场与屏蔽字（通用寄存器压栈、设置屏蔽字）</span></div></div><div><div><div>10</div></div><div><span><span>        </span></span><span>├─ 5. 执行具体的中断处理例程（干具体脏活累活）</span></div></div><div><div><div>11</div></div><div><span><span>        </span></span><span>└─ 6. 恢复现场并中断返回（出栈通用寄存器，开中断并返回原程序）</span></div></div><div><div><div>12</div></div><div><span><span>        </span></span><span>│</span></div></div><div><div><div>13</div></div><div><span>[回到原断点继续执行原程序]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>在 408 真题中，CPU 在中断响应阶段需要干的事情表述为：关中断，保存断点和程序状态，识别中断源。</p><p>需要注意，CPU 是硬件（而不是软件），下面的是操作系统（也就是软件）需要做的事情。</p></section><section><h4>中断向量与中断向量表<a href="#中断向量与中断向量表"><span>#</span></a></h4><p>中断向量本质是中断服务程序的入口地址</p><p>中断向量表本质指的是存放中断服务程序入口地址的表</p><p>中断类型号指的是中断号，例如键盘敲击中断号为 0x21，系统调用为 0x80，只是一个编号。</p><p>中断向量地址是存放该中断向量的存储单元地址</p><p>所以，流程是硬件识别中断源（找出中断类型号），硬件查中断向量表得到中断向量地址，然后根据中断向量地址得到中断向量…</p></section><section><h4>中断相关辨析<a href="#中断相关辨析"><span>#</span></a></h4><p>“数据搬运”由软件（CPU 执行中断服务程序的代码指令）来完成的。</p><p>而处理中断的起步阶段（中断响应），是由硬件（CPU 内部的硬件控制逻辑）来完成的。</p></section><section><h4>多重嵌套中断<a href="#多重嵌套中断"><span>#</span></a></h4><p>DMA 优先级会比中断高。</p><p>硬件响应优先级是一回事，可以通过中断优先级调整为另一种。</p></section><section><h4>辨析硬件和软件的中断响应<a href="#辨析硬件和软件的中断响应"><span>#</span></a></h4>

<table><thead><tr><th>对比维度</th><th>硬件响应优先级</th><th>软件处理优先级</th></tr></thead><tbody><tr><td>决定主体</td><td>硬件（排队判优逻辑电路）</td><td>软件（操作系统的中断屏蔽字）</td></tr><tr><td>能否修改</td><td>通常固定，不可动态修改</td><td>可由程序随时动态修改</td></tr><tr><td>解决的问题</td><td>多个中断同时到来，先响应谁？</td><td>中断已经在跑，谁能抢占/打断？</td></tr><tr><td>关乎指标</td><td>响应时间的前后</td><td>实际完成处理的前后、中断嵌套层级</td></tr></tbody></table></section></section><section><h3>DMA 方式<a href="#dma-方式"><span>#</span></a></h3><section><h4>DMA 传送方式<a href="#dma-传送方式"><span>#</span></a></h4><ul>
<li>停止 CPU 访存</li>
<li>周期挪用</li>
<li>DMA 与 CPU 交替访问</li>
</ul></section><section><h4>DMA 控制器的组成<a href="#dma-控制器的组成"><span>#</span></a></h4><ul>
<li>主存地址寄存器：存放要读写的内存地址，每传一个字自动加 1；</li>
<li>字计数器：记录还要传多少个字，每传一个减 1，减到 0 发中断；</li>
<li>数据缓冲寄存器：暂存一次传送的数据；</li>
<li>DMA 请求触发器和屏蔽触发器：控制请求的发出与屏蔽；</li>
<li>控制/状态逻辑：产生 DMA 请求和总线请求，接收 CPU 的响应；</li>
<li>中断机构：传送结束后向 CPU 发中断。</li>
</ul><p>需要注意，DMA 控制器和 CPU 争的是总线使用权，不是内存本身。DMA 占用总线时 CPU 不能访存，但仍可以执行不需要访存的指令，有 Cache 时影响更小。</p></section><section><h4>DMA 传送过程<a href="#dma-传送过程"><span>#</span></a></h4><ul>
<li>预处理：CPU 给 DMA 控制器写地址、计数值、控制字，启动设备</li>
<li>数据传送：DMA 控制器申请总线、挪用周期、直接在主存和设备之间搬数据，CPU 不参与</li>
<li>后处理：传送结束后 DMA 发中断，CPU 校验数据、唤醒进程</li>
</ul></section><section><h4>DMA 与中断的区别<a href="#dma-与中断的区别"><span>#</span></a></h4><ul>
<li>中断是程序切换，靠 CPU 执行指令搬数据；DMA 是硬件直接搬，CPU 只在开始和结束时参与；</li>
<li>中断以字为单位，DMA 以数据块为单位；</li>
<li>中断的响应发生在指令执行完之后，DMA 的请求可以在一个总线周期结束时就被响应；</li>
<li>DMA 的优先级高于中断，因为它面对的是高速设备，等待会丢数据。</li>
</ul><p>四种 I/O 方式的对比：</p>

<table><thead><tr><th>对比项</th><th>程序查询</th><th>程序中断</th><th>DMA</th></tr></thead><tbody><tr><td>CPU 参与程度</td><td>全程忙等</td><td>传送时执行中断服务程序</td><td>只在开始和结束参与</td></tr><tr><td>数据传送者</td><td>CPU</td><td>CPU</td><td>DMA 控制器</td></tr><tr><td>传送单位</td><td>字</td><td>字</td><td>块</td></tr><tr><td>CPU 与设备</td><td>串行</td><td>部分并行</td><td>高度并行</td></tr><tr><td>适用场景</td><td>简单、低速</td><td>低速、随机</td><td>高速、成块</td></tr></tbody></table><p>需要注意，DMA 也要用中断来通知结束，所以“DMA 方式不需要中断”是错的，它只是不需要 CPU 一条条搬数据。</p></section></section><section><h3>DMA 方式全流程辨析<a href="#dma-方式全流程辨析"><span>#</span></a></h3><section><h4>第一阶段：系统调用与准备（用户态 <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> 内核态，进程阻塞）<a href="#第一阶段系统调用与准备用户态-rightarrow-内核态进程阻塞"><span>#</span></a></h4><ol>
<li>进程发起请求：运行在用户态的应用进程执行到了读取磁盘文件的代码（如调用 <code>read()</code>），执行一条陷入指令（Trap / 访管指令）。</li>
<li>状态转换（变态！）：CPU 响应异常，由用户态切换到内核态（变态成功！），保存当前进程的上下文，转入操作系统的系统调用处理程序。</li>
<li>设备排队与进程阻塞：操作系统检查发现数据在慢吞吞的磁盘上，把该进程的状态由运行态改为阻塞态（等待 I/O），挂入等待该设备的阻塞队列中。此时 CPU 调度器切出，选择另一个就绪态进程上 CPU 运行。</li>
</ol></section><section><h4>第二阶段：CPU 初始化 DMA 控制器（内核态）<a href="#第二阶段cpu-初始化-dma-控制器内核态"><span>#</span></a></h4><ol>
<li>写入控制参数：在内核态下，CPU（通过设备驱动程序）向 DMA 控制器的寄存器写入初始化信息：
<ul>
<li>内存起始地址（数据放到内存的哪里）</li>
<li>传送字节数 / 计数器（要读多少数据）</li>
<li>磁盘设备地址（要读磁盘的哪个扇区）</li>
<li>控制字/命令字（指定为“读”操作，启动传数）</li>
</ul>
</li>
<li>CPU 脱手解放：DMA 启动完毕，CPU 彻底甩手不管，继续跑别的用户进程（CPU 又变回用户态去跑别的程序了）。</li>
</ol></section><section><h4>第三阶段：DMA 控制数据传输（纯硬件自主传输，无 CPU 参与数据搬运）<a href="#第三阶段dma-控制数据传输纯硬件自主传输无-cpu-参与数据搬运"><span>#</span></a></h4><ol>
<li>设备准备数据：DMA 控制器向磁盘控制器发出读请求，磁盘把数据读入自身的硬件内部缓冲区。</li>
<li>申请总线 / 窃取周期：缓冲区攒够一个字（或一个块）后，DMA 控制器向 CPU 发出总线使用权请求（HRQ）。</li>
<li>总线周期挪用（Cycle Stealing）：CPU 放弃一个存取周期的总线控制权（若发生冲突，DMA 优先于 CPU 访存）。</li>
<li>直通内存：DMA 控制器直接把数据写入内存指定的缓冲区中，不需要经过 CPU 内部寄存器！每传一个字，传输计数器减 1，内存地址加 1。</li>
<li>循环直至完成：重复上述 2~4 步，直到计数器减为 0（一连串数据全部传进内存）。</li>
</ol></section><section><h4>第四阶段：传输结束与中断唤醒（内核态 <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> 用户态）<a href="#第四阶段传输结束与中断唤醒内核态-rightarrow-用户态"><span>#</span></a></h4><ol>
<li>DMA 发出中断请求：整块数据传完后，DMA 控制器向 CPU 发出硬件中断请求信号（INTR），汇报工作完成。</li>
<li>CPU 响应中断（变态！）：CPU 在当前指令执行周期的末尾检测到中断，立刻暂停手头的工作，再次由用户态切换到内核态（又变态啦！），保护现场，转入 DMA 中断服务程序。</li>
<li>唤醒原进程：操作系统在内核态下处理后续工作（校验数据、修改文件元数据等），并将原来处于阻塞态的应用进程唤醒，转入就绪态，挂入就绪队列。</li>
<li>返回用户态：中断服务程序执行完毕，恢复现场，执行中断返回指令（<code>iret</code>），CPU 由内核态切换回用户态。</li>
<li>进程继续运行：一旦该应用进程再次被 CPU 调度选中，就从阻塞前断开的地方继续执行，直接在内存里愉快地享用读进来的数据啦！</li>
</ol></section></section><section><h3>以 scanf 为例，讲解输入 / 输出系统（结合操作系统）<a href="#以-scanf-为例讲解输入--输出系统结合操作系统"><span>#</span></a></h3><p>当程序执行到 <code>scanf</code> 时，库函数先检查 <code>stdio</code> 缓冲区；只有缓冲区中没有满足格式要求的数据时，才会通过 <code>read</code> 等系统调用进入内核。若输入尚未就绪，该系统调用会使进程阻塞。</p><p>键盘输入通常由设备中断交给驱动和终端行规程处理，再进入内核缓冲区。当缓冲区中已有满足本次读取的数据时，内核将数据复制到用户缓冲区并唤醒等待进程；具体的缓冲、回显、行结束和调度时机取决于操作系统与终端配置。</p><p>系统调用返回后，<code>scanf</code> 在用户态缓冲区中解析数据并返回。</p><p>简单来讲，就是执行 scanf 后，如果没有数据，那么使进程阻塞，等待用户输入数据。当用户输入数据的时候，数据首先进入键盘缓冲区，然后中断服务条例结束。</p><p>随后数据进入内核缓冲区，复制到用户缓冲区，然后使进程变为就绪态，等待进程唤醒。</p><p>进程被唤醒后，完成该函数，然后进入下一条函数（所以函数返回是最后做的）。</p></section></section>
<section><h2>低级错误<a href="#低级错误"><span>#</span></a></h2><section><h3>辨析 A 与 B 的关系<a href="#辨析-a-与-b-的关系"><span>#</span></a></h3><p>判断正误，需要考虑 A 推导 B，也要考虑 B 的发生会不会影响 A。</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/npee/ne/</id>
      <title type="text">考研冲刺前的总结 —— 计算机网络</title>
      <published>2026-09-09T00:00:00.000Z</published>
      <updated>2026-09-09T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/npee/ne/"/>
      <summary type="text">考研冲刺前的总结 —— 计算机网络</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>小东西太多了，需要经常看。</p><p>得花时间。</p><p>然后得去看计组，计组现在感觉很薄弱。</p></section>
<section><h2>绪论<a href="#绪论"><span>#</span></a></h2><section><h3>绪论 - 考纲<a href="#绪论---考纲"><span>#</span></a></h3><ul>
<li>计算机网络概述
<ul>
<li>计算机网络的概念、组成与功能，计算机网络的分类</li>
<li>计算机网络的性能指标</li>
</ul>
</li>
<li>计算机网络体系结构与参考模型
<ul>
<li>计算机网络分层结构，计算机网络协议，接口，服务的概念</li>
<li>ISO/OSI 参考模型和 TCP/IP 模型</li>
</ul>
</li>
</ul></section><section><h3>计算机网络概述<a href="#计算机网络概述"><span>#</span></a></h3><p>需要注意电路交换，报文交换与分组交换的相关计算。</p><p>电路交换仅物理层，需要和虚电路区分，虚电路是分组交换的一种，另一种是数据报。</p><p>报文交换时，报文是整块发送的，所以需要存储转发。</p><p>分组交换时，将报文分成多个小块，每个小块称为一个分组。</p><section><h4>计算机网络的组成与分类<a href="#计算机网络的组成与分类"><span>#</span></a></h4><p>从组成上看，计算机网络由硬件、软件和协议三部分构成；按功能可以分成资源子网和通信子网，资源子网负责数据处理，通信子网负责数据传送。</p><p>按覆盖范围分为广域网、城域网、局域网、个人区域网；按拓扑分为总线型、星形、环形、网状；按交换方式分为电路交换、报文交换、分组交换。</p><p>需要注意，互联网（internet）泛指网络的网络，因特网（Internet）是其中最大的一个，题目里说“互联网”一般指后者。</p></section><section><h4>性能指标<a href="#性能指标"><span>#</span></a></h4><p>速率指数据传输速率，单位是 <span><span>b/s\text{b/s}</span><span><span><span></span><span><span>b/s</span></span></span></span></span>。注意 <span><span>M\text{M}</span><span><span><span></span><span><span>M</span></span></span></span></span> 在速率里是 <span><span>10610^6</span><span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span></span></span></span></span></span></span></span> 而不是 <span><span>2202^{20}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>20</span></span></span></span></span></span></span></span></span></span></span></span>，只有存储容量才按 <span><span>2202^{20}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>20</span></span></span></span></span></span></span></span></span></span></span></span> 算。</p><p>带宽本来指信号能通过的频率范围，单位 <span><span>Hz\text{Hz}</span><span><span><span></span><span><span>Hz</span></span></span></span></span>；在计算机网络里通常指链路能传送的最高数据率，单位 <span><span>b/s\text{b/s}</span><span><span><span></span><span><span>b/s</span></span></span></span></span>。</p><p>吞吐量指单位时间内通过某个网络的实际数据量，受带宽和负载共同限制，所以吞吐量不会超过带宽。</p><p>时延由四部分组成：</p><span><span><span>时延=发送时延+传播时延+处理时延+排队时延\text{时延}=\text{发送时延}+\text{传播时延}+\text{处理时延}+\text{排队时延}</span><span><span><span></span><span><span>时延</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>发送时延</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>传播时延</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>处理时延</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>排队时延</span></span></span></span></span></span><p>发送时延等于数据长度除以发送速率，发生在网卡上；传播时延等于信道长度除以电磁波传播速率，发生在链路上。两者不要搞混，这也是最容易错的一处。</p><p>时延带宽积等于传播时延乘以带宽，表示链路上一共能容纳多少比特，也叫“以比特为单位的链路长度”。</p><p>往返时间 RTT 指从发送方发出数据到收到确认的时间，包含往返的传播时延以及中间的处理、排队时间。</p><p>利用率分为信道利用率和网络利用率。信道利用率是有效发送时间占总时间的比例；网络利用率过高会让时延急剧增大，因为排队时延会随着利用率接近 1 而迅速变长。</p><p>需要注意，算时延时单位要先统一，尤其是 <span><span>ms\text{ms}</span><span><span><span></span><span><span>ms</span></span></span></span></span>、<span><span>μs\mu\text{s}</span><span><span><span></span><span>μ</span><span><span>s</span></span></span></span></span> 和 <span><span>b/s\text{b/s}</span><span><span><span></span><span><span>b/s</span></span></span></span></span>、<span><span>Mb/s\text{Mb/s}</span><span><span><span></span><span><span>Mb/s</span></span></span></span></span> 混着给的时候。</p></section></section><section><h3>计算机体系结构与参考模型<a href="#计算机体系结构与参考模型"><span>#</span></a></h3><section><h4>服务数据单元与协议数据单元<a href="#服务数据单元与协议数据单元"><span>#</span></a></h4><p>服务数据单元是自下而上，下层为上层提供给了什么，是垂直的。</p><p>协议数据单元是水平的。</p></section><section><h4>OSI 参考模型<a href="#osi-参考模型"><span>#</span></a></h4><p>物理层 - 数据链路层 - 网络层 - 传输层 - 会话层 - 表示层 - 应用层</p><p>数据链路层：差错控制、流量控制、介质访问控制</p><p>网络层：差错控制、流量控制、拥塞控制</p><p>传输层：端到端的通信</p><p>会话层：建立、维护、管理会话、打断点、不同主机绘画</p><p>表示层：数据压缩、加密、解密、异构网络、数据格式变换</p><p>应用层：用户接口、文件传输、电子邮件、虚拟终端、网络管理、万维网</p><p>做题的时候，需要注意，下层为上层提供服务，例如传输层为会话层提供服务，而不是反过来。</p></section><section><h4>TCP/IP<a href="#tcpip"><span>#</span></a></h4><p>网络接口层 - 网际层 - 运输层 - 应用层</p><p>网络接口层：物理地址、物理寻址、链路层协议、物理层设备（没有流量控制）</p><p>网际层：流量控制，差错校验（但是校验错误仅丢弃，这个是 ipv4，ipv6 直接没有校验）</p><p>运输层：端到端的通信、可靠传输、差错控制、流量控制、拥塞控制</p></section><section><h4>教学模型<a href="#教学模型"><span>#</span></a></h4><p>物理层 - 数据链路层 - 网络层 - 运输层 - 应用层</p></section></section></section>
<section><h2>物理层<a href="#物理层"><span>#</span></a></h2><section><h3>物理层 - 考纲<a href="#物理层---考纲"><span>#</span></a></h3><ul>
<li>通信基础
<ul>
<li>信道，信号，带宽，码元，波特，速率，信源与信宿等基本概念</li>
<li>奈奎斯特定理与香农定理，编码与调制</li>
<li>电路交换，报文交换与分组交换，数据报与虚电路</li>
</ul>
</li>
<li>传输介质
<ul>
<li>双绞线，同轴电缆，光纤与无线传输介质，物理层接口的特性</li>
</ul>
</li>
<li>物理层设备
<ul>
<li>中继器，集线器</li>
</ul>
</li>
</ul></section><section><h3>通信基础<a href="#通信基础"><span>#</span></a></h3><p>信道是信号传输的媒介，信号分模拟信号和数字信号，信源是发送方，信宿是接收方。</p><p>按交互方式分为单向通信（单工）、半双工通信、全双工通信。</p><p>速率、波特、比特与带宽。</p><p>码元传输速率单位为波特（Baud），一个码元可以携带 <span><span>log⁡2V\log_2 V</span><span><span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>V</span></span></span></span> 位比特，其中 <span><span>VV</span><span><span><span></span><span>V</span></span></span></span> 是码元的离散状态数。</p><p>需要注意，波特率是每秒传多少个码元，比特率是每秒传多少位，两者靠“每个码元带几位”换算。</p><section><h4>编码与调制<a href="#编码与调制"><span>#</span></a></h4><p>编码是把数据变成数字信号，调制是把数据变成模拟信号。</p><p>常见编码：</p><ul>
<li>不归零编码（NRZ）：高低电平直接表示 0 和 1，没有自同步能力；</li>
<li>归零编码（RZ）：每个码元中间回到零电平，能自同步但占用带宽更大；</li>
<li>曼彻斯特编码：码元中间跳变，跳变既当时钟又当数据，10Base-T 以太网用；</li>
<li>差分曼彻斯特编码：码元开始处有没有跳变来表示 0 和 1，抗干扰更强，令牌环用；</li>
<li>4B/5B 编码：4 位数据映射成 5 位码，保证有足够的跳变，编码效率 80%，100Base-TX 用。</li>
</ul><p>常见调制：</p><ul>
<li>调幅（ASK）：改变载波幅度；</li>
<li>调频（FSK）：改变载波频率；</li>
<li>调相（PSK）：改变载波相位；</li>
<li>正交幅度调制（QAM）：幅度和相位同时调制，<span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 种状态可以携带 <span><span>log⁡2m\log_2 m</span><span><span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>m</span></span></span></span> 位比特。</li>
</ul><p>需要注意，曼彻斯特编码的波特率是数据率的两倍，因为一个码元中间必须跳变；问“波特率”时先确认编码方式。</p></section><section><h4>奈奎斯特定理<a href="#奈奎斯特定理"><span>#</span></a></h4><p>公式：</p><p><span><span>Cmax=2Blog⁡2(V)(bps)C_{max} = 2B \log_2(V) \quad (\text{bps})</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span>ma</span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>B</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>V</span><span>)</span><span></span><span>(</span><span><span>bps</span></span><span>)</span></span></span></span></p><p>物理意义：信道在理想无噪声状态下，码元传输速率的极限是 <span><span>2B Baud2B \text{ Baud}</span><span><span><span></span><span>2</span><span>B</span><span><span> Baud</span></span></span></span></span>（<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 为信道带宽，单位 <span><span>Hz\text{Hz}</span><span><span><span></span><span><span>Hz</span></span></span></span></span>）。如果一个码元携带 <span><span>log⁡2(V)\log_2(V)</span><span><span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>V</span><span>)</span></span></span></span> 个比特信息（<span><span>VV</span><span><span><span></span><span>V</span></span></span></span> 为离散电平数或码元状态数），则最大信息传输速率为 <span><span>2Blog⁡2(V)2B \log_2(V)</span><span><span><span></span><span>2</span><span>B</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>V</span><span>)</span></span></span></span>。</p><p>适用场景：题目明确提到了“无噪声信道”，或者给出了“调制电平数/状态数 <span><span>VV</span><span><span><span></span><span>V</span></span></span></span>”且要求极限速率。</p></section><section><h4>香浓定理<a href="#香浓定理"><span>#</span></a></h4><p>公式：</p><p><span><span>Cmax=Blog⁡2(1+SN)(bps)C_{max} = B \log_2(1 + \frac{S}{N}) \quad (\text{bps})</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span>ma</span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>B</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>N</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>S</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>)</span><span></span><span>(</span><span><span>bps</span></span><span>)</span></span></span></span></p><p>物理意义：在存在随机热噪声的信道中，即使码元状态数无限多，受噪声干扰影响，信息的传输速率依然存在绝对极限。其中 <span><span>S/NS/N</span><span><span><span></span><span>S</span><span>/</span><span>N</span></span></span></span> 为信噪比（必须是无量纲的功率比值）。</p><p>注意换算：若题目给的是分贝值（<span><span>dB\text{dB}</span><span><span><span></span><span><span>dB</span></span></span></span></span>），需用公式换算：</p><p><span><span>信噪比=10log⁡10SN (dB)⟹SN=10dB/10\text{信噪比}=10\log_{10}\frac{S}{N}\ (\text{dB})\quad\Longrightarrow\quad \frac{S}{N}=10^{\text{dB}/10}</span><span><span><span></span><span><span>信噪比</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span><span>10</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>N</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>S</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span> </span><span>(</span><span><span>dB</span></span><span>)</span><span></span><span></span><span>⟹</span><span></span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>N</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>S</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span>0</span><span><span><span><span><span><span></span><span><span><span><span>dB</span></span><span>/10</span></span></span></span></span></span></span></span></span></span></span></span>
注：如果题目涉及信号与噪声的幅度比，功率比就是幅度比的平方；若要开方求幅度，也必须写成 <span><span>(… )1/2(\dots)^{1/2}</span><span><span><span></span><span>(</span><span>…</span><span></span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>1/2</span></span></span></span></span></span></span></span></span></span></span></span> 的形式。</p></section><section><h4>通信基础相关的计算辨析<a href="#通信基础相关的计算辨析"><span>#</span></a></h4><ol>
<li>如果机械的限死频率，那么只需要看有没有达到上限，如果没有的话，那么就直接按这个频率算，不需要管其他的参数</li>
<li>需要注意题目是不是要求算极限，如果不是极限，那么按照正常的公式计算即可</li>
<li>对于没有提到的信息，不要多考虑，例如本题完全没给计算奈奎斯特定理的条件，仅给了香浓定理的条件，那么久不需要考虑奈奎斯特定理</li>
</ol><p>双重约束取最小：若题目既给了带宽和调制进制，又给了信噪比，且问“信道的最大极限速率”，此时两个定理都要算一遍，取两者的最小值作为最终的物理极限速率：</p><p><span><span>Creal max=min⁡(2Blog⁡2V, Blog⁡2(1+S/N))C_{\text{real max}}=\min\bigl(2B\log_2 V,\ B\log_2(1+S/N)\bigr)</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span><span>real max</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>min</span><span><span>(</span></span><span>2</span><span>B</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>V</span><span>,</span><span> </span><span></span><span>B</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>S</span><span>/</span><span>N</span><span>)</span><span><span>)</span></span></span></span></span></p><blockquote><p>上述的 B 其实就是 W，是一个东西。</p></blockquote><p>极限情况下（奈奎斯特定理）：<span><span>极限数据率 Cmax=2W⏟极限波特率 RB×log⁡2(V)⏟每个码元的比特数(bps)\text{极限数据率 } C_{max} = \underbrace{2W}_{\text{极限波特率 } R_B} \times \underbrace{\log_2(V)}_{\text{每个码元的比特数}} \quad (\text{bps})</span><span><span><span></span><span><span>极限数据率</span><span> </span></span><span><span>C</span><span><span><span><span><span><span></span><span><span><span>ma</span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>极限波特率</span><span> </span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span></span><span><span><span><span><span><span></span><span><span></span><span></span><span></span></span></span><span><span></span><span><span>2</span><span>W</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>×</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>每个码元的比特数</span></span></span></span></span><span><span></span><span><span><span><span><span><span></span><span><span></span><span></span><span></span></span></span><span><span></span><span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>V</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span>(</span><span><span>bps</span></span><span>)</span></span></span></span></p><p>非极限情况下，事实上就是：<span><span>S=RB×log⁡2(V)(bps)S = R_B \times \log_2(V) \quad (\text{bps})</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>×</span><span></span></span><span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>V</span><span>)</span><span></span><span>(</span><span><span>bps</span></span><span>)</span></span></span></span></p><p>而在香浓公式里面，则没有波特率存在。</p></section></section><section><h3>传输介质<a href="#传输介质"><span>#</span></a></h3><p>有线传输介质：双绞线、同轴电缆、光纤。</p><p>无线传输介质：无线电波、微波、红外线、激光。</p><p>几个需要注意的点：</p><ul>
<li>单模光纤纤芯细、只传一种模式，传输距离远、带宽大，光源用激光二极管（LD），价格贵；</li>
<li>多模光纤纤芯粗、多种模式同时传播，距离近，光源用发光二极管（LED），价格便宜。</li>
</ul><p>双绞线价格便宜，两根线绞合在一起可以在一定程度上抵消干扰，绞合越密抗干扰越好。</p><p>同轴电缆可以抗比较强的干扰。</p><p>此外还可以注意四个特性，即机械特性，电气特性，功能特性，过程特性。</p></section><section><h3>物理层设备<a href="#物理层设备"><span>#</span></a></h3><p>这俩都属于第一层，也就是物理层。</p><section><h4>中继器<a href="#中继器"><span>#</span></a></h4><p>放大和整形。</p></section><section><h4>集线器<a href="#集线器"><span>#</span></a></h4><p>从除了自己之外的所有端口转发，不能隔离冲突域、广播域。</p><p>需要注意集线器再生电流需要时间，看题目里怎么表示。</p></section></section></section>
<section><h2>数据链路层<a href="#数据链路层"><span>#</span></a></h2><section><h3>数据链路层 - 考纲<a href="#数据链路层---考纲"><span>#</span></a></h3><ul>
<li>数据链路层的功能</li>
<li>组帧</li>
<li>差错控制
<ul>
<li>检错编码</li>
<li>纠错编码</li>
</ul>
</li>
<li>流量控制与可靠传输机制
<ul>
<li>流量控制</li>
<li>可靠传输与滑动窗口</li>
<li>停止等待</li>
<li>后退 N 帧</li>
<li>选择重传</li>
</ul>
</li>
<li>介质访问控制
<ul>
<li>信道划分：频分复用，时分复用，波分复用，码分复用</li>
<li>随机访问：ALOHA 协议，CSMA 协议，CSMA/CD 协议，CSMA/CA 协议</li>
</ul>
</li>
<li>局域网
<ul>
<li>局域网的基本概念与体系结构</li>
<li>以太网与 IEEE 802.3</li>
<li>IEEE 802.11</li>
<li>VLAN 的基本概念与基本原理</li>
</ul>
</li>
<li>广域网
<ul>
<li>广域网的基本概念</li>
<li>PPP 点对点协议</li>
</ul>
</li>
<li>数据链路层设备
<ul>
<li>以太网交换机及其工作原理</li>
</ul>
</li>
</ul></section><section><h3>数据链路层基本功能<a href="#数据链路层基本功能"><span>#</span></a></h3><p>对 OSI 参考模型，该层需要实现差错控制、流量控制、介质访问控制。</p><p>对 TCP/IP 模型而言，该层只需要实现差错校验（没有控制，错了就直接丢）。</p></section><section><h3>组帧<a href="#组帧"><span>#</span></a></h3><section><h4>字符计数法<a href="#字符计数法"><span>#</span></a></h4><p>在帧头用一个计数字段记录本帧的总字节数，接收方数够这么多字节就认为一帧结束。</p><p>问题是计数字段一旦出错，后面所有帧的边界都会跟着错位，所以实际协议很少单独用它。</p></section><section><h4>字节填充法<a href="#字节填充法"><span>#</span></a></h4><p>例如 PPP 协议，需要使用字节填充法。</p></section><section><h4>零比特填充法<a href="#零比特填充法"><span>#</span></a></h4><p>每 5 个连续的 1，就往后面插入一个 0。</p></section><section><h4>违规编码法<a href="#违规编码法"><span>#</span></a></h4><p>例如差分曼彻斯特编码，不可能出现连续的电平，所以用这个标志来作为帧的边界。</p></section></section><section><h3>差错控制<a href="#差错控制"><span>#</span></a></h3><section><h4>检错码与纠错码理论<a href="#检错码与纠错码理论"><span>#</span></a></h4><p><span><span>l=d+c+1l=d+c+1</span><span><span><span></span><span>l</span><span></span><span>=</span><span></span></span><span><span></span><span>d</span><span></span><span>+</span><span></span></span><span><span></span><span>c</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>，且 <span><span>d≥cd\geq c</span><span><span><span></span><span>d</span><span></span><span>≥</span><span></span></span><span><span></span><span>c</span></span></span></span>。</p><p>l 是码距，该编码集的码距的意思是任意两个有效字的码距的最小值。</p><p>码距计算即按位异或，同为 0，异为 1，1 的个数即码距。</p><p>d 指的是检错能力，c 指的是纠错能力。</p></section><section><h4>奇偶校验码<a href="#奇偶校验码"><span>#</span></a></h4><ul>
<li>
<p>奇校验码：最后加一位校验码，导致总共 1 的个数是奇数</p>
</li>
<li>
<p>偶校验码：最后加一位校验码，导致总共 1 的个数是偶数</p>
</li>
</ul><p>如果发的信息违背了这个，那么就说明是错的。</p><p>只能检测奇数位错误，不能检测偶数位错误。</p></section><section><h4>CRC 循环冗余校验<a href="#crc-循环冗余校验"><span>#</span></a></h4><p>采用多项式除法，余数为校验码。减法采用模 2 减法，即异或运算。</p><p>计算方法为约定一个 r+1 为的多项式，然后用原式补 r 个 0 进行除法，在计算的时候使用模 2 减法。</p><p>最后把余数拼接得到要发送的东西。</p><p>校验的时候直接除，为 0 是对的。</p></section><section><h4>海明码<a href="#海明码"><span>#</span></a></h4><ul>
<li>海明码的位数：背公式，设信息位为 n 位，校验位为 k 位，则 <span><span>2k≥n+k+12^k \geq n + k + 1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span></span></span></span></span><span></span><span>≥</span><span></span></span><span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>k</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>。其实简单来说，k 个校验位可以表达 2^k 种状态，必须要覆盖 n+k 个位置报错和 1 种无错状态。</li>
<li>海明码的校验位占据所有 2 的整数次幂的位置，即 <span><span>H1H_1</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>、<span><span>H2H_2</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>、<span><span>H4H_4</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>、<span><span>H8H_8</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>8</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，剩余位置为信息位，信息位按序填入。</li>
</ul>

<table><thead><tr><th>位号（十进制）</th><th><span><span>H7H_7</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>7</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></th><th><span><span>H6H_6</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>6</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></th><th><span><span>H5H_5</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>5</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></th><th><span><span>H4H_4</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></th><th><span><span>H3H_3</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></th><th><span><span>H2H_2</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></th><th><span><span>H1H_1</span><span><span><span></span><span><span>H</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></th></tr></thead><tbody><tr><td>位号（二进制）</td><td><span><span>111111</span><span><span><span></span><span>111</span></span></span></span></td><td><span><span>110110</span><span><span><span></span><span>110</span></span></span></span></td><td><span><span>101101</span><span><span><span></span><span>101</span></span></span></span></td><td><span><span>100100</span><span><span><span></span><span>100</span></span></span></span></td><td><span><span>011011</span><span><span><span></span><span>011</span></span></span></span></td><td><span><span>010010</span><span><span><span></span><span>010</span></span></span></span></td><td><span><span>001001</span><span><span><span></span><span>001</span></span></span></span></td></tr><tr><td>角色分配</td><td><span><span>D4D_4</span><span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td><td><span><span>D3D_3</span><span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td><td><span><span>D2D_2</span><span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td><td><span><span>P3P_3</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td><td><span><span>D1D_1</span><span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td><td><span><span>P2P_2</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td><td><span><span>P1P_1</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></td></tr><tr><td>填入数值</td><td><span><span>11</span><span><span><span></span><span>1</span></span></span></span></td><td><span><span>00</span><span><span><span></span><span>0</span></span></span></span></td><td><span><span>11</span><span><span><span></span><span>1</span></span></span></span></td><td>？</td><td><span><span>00</span><span><span><span></span><span>0</span></span></span></span></td><td>？</td><td>？</td></tr></tbody></table><p>海明码如何填入？对于 P1，显然 H1，H3，H5，H7 的最后一位是 1，所以 P1 = D1 异或 D2 异或 D4。同理对于 P2，显然 H2，H3，H6，H7 为 1，所以 P2 = D2 异或 D3 异或 D4。</p><p>如何纠错？如果将 S1 = P1 异或 D1 异或 D2 异或 D4，如果 S1，S2，S3 全为 0，那么没有错误。如果 S3S2S1 = 二进制，对应的位错了，需要反过来。</p></section></section><section><h3>流量控制与可靠传输机制<a href="#流量控制与可靠传输机制"><span>#</span></a></h3><section><h4>停止等待协议<a href="#停止等待协议"><span>#</span></a></h4><p>停止等待协议顾名思义发一个，收完之后发确认帧然后再发。</p><p>可以采用 ack0 和 ack1 交替使用的方式。</p></section><section><h4>回退 N 帧协议<a href="#回退-n-帧协议"><span>#</span></a></h4><p>需要注意回退 n 帧协议的累计确认。</p><p>对于滑动窗口协议，假设用 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位序号编号，那么发送窗口与接收窗口之和不超过 <span><span>2n2^n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>。</p><p>由于回退 N 帧的接收窗口为 1，所以发送窗口最大为 <span><span>2n−12^n-1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p></section><section><h4>选择重传协议<a href="#选择重传协议"><span>#</span></a></h4><p>没有累计确认。</p><p>同样地，序号用 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位时，发送窗口与接收窗口之和不超过 <span><span>2n2^n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>。</p><p>一般取发送窗口等于接收窗口，所以各设为 <span><span>2n−12^{n-1}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>。但其实只要两者之和不超过 <span><span>2n2^n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 就行，不必相等。</p></section><section><h4>信道利用率分析<a href="#信道利用率分析"><span>#</span></a></h4><span><span><span>U=TdTd+RTT+TaU=\frac{T_d}{T_d+\text{RTT}+T_a}</span><span><span><span></span><span>U</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>T</span><span><span><span><span><span><span></span><span><span>d</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span><span><span>RTT</span></span><span></span><span>+</span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>T</span><span><span><span><span><span><span></span><span><span>d</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><p>最大信道利用率（对于回退 N 帧和选择重传协议）：</p><span><span><span>Umax⁡=N TdTd+RTT+TaU_{\max}=\frac{N\,T_d}{T_d+\text{RTT}+T_a}</span><span><span><span></span><span><span>U</span><span><span><span><span><span><span></span><span><span><span><span>m</span><span>a</span><span>x</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>T</span><span><span><span><span><span><span></span><span><span>d</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span><span><span>RTT</span></span><span></span><span>+</span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>N</span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span>d</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><p>这里的 <span><span>NN</span><span><span><span></span><span>N</span></span></span></span> 指的是发送窗口。</p><p>尤其需要注意，信道利用率 ≠ 数据率，在计算的时候要注意不要想错算什么。</p></section></section><section><h3>介质访问控制<a href="#介质访问控制"><span>#</span></a></h3><section><h4>时分复用 TDM<a href="#时分复用-tdm"><span>#</span></a></h4><p>时分复用即按固定次序分配时序，优化为 STDM，统计时分复用，动态分配时隙。</p><p>通常用于数字信号的传播。</p></section><section><h4>频分复用 FDM<a href="#频分复用-fdm"><span>#</span></a></h4><p>子频带之间需要隔离频带。</p><p>通常用于模拟信号的传播。</p></section><section><h4>波分复用 WDM<a href="#波分复用-wdm"><span>#</span></a></h4><p>光的频分复用。</p></section><section><h4>码分复用 CDM<a href="#码分复用-cdm"><span>#</span></a></h4><p>使用不同编码来区分各个原始信号，即共享时间，又共享信道的频率。</p><p>简单来讲，每个站点的码片都要和其他正交（注意如果选项中有多个码片，那么也得相互正交）。将得到的原始信息和自己相乘，除以码片长度得到信息。</p><p>如果是 1，代表 1，如果是 -1，代表 0。</p></section><section><h4>ALOHA 协议<a href="#aloha-协议"><span>#</span></a></h4><ul>
<li>纯 ALOHA 协议：任何一个站点需要发送数据时，可以立刻发送，无须检测信道状态。如果一段时间未收到确认，则认为发生了冲突。</li>
<li>时隙 ALOHA 协议：将时间划分为等长的时隙，要求所有站点同步时钟，且帧发送时间必须小于等于一个时隙。</li>
</ul></section><section><h4>CSMA 协议<a href="#csma-协议"><span>#</span></a></h4><p>载波监听机制。</p><ul>
<li>1-坚持 CSMA 协议：如果监听到信道空闲，则立刻发送数据。如果监听到信道忙，则持续监听，直到信道空闲后立刻发送数据。</li>
<li>非坚持 CSMA 协议：如果监听到信道空闲，则立刻发送数据。如果监听到信道忙，则等待一个随机时间后，再次监听信道。</li>
<li>p-坚持 CSMA 协议：如果监听到信道空闲，有概率 p 立刻发送数据，有概率 1-p 推迟到下一个时隙。</li>
</ul></section><section><h4>令牌传递协议<a href="#令牌传递协议"><span>#</span></a></h4><p>一个令牌沿着环形网络在各个站点之间依次传递。</p><ul>
<li>当网络空闲时，环路中只有令牌帧在循环传递</li>
<li>当令牌传递到有数据要发送的站点时，该站点修改标志位，并且在令牌中附带数据，发出去</li>
<li>沿着环路传递，如果目的地址和本站点相同，复制帧到本地，但是继续转发</li>
<li>返回到原站为止，不再转发，并判断是否出错，错了再生成再发</li>
<li>源站重新生成令牌，交给下一个站交出控制权</li>
</ul><p>适合高负载广播信道。</p></section></section><section><h3>局域网<a href="#局域网"><span>#</span></a></h3><p>LLC 子层与 MAC 子层。</p><p>可以理解为 LLC 子层是为了解决和物理层对接相关问题的，而 MAC 子层是解决和网络层对接相关问题的。</p><section><h4>以太网与 IEEE 802.3<a href="#以太网与-ieee-8023"><span>#</span></a></h4><p>以太网逻辑拓扑为总线型，物理拓扑为星形。</p><p>以太网本身是无连接的，采用曼彻斯特编码。</p></section><section><h4>以太网传输介质<a href="#以太网传输介质"><span>#</span></a></h4>

<table><thead><tr><th>标准名称</th><th>传输介质</th><th>编码方式</th><th>物理拓扑</th><th>最大段长</th><th>最多节点数</th></tr></thead><tbody><tr><td>10Base-5</td><td>同轴电缆（粗缆）</td><td>曼彻斯特编码</td><td>总线形</td><td>500m</td><td>100</td></tr><tr><td>10Base-2</td><td>同轴电缆（细缆）</td><td>曼彻斯特编码</td><td>总线形</td><td>185m</td><td>30</td></tr><tr><td>10Base-T</td><td>非屏蔽双绞线</td><td>曼彻斯特编码</td><td>星形</td><td>100m</td><td>2</td></tr><tr><td>10Base-F</td><td>光纤对（850nm）</td><td>曼彻斯特编码</td><td>点对点</td><td>2000m</td><td>2</td></tr></tbody></table><p>网络适配器：</p><ul>
<li>工作层次：物理层与数据链路层（教材侧重其工作在数据链路层）。</li>
<li>核心部件：内置处理器和存储器（用于缓存数据）。</li>
</ul><p>网络适配器功能：</p><ul>
<li>串并转换：与局域网介质之间采用串行传输，与计算机内部 I/O 总线之间采用并行传输，网卡负责二者转换。</li>
<li>信号匹配：负责物理连接与电信号的电平匹配。</li>
<li>帧处理：负责数据帧的封装、拆封、发送与接收。</li>
<li>介质访问控制：执行链路层的介质访问控制协议。</li>
<li>编解码：负责物理信号的编码与解码。</li>
<li>中断交互：收到正确的帧后通过硬件中断通知主机 CPU，将数据向上交付网络层；发送时接收网络层下传的 IP 数据报进行封装。</li>
</ul></section><section><h4>以太网 mac 地址<a href="#以太网-mac-地址"><span>#</span></a></h4><p>48 位全球唯一地址，6B。</p><p>高 24 位为厂商标识，低 24 位由厂商自行分配。</p><p>需要注意，第一个字节的第 8 位如果为 0，代表是单播地址，如果为 1，代表为多播地址，只有 ff-ff-ff-ff-ff-ff 是广播地址；第一个字节的第 7 位如果是 0，那么代表是全球管理的设备，如果是 1，代表的是本地管理的设备。</p></section><section><h4>CSMA/CD 协议<a href="#csmacd-协议"><span>#</span></a></h4><p>需要注意避退。从 [0, 2^k - 1] 中选择一个数，k 为重传次数且最大为 10。</p><p>如果重传次数达 16 次还失败，那么网络拥塞，放弃该帧并汇报。</p><p>此外，如果检测到冲突，要人为发送干扰信号（32 位或 48 位），让所有站点都知道发生了冲突</p><p>帧间最小间隔为 96 bit 发送时间。</p><p>CSMA/CD 协议流程</p><ul>
<li>准备发送</li>
<li>检测信道（在 96 bit 发送时间里保持空闲）开始发送
<ul>
<li>发送成功</li>
<li>发送失败</li>
</ul>
</li>
</ul></section><section><h4>以太网的 mac 帧<a href="#以太网的-mac-帧"><span>#</span></a></h4><p>662n4，收发协数验。</p><p>目的地址（谁收） - 源地址（谁发） - 协议 - 数据（46-1500B） - FCS 验证（是 CRC 最后算出来的东西）。</p><p>当然最前面还有前同步码 8B，前 7B 为 10101010B，最后 1B 为 10101011。</p><p>以太网不需要帧结束界定符，因为有帧间最小间隔来界定。</p><p>协议指的是上层采用什么协议，例如 IP 协议。</p></section><section><h4>高速以太网<a href="#高速以太网"><span>#</span></a></h4><ul>
<li>100Base-T：星形以太网，全双工 / 半双工。半双工采用 CSMA/CD，最短帧长仍是 64B，用双绞线。帧间最小间隔从 <span><span>9.6 μs9.6\,\mu\text{s}</span><span><span><span></span><span>9.6</span><span></span><span>μ</span><span><span>s</span></span></span></span></span> 减到 <span><span>0.96 μs0.96\,\mu\text{s}</span><span><span><span></span><span>0.96</span><span></span><span>μ</span><span><span>s</span></span></span></span></span></li>
<li>吉比特以太网：全双工 / 半双工，采用光纤 / 双绞线。</li>
<li>十吉比特以太网：全双工，采用双绞线 / 光纤</li>
</ul></section><section><h4>无线局域网<a href="#无线局域网"><span>#</span></a></h4><p>有基础设施的 WLAN</p><ul>
<li>BSS：基本服务集，无线网的最小构建单元，1 基站 + 若干移动站</li>
<li>ESS：扩展服务集，多个 BSS 通过分配系统（DS，通常是有线网络）组合起来</li>
</ul><p>无基础设施的 WLAN</p><ul>
<li>临时组建，没有中心基站。每一个人都是发送接收端，又充当帮别人转发数据的路由器。</li>
</ul></section><section><h4>CSMA/CA<a href="#csmaca"><span>#</span></a></h4><p>802.11 协议采用的，并且采用停止等待协议。</p><p>DCF 方式与 PCF 方式。</p><p>前者是分布式协调功能，不需要任何中心控制。各站之间通过争夺信道来获得发送权，且这是最常见也是 CSMA/CA 必须实现的方式。</p><p>后者采用 AP 集中控制，采用类似探寻的机制轮流分配。</p><p>而基于此又引出三个帧间间隔：</p><p>DIFS、PIFS、SIFS。其中 SIFS 是最短的 IFS，他是用于分割一个对话的连续帧，例如 ACK、CTS，分片后的数据以及对 AP 的探寻等。</p><p>检测到冲突必须等待 DIFS 的时间，且推迟总是发生在 DIFS 之后。</p><p>以 A 发送数据为例子，假设检测到空闲，那么等待 DIFS 的时间直接发送。</p><p>如果检测到忙，那么设置一个计时器，冻结该计时器，自动等待空闲。当空闲的时候，先等待 DIFS 的时间，然后启动计时器开始争夺信道，如果计时器为 0，立刻发送，不是，重复 2。</p><p>争夺窗口采用二进制指数避退。</p><p>为缓解隐蔽站问题，802.11 协议允许对信道进行预约。</p><p>流程为：</p><ul>
<li>A 先检测信道，空闲，等待 DIFS 的时间，然后发送 RTS 告诉所有人我要占用 SIFS+CTS+SIFS+DATA+SIFS+ACK 的时间</li>
<li>AP 收到 RTS 帧且空闲，等待 SIFS，广播一个允许发送 CTS 的控制帧。</li>
<li>A 站收到 CTS 后，等待 SIFS，发送数据。</li>
</ul><p>需要注意的是，只有预约的时候才这么做，普通正常发送直接发就好了。</p><p>CSMA/CA 思想是先打招呼再发送。</p></section><section><h4>802.11 mac 帧<a href="#80211-mac-帧"><span>#</span></a></h4><p>2-2-6-6-6-2-6-n-4，即帧控制 2B - 持续期 2B - 地址 1（6B）- 地址 2（6B）- 地址 3（6B）- 序列控制 2B - 地址 4（6B，用于自组网络，不讨论）- 0~2312B 数据 - FCS 4B</p><p>在一个局域网内，谁收，谁发，最终发给谁。</p><p>需要注意，如果是不同的局域网，那么要改最终发给谁。</p></section><section><h4>VLAN 与 802.1q 帧<a href="#vlan-与-8021q-帧"><span>#</span></a></h4><p>在 802.3 帧的源地址后加了 4B 的 VLAN。</p><p>在数据链路层隔离广播域。</p></section><section><h4>CSMA/CD 相关的计算<a href="#csmacd-相关的计算"><span>#</span></a></h4><p>对于 10Base-T 以太网，数据率为 <span><span>10 Mb/s10\text{ Mb/s}</span><span><span><span></span><span>10</span><span><span> Mb/s</span></span></span></span></span>，最短帧长为 <span><span>64 B64\text{ B}</span><span><span><span></span><span>64</span><span><span> B</span></span></span></span></span>，所以最短帧的发送时间为</p><span><span><span>64×8 bit10 Mb/s=51.2 μs\frac{64\times 8\text{ bit}}{10\text{ Mb/s}}=51.2\,\mu\text{s}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>10</span><span><span> Mb/s</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>64</span><span></span><span>×</span><span></span><span>8</span><span><span> bit</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>51.2</span><span></span><span>μ</span><span><span>s</span></span></span></span></span></span><p>这个时间就是争用期，也叫端到端往返时延的上限。</p><p>假设介质传播速率为 <span><span>vv</span><span><span><span></span><span>v</span></span></span></span>，最大介质长度为 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>，则要求</p><span><span><span>2xv≤51.2 μs\frac{2x}{v}\le 51.2\,\mu\text{s}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>v</span></span></span><span><span></span><span></span></span><span><span></span><span><span>2</span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>≤</span><span></span></span><span><span></span><span>51.2</span><span></span><span>μ</span><span><span>s</span></span></span></span></span></span><p>此外，如果有额外的时延（例如 Hub 的再生比特流时延），需要 2 倍（因为一来一回）。</p></section></section><section><h3>广域网<a href="#广域网"><span>#</span></a></h3><p>点对点接入，OSI 层次为下三层。强调资源共享。</p><p>主要是 PPP 协议。</p><p>LCP：一个链路控制协议，建立配置。</p><p>NCP：一套网络控制协议，支持多个网络层协议。</p><p>先 LCP，然后 NCP。</p><p>PPP 是字符填充，面向字节的服务，提供有连接不可靠服务。</p><p>可以支持不同网络层协议。</p><p>仅支持点对点全双工。</p><p>字节填充法如下：</p><p>PPP 帧的前后都有一个专门标记帧开始和结束的标志字段（Flag），固定是十六进制的 0x7E（二进制 01111110）。</p><p>在 PPP 中，定义了转义字符为十六进制的 0x7D（二进制 01111101）。具体的转义规则是：遇到特殊字符，就插入 0x7D，并将原来的字符与 0x20 进行异或（XOR）运算。</p><p>具体分三种情况（发送端处理）：</p><p>情况一：信息字段中出现了标志字节 0x7E</p><p>处理办法：把它转义成两个字节的序列：(0x7D, 0x5E)。</p><p>原理：<span><span>0x7E⊕0x20=0x5E\mathtt{0x7E}\oplus\mathtt{0x20}=\mathtt{0x5E}</span><span><span><span></span><span><span>0x7E</span></span><span></span><span>⊕</span><span></span></span><span><span></span><span><span>0x20</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>0x5E</span></span></span></span></span>。</p><p>情况二：信息字段中出现了转义字节 0x7D</p><p>处理办法：把它转义成两个字节的序列：(0x7D, 0x5D)。</p><p>原理：<span><span>0x7D⊕0x20=0x5D\mathtt{0x7D}\oplus\mathtt{0x20}=\mathtt{0x5D}</span><span><span><span></span><span><span>0x7D</span></span><span></span><span>⊕</span><span></span></span><span><span></span><span><span>0x20</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>0x5D</span></span></span></span></span>。</p><p>情况三：出现了 ASCII 控制字符（数值小于 0x20 的字符）</p><p>比如回车、换行或者通信控制符（如 0x03）。</p><p>处理办法：同样在前面插入 0x7D，同时该字符加上（或异或）0x20。</p><p>例如：字符 0x03 会被转化为 (0x7D, 0x23)。</p><p>接收端如何还原？</p><p>接收端扫描数据流，只要发现 0x7D，就把它丢弃（删除）；</p><p>然后把紧接着后面的那个字节与 0x20 进行异或运算，直接恢复出原始字节！</p><p>如果是普通字符，就正常原样接收。</p></section><section><h3>数据链路层设备<a href="#数据链路层设备"><span>#</span></a></h3><p>属于第二层，也就是数据链路层设备。</p><section><h4>网桥<a href="#网桥"><span>#</span></a></h4><p>网桥工作在数据链路层，连接两个网段，按 MAC 地址转发帧，能隔离冲突域，不能隔离广播域。</p><p>收到帧后先看源 MAC 学习端口，再看目的 MAC：知道就单播转发，不知道就向除入口外的所有端口泛洪。</p><p>需要注意，网桥要防止环路，因为二层帧没有 TTL，环路上的广播会一直循环，所以要用生成树协议（STP）在逻辑上阻塞掉部分端口。</p><p>网桥和集线器的区别：集线器是物理层设备，收到什么就往所有端口发什么，所有端口在同一个冲突域；网桥是链路层设备，能按 MAC 选择性转发，每个端口就是一个冲突域。</p></section><section><h4>交换机<a href="#交换机"><span>#</span></a></h4><p>多端口网桥，隔离冲突域，不能隔离广播域。</p></section><section><h4>共享式以太网与交换式以太网<a href="#共享式以太网与交换式以太网"><span>#</span></a></h4><p>前者采用集线器，工作在物理层；后者采用交换机，工作在数据链路层。</p></section></section><section><h3>交换机自学习模型（含 VLAN）<a href="#交换机自学习模型含-vlan"><span>#</span></a></h3><p>设有一台支持 802.1Q 的以太网交换机 SW，拥有 4 个端口：</p><ol>
<li>端口 1：Access 端口，PVID 为 10，连接主机 A（MAC 地址为 MAC_A）。</li>
<li>端口 2：Access 端口，PVID 为 20，连接主机 B（MAC 地址为 MAC_B）。</li>
<li>端口 3：Access 端口，PVID 为 10，连接主机 C（MAC 地址为 MAC_C）。</li>
<li>端口 4：Trunk 端口，允许 VLAN 10 和 VLAN 20 通过，连接上级交换机。</li>
</ol><p>初始状态：</p><p>交换机的 MAC 地址表完全为空。</p><p>（注意：带 VLAN 的交换机，MAC 表项结构为：MAC 地址、VLAN ID、端口号）</p><section><h4>步骤一：主机 A 向主机 C 发送数据帧（广播泛洪与初次学习）<a href="#步骤一主机-a-向主机-c-发送数据帧广播泛洪与初次学习"><span>#</span></a></h4><ol>
<li>发送：主机 A 发送普通以太网帧（无 q 标签），源 MAC 为 MAC_A，目的 MAC 为 MAC_C。</li>
<li>接收与打标：数据帧从端口 1 进入。因为端口 1 是 Access 端口且 PVID 为 10，交换机在内部为该帧打上 VLAN 10 的 802.1Q 标签。</li>
<li>自学习：交换机记录下源地址与接口关系，MAC 地址表新增一条记录：
MAC_A，VLAN 10，端口 1。</li>
<li>查找与转发：
交换机查找目的地址 MAC_C，在 VLAN 10 的表项中未找到（未知单播帧），执行局域网内泛洪。
根据 VLAN 隔离规则，该帧只能在 VLAN 10 内泛洪：
<ul>
<li>端口 2 属于 VLAN 20，直接阻断，不转发。</li>
<li>端口 3 是 Access 端口（属于 VLAN 10），交换机剥离 802.1Q 标签，还原为普通帧（无 q）发送给主机 C。</li>
<li>端口 4 是 Trunk 端口（允许 VLAN 10），交换机保留 VLAN 10 的 802.1Q 标签（含 q），将带标签的帧发往上级交换机。</li>
</ul>
</li>
</ol><p>此时 MAC 表状态：</p><ul>
<li>MAC_A，VLAN 10，端口 1</li>
</ul></section><section><h4>步骤二：主机 C 收到后，向主机 A 回复响应帧（单播转发与对端学习）<a href="#步骤二主机-c-收到后向主机-a-回复响应帧单播转发与对端学习"><span>#</span></a></h4><ol>
<li>发送：主机 C 发送普通以太网帧（无 q 标签），源 MAC 为 MAC_C，目的 MAC 为 MAC_A。</li>
<li>接收与打标：数据帧从端口 3 进入，交换机内部为其打上 VLAN 10 标签。</li>
<li>自学习：交换机记录 MAC_C 的位置，MAC 地址表新增记录：
MAC_C，VLAN 10，端口 3。</li>
<li>查找与转发：
交换机在 VLAN 10 中查找目的地址 MAC_A，成功命中第一步学到的记录（端口 1）。
交换机将帧导向端口 1。端口 1 为 Access 端口，交换机剥离 802.1Q 标签，将无 q 的标准以太网帧发给主机 A。
本次转发为精确单播，端口 2 和端口 4 均不会收到此帧。</li>
</ol><p>此时 MAC 表状态：</p><ul>
<li>MAC_A，VLAN 10，端口 1</li>
<li>MAC_C，VLAN 10，端口 3</li>
</ul></section><section><h4>步骤三：上级交换机经由 Trunk 口向主机 B 发送数据帧（带 q 帧的学习）<a href="#步骤三上级交换机经由-trunk-口向主机-b-发送数据帧带-q-帧的学习"><span>#</span></a></h4><p>假设上级设备有一台属于 VLAN 20 的外部服务器 D（MAC 地址为 MAC_D），向主机 B 发送数据：</p><ol>
<li>接收：数据帧通过端口 4（Trunk 口）流入，该帧在物理链路上本身就已经带有 VLAN 20 的 802.1Q 标签（含 q）。</li>
<li>自学习：交换机读取帧头和标签，记录外部主机的位置，MAC 地址表新增记录：
MAC_D，VLAN 20，端口 4。</li>
<li>查找与转发：
交换机查找目的 MAC_B，此时表中还没有 MAC_B 的信息。
交换机在 VLAN 20 内部进行泛洪：
<ul>
<li>端口 1、端口 3 属于 VLAN 10，受到逻辑隔离，绝对不会收到该数据。</li>
<li>端口 2 是 Access 端口且属于 VLAN 20，交换机剥除 802.1Q 标签，将普通帧（无 q）递交给主机 B。</li>
</ul>
</li>
</ol><p>此时 MAC 表状态：</p><ul>
<li>MAC_A，VLAN 10，端口 1</li>
<li>MAC_C，VLAN 10，端口 3</li>
<li>MAC_D，VLAN 20，端口 4</li>
</ul></section><section><h4>步骤四：主机 B 回复服务器 D（跨链路带 q 转发）<a href="#步骤四主机-b-回复服务器-d跨链路带-q-转发"><span>#</span></a></h4><ol>
<li>发送：主机 B 发出响应帧（无 q），源 MAC 为 MAC_B，目的 MAC 为 MAC_D。</li>
<li>接收与打标：帧进入端口 2，被打上 VLAN 20 标签。</li>
<li>自学习：交换机记录 MAC_B 的位置，MAC 地址表补全：
MAC_B，VLAN 20，端口 2。</li>
<li>查找与转发：
交换机查询 VLAN 20 表项，发现目的 MAC_D 对应的出口是端口 4。
端口 4 是 Trunk 口且允许 VLAN 20，因此交换机保留 802.1Q 标签（含 q），把带有 VLAN 20 标记的帧直接通过端口 4 送出。</li>
</ol><p>最终完整的 MAC 表状态：</p><ul>
<li>MAC_A，VLAN 10，端口 1</li>
<li>MAC_C，VLAN 10，端口 3</li>
<li>MAC_D，VLAN 20，端口 4</li>
<li>MAC_B，VLAN 20，端口 2</li>
</ul><p>核心就是先登记后泛洪转发，如果采用了 VLAN 机制，那么在交换机内部需要登记为同一个网，而转发的时候则是发没有 q 的帧，或者如果就是要发往 q 的，直接发。</p></section></section></section>
<section><h2>网络层<a href="#网络层"><span>#</span></a></h2><section><h3>网络层 - 考纲<a href="#网络层---考纲"><span>#</span></a></h3><ul>
<li>网络层的功能
<ul>
<li>异构网络互连</li>
<li>路由与转发</li>
<li>SDN 的基本概念</li>
<li>拥塞控制</li>
</ul>
</li>
<li>路由算法
<ul>
<li>静态路由与动态路由</li>
<li>距离 - 向量算法</li>
<li>链路状态算法</li>
<li>层次路由</li>
</ul>
</li>
<li>IPv4
<ul>
<li>IPv4 分组</li>
<li>IPv4 与 NAT</li>
<li>划分子网与子网掩码</li>
<li>CIDR</li>
<li>路由聚合</li>
<li>ARP</li>
<li>DHCP</li>
<li>ICMP</li>
</ul>
</li>
<li>路由协议
<ul>
<li>自治系统</li>
<li>域内路由与域间路由</li>
<li>RIP</li>
<li>OSPF</li>
<li>BGP</li>
</ul>
</li>
<li>IP 多播
<ul>
<li>多播的概念</li>
<li>IP 多播地址</li>
</ul>
</li>
<li>移动 IP
<ul>
<li>移动 IP 的概念</li>
<li>移动 IP 的通信过程</li>
</ul>
</li>
<li>网络层设备
<ul>
<li>路由器的组成和功能</li>
<li>路由表与分组转发</li>
</ul>
</li>
</ul></section><section><h3>网络层基本功能<a href="#网络层基本功能"><span>#</span></a></h3><section><h4>异构网络互连<a href="#异构网络互连"><span>#</span></a></h4><p>异构网络的意思是把体系结构、通信协议、传输介质、拓扑结构都不同的网络连起来，典型的代表是广域网和局域网互连。</p><p>IP 协议的存在是为了消除这些异构性的。</p></section><section><h4>路由与转发<a href="#路由与转发"><span>#</span></a></h4><ul>
<li>路由选择</li>
<li>分组转发</li>
</ul></section><section><h4>虚电路与数据报<a href="#虚电路与数据报"><span>#</span></a></h4><p>辨析一下：</p><ul>
<li>电路交换</li>
<li>报文交换</li>
<li>分组交换
<ul>
<li>虚电路</li>
<li>数据报</li>
</ul>
</li>
</ul><p>虚电路和数据报都是分组交换的一种。</p><p>虚电路在建立之前需要进行路由选择，并且别的虚电路也可以使用自己的部分结点。</p><p>虚电路有自己的差错控制，可以保证按序到达，提供端到端的交付，有连接可靠的服务。由于存在 VCID，所以不必提供完整地址，首部开销小。</p><p>对故障能力适应差。</p><p>考虑这样一种情况，假设在运行的过程中所有的结点逐渐故障，那么虚电路需要频繁的重新建立和拆除。虚电路的建立和拆除非常消耗资源。并且，路径一开始就是定死的，所以一个结点故障直接瘫痪。</p><p>所以其对故障的适应能力差。</p><p>数据报提供无连接不可靠的服务，只是尽最大努力交付，所以对故障的适应能力强。</p><p>而对于电路交换，其是专门选择一条物理链路专门占有，其数据率高，对故障适应能力差。</p><p>即传输时延极小、实时性强、通信带宽稳定，但是资源利用率差。</p></section><section><h4>软件定义网络<a href="#软件定义网络"><span>#</span></a></h4><p>SDN 即控制平面与数据平面解耦。控制平面负责路由选择，数据平面负责转发。</p><p>北向接口和南向接口，从实际角度理解，也就是北向南，给上层应用提供标准化 API，南向北，通过 OpenFlow 等协议统一控制。</p><p>东西 向接口，控制集群内部通信。</p><p>SDN 优势：集中控制与分布转发；灵活可编程；成本降低</p><p>SDN 挑战：安全风险，一旦崩溃全网络崩溃；性能瓶颈，集中控制着网络规模扩大，控制器成为性能瓶颈</p></section><section><h4>拥塞控制<a href="#拥塞控制"><span>#</span></a></h4><p>在 OSI 模型对应的网络层，需要实现拥塞控制。</p><p>拥塞控制即负载增大单吞吐量增长甚微，进入轻度拥塞状态；负载增大吞吐量下降，进入拥塞状态。</p><p>主要有两种方法：</p><ul>
<li>开环控制：系统设计的时候预先考虑拥塞的情况，静态策略防止拥塞发生</li>
<li>闭环控制：动态检测网络，基于反馈机制</li>
</ul></section></section><section><h3>IPV4<a href="#ipv4"><span>#</span></a></h3><section><h4>IPv4 分组格式<a href="#ipv4-分组格式"><span>#</span></a></h4><p>分组格式考试会给，不过还是要理解每个字段的含义。</p><ul>
<li>版本：4 位，表示 IP 协议版本，比如 IPv4 是 4。</li>
<li>首部长度：4 位，4 字节为单位。如果首部没有可选字段，那么首部最短为 20 字节，首部长度字段也就是 0101，即 5，首部可选字段最长为 40，所以总共最长是 60 字节</li>
<li>总长度：16 位，1 字节为单位。</li>
<li>标识：占 16 位，源主机设置的递增 计数器，以便正确让目的主机重组为原数据报</li>
<li>标志：3 位，低 2 位有意义，MF = 1 表示后面还有分片，DF = 1 表示不能分片</li>
<li>片偏移：13 位，以 8 字节为单位，所以每个分片的数据部分必须是 8 的整数倍
<ul>
<li>例如链路层 MTU 为 800B，减去 20B 首部后每个分片的数据部分最多 780B，但 780 不能被 8 整除，所以第一个分片取 776B，剩下的 224B 作为第二个分片</li>
<li>第二个分片的片偏移是 <span><span>776/8=97776/8=97</span><span><span><span></span><span>776/8</span><span></span><span>=</span><span></span></span><span><span></span><span>97</span></span></span></span>，第一个分片的 MF 置 1，最后一个分片的 MF 置 0</li>
</ul>
</li>
<li>生存时间 TTL：占 8 位</li>
<li>协议：占 8 位，表示应该交付给上层哪个协议，例如 TCP / UDP。TCP 是 6，UDP 是 17</li>
<li>首部校验和：占 16 位，只校验首部，需要注意，采用反码求和，反码求和需要回卷</li>
<li>源地址</li>
<li>目的地址</li>
</ul></section><section><h4>IPv4 的地址（IP 地址）<a href="#ipv4-的地址ip-地址"><span>#</span></a></h4><ul>
<li>
<p>分类的 IP 地址：A 类地址，B 类地址，C 类地址，D 类地址，E 类地址，其中 D 类地址是多播地址，E 类地址保留使用</p>
</li>
<li>
<p>主机号全为 0，表示网络本地地址，即网络地址</p>
</li>
<li>
<p>主机号全为 1，表示广播地址</p>
</li>
<li>
<p>127.x.x.x，表示本地环回测试</p>
</li>
<li>
<p>32 位全为 0，表示本网络上的本主机</p>
</li>
<li>
<p>32 位全为 1，表示受限广播地址</p>
</li>
<li>
<p>网络号为 0.x.x.x，表示特殊用途</p>
</li>
<li>
<p>划分子网：从主机号里借若干位当子网号。原本主机号是 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 位，借 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 位就能划出 <span><span>2n2^n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span> 个子网，每个子网可用主机数是 <span><span>2m−n−22^{m-n}-2</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>m</span><span>−</span><span>n</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>2</span></span></span></span>，减 2 是因为主机号全 0 和全 1 不能用。</p>
</li>
<li>
<p>子网掩码：网络号和子网号对应的位置全 1，主机号对应的位置全 0。例如 255.255.255.0 表示前 24 位是网络部分，后 8 位是主机部分。</p>
<ul>
<li>判断两个地址是否同子网，就是把各自的 IP 和子网掩码按位与，比较结果是否相同。</li>
<li>变长子网掩码可以按需分配，前缀长的子网放主机少但需求多的网段，避免浪费。</li>
</ul>
</li>
<li>
<p>默认网关：即默认的网关地址，例如 192.168.1.1，表示默认的网关地址。</p>
</li>
<li>
<p>无分类编址 CIDR：即无分类的域间路由，不区分网络号和主机号。例如 211.211.211.211/23，表示网络号为 23 位，主机号为 9 位。</p>
</li>
<li>
<p>路由聚合：把多个连续的小前缀合并成一个更大的前缀。例如 211.211.212.0/24 和 211.211.213.0/24 可以合并成 211.211.212.0/23；211.211.211.0/24 与它们不连续，只能单独保留。</p>
<ul>
<li>想一次覆盖 211、212、213 三个网段，只能用 211.211.210.0/22，但这样会把 210、214、215 也一起宣告出去，实际配置里通常不这么做。</li>
<li>聚合的前提是起始地址对齐到同一个边界，否则合并不了；最长前缀匹配保证更具体的路由优先。</li>
</ul>
</li>
<li>
<p>辨析 CIDR 与划分子网：简单来讲，对于一个网络 211.211.211.211/23，其表达能力和网络是 211.211.211.211，子网掩码是 255.255.254.0 是一致的。所以在路由聚合的时候，需要注意网络的表达</p>
</li>
<li>
<p>划分子网</p>
<ul>
<li>定长子网掩码划分</li>
<li>变长子网掩码划分</li>
</ul>
</li>
</ul></section><section><h4>NAT 技术<a href="#nat-技术"><span>#</span></a></h4><p>在做题的时候，一定要注意 NAT 技术。</p><ul>
<li>10.0.0.0 - 10.255.255.255</li>
<li>172.16.0.0 - 172.31.255.255</li>
<li>192.168.0.0 - 192.168.255.255</li>
</ul><p>这三块地址是专门划分给内网使用的，不能直接用于公网。</p></section><section><h4>网络层分组<a href="#网络层分组"><span>#</span></a></h4><p>注意默认网关以及网络的设置，例如路由器里可以设置：</p><p>其他：0.0.0.0/0，或者 0.0.0.0，子网掩码为 0.0.0.0</p><p>默认路由写成 0.0.0.0/0，能匹配所有目的地址，但它前缀最短，所以只有其他路由都匹配不上时才会走它。</p><p>需要注意，默认路由的表项越少越好，因为它只在本地路由表里“托底”，真正的转发还是靠更具体的前缀。</p></section><section><h4>ARP 地址解析协议<a href="#arp-地址解析协议"><span>#</span></a></h4><p>工作在网络层，具体见后面的场景分析。</p></section><section><h4>DHCP 协议<a href="#dhcp-协议"><span>#</span></a></h4><ul>
<li>协议基础属性</li>
</ul><ol>
<li>协议定位：应用层协议，采用 C/S（客户/服务器）架构。</li>
<li>底层传输协议：基于 UDP 协议。
<ul>
<li>端口号：DHCP 服务器监听端口为 <code>UDP 67</code>，DHCP 客户监听端口为 <code>UDP 68</code>。</li>
</ul>
</li>
<li>为什么选择 UDP 而非 TCP？
<ul>
<li>客户机在初始阶段没有自己的 IP 地址，也不知道服务器的 IP 地址，无法进行 TCP 的“三次握手”来建立面向连接的信道；</li>
<li>UDP 无须建立连接，并且天然支持广播，完全契合初始无 IP 状态下的通信需求。</li>
</ul>
</li>
</ol><ul>
<li>初次获取 IP 地址交互全过程（四步握手）</li>
</ul><blockquote><p>发现（Discover） <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 提供（Offer） <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 请求（Request） <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 确认（ACK）</p><p>这四步的 IP 层通信全部采用广播方式。</p></blockquote><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>  </span></span><span>DHCP 客户                                 DHCP 服务器群</span></div></div><div><div><div>2</div></div><div><span><span>     </span></span><span>|                                             |</span></div></div><div><div><div>3</div></div><div><span><span>     </span></span><span>| ----- 1. DHCP Discover (广播寻找) --------&gt; |</span></div></div><div><div><div>4</div></div><div><span><span>     </span></span><span>|                                             |</span></div></div><div><div><div>5</div></div><div><span><span>     </span></span><span>| &lt;---- 2. DHCP Offer (广播提供配置) -------- |</span></div></div><div><div><div>6</div></div><div><span><span>     </span></span><span>|                                             |</span></div></div><div><div><div>7</div></div><div><span><span>     </span></span><span>| ----- 3. DHCP Request (广播选定并通告) ---&gt; |</span></div></div><div><div><div>8</div></div><div><span><span>     </span></span><span>|                                             |</span></div></div><div><div><div>9</div></div><div><span><span>     </span></span><span>| &lt;---- 4. DHCP ACK (广播确认生效) ---------- |</span></div></div><div><div><div>10</div></div><div><span><span>     </span></span><span>v                                             v</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>
<p>DHCP 发现报文（DHCP Discover）</p>
<ul>
<li>方向：客户 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 网络中所有主机（广播）</li>
<li>源 IP 地址：<code>0.0.0.0</code>（客户尚未获得 IP）</li>
<li>目的 IP 地址：<code>255.255.255.255</code>（受限广播地址）</li>
<li>核心目的：寻找局域网内所有可用的 DHCP 服务器。</li>
</ul>
</li>
<li>
<p>DHCP 提供报文（DHCP Offer）</p>
<ul>
<li>方向：DHCP 服务器 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 客户（广播）</li>
<li>源 IP 地址：<code>DHCP 服务器自身 IP</code></li>
<li>目的 IP 地址：<code>255.255.255.255</code></li>
<li>携带信息：拟分配给客户的 IP 地址、子网掩码、默认网关、DNS 服务器 IP、租用期（Lease Time）等。</li>
<li>注意点：凡收到 Discover 报文的服务器均可响应，因此客户机可能会收到多份 Offer 报文。</li>
</ul>
</li>
<li>
<p>DHCP 请求报文（DHCP Request）</p>
<ul>
<li>方向：客户 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 网络中所有主机（广播）</li>
<li>源 IP 地址：<code>0.0.0.0</code>（此时尚未正式得到最终确认授权，仍不可用）</li>
<li>目的 IP 地址：<code>255.255.255.255</code></li>
<li>关键考点（为什么依然广播？）：
<ul>
<li>客户只能选择其中一个 Offer（通常选择最先到达的）。</li>
<li>采用广播的目的是通知所有服务器：不仅正式向“被选中的服务器”请求配置，更重要的是公开通告其他未被选中的服务器，以便它们及时释放为该客户预留的 IP 地址及资源。</li>
</ul>
</li>
</ul>
</li>
<li>
<p>DHCP 确认报文（DHCP ACK）</p>
<ul>
<li>方向：被选中的 DHCP 服务器 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 客户（广播）</li>
<li>源 IP 地址：<code>DHCP 服务器自身 IP</code></li>
<li>目的 IP 地址：<code>255.255.255.255</code></li>
<li>结果：确认绑定关系，将 IP 地址正式分配给客户。客户机收到 ACK 后，网络参数正式配置生效。</li>
<li>注：若服务器发现拟分配的 IP 已被占用或无效，则发回 DHCP NAK（否认报文），客户需重新从第一步开始申请。</li>
</ul>
</li>
<li>
<p>租用期管理机制（Lease Lifecycle）</p>
</li>
</ul><p>DHCP 分配的 IP 均为临时借用，具有时间限制（租用期，由服务器决定）。</p>

<table><thead><tr><th>触发节点</th><th>动作类型</th><th>通信方式</th><th>源 IP</th><th>目的 IP</th><th>处理结果与后续操作</th></tr></thead><tbody><tr><td>租期达到 50%</td><td>发送 DHCP Request 申请续租</td><td>单播</td><td>当前已分配的 IP</td><td>原分配服务器的 IP</td><td>① 若同意：服务器返回 单播 DHCP ACK，租期重置刷新。② 若拒绝：服务器返回 单播 DHCP NAK，客户立刻停止使用该 IP，退回 Discover 重新申请。</td></tr><tr><td>租期达到 87.5%</td><td>发送 DHCP Request 再次续租</td><td>广播</td><td>当前已分配的 IP</td><td><code>255.255.255.255</code></td><td>因原服务器无响应，改用广播向全网任何 DHCP 服务器求助。① 若收到 ACK：继续使用并更新租期。② 若租期到期（100%）仍无应答：客户强制释放该 IP，从头重新申请。</td></tr><tr><td>随时/提前退出</td><td>发送 DHCP Release 释放租期</td><td>单播</td><td>当前已分配的 IP</td><td>原分配服务器的 IP</td><td>客户机主动下线或释放网络连接，服务器收回该 IP 地址供其他主机使用。</td></tr></tbody></table><ul>
<li>关键陷阱</li>
</ul><ol>
<li>第 1 步与第 3 步的源 IP 为什么都是 <code>0.0.0.0</code>？
<ul>
<li>答：第 1 步完全没有 IP；第 3 步虽然选定了 IP，但该 IP 尚未经过服务器最终 ACK 确认授权，因此仍不能作为有效源 IP 使用。</li>
</ul>
</li>
<li>为什么 50% 续租是单播，而 87.5% 续租是广播？
<ul>
<li>答：50% 时只是常规续约，定向找原服务器即可（单播精确省资源）；87.5% 时原服务器大概率已宕机或脱网，必须广播向局域网内其他可能存在的 DHCP 服务器寻求续租拯救。</li>
</ul>
</li>
<li>租期更新失败的下场？
<ul>
<li>答：无论是在 50% 收到 NAK，还是在 100% 耗尽未果，客户机必须立刻停止使用当前 IP！</li>
</ul>
</li>
</ol><p>DHCP 具体流程分析见应用层的最终模型。</p></section><section><h4>ICMP<a href="#icmp"><span>#</span></a></h4><ul>
<li>
<p>ICMP 差错报文</p>
<ul>
<li>终点不可达</li>
<li>时间超过</li>
<li>参数问题</li>
<li>改变路由（重定向）</li>
<li>源点抑制：拥塞而丢弃，新的已经取消</li>
</ul>
</li>
<li>
<p>防止无限循环或无意义反馈，对以下不汇报</p>
<ul>
<li>ICMP 差错报文本身</li>
<li>第一个数据分片后的所有分片</li>
<li>目的地址为多播 / 广播</li>
<li>特殊地址（127.0.0.0，0.0.0.0）</li>
</ul>
</li>
<li>
<p>ICMP 询问</p>
<ul>
<li>回送请求和回答报文：是否可达</li>
<li>时间戳请求和回答报文：测 TTL</li>
</ul>
</li>
<li>
<p>ICMP 应用</p>
<ul>
<li>分组探测 ping</li>
<li>路由跟踪（逐渐增大 TTL）</li>
</ul>
</li>
</ul><p>需要注意，ICMP 报文不对校验错误的报文发送差错报文，而是等待计时器超时自动重发。</p><p>因为 IP 协议是无连接不可靠的。</p></section></section><section><h3>IPV6<a href="#ipv6"><span>#</span></a></h3><p>和 IPv4 不同的东西</p><ul>
<li>
<p>地址是 <span><span>21282^{128}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>128</span></span></span></span></span></span></span></span></span></span></span></span> 个</p>
</li>
<li>
<p>只有源主机才能分片，路由器碰到过大的分片直接丢弃</p>
</li>
<li>
<p>没有校验和字段</p>
</li>
<li>
<p>基本首部是 40B</p>
</li>
<li>
<p>跳数限制最大为 255</p>
</li>
<li>
<p>IPv6 支持单播、多播、任播</p>
</li>
<li>
<p>IPv6 缩写</p>
<ul>
<li>省略前导 0</li>
<li>仅可以出现一个 ::</li>
</ul>
</li>
<li>
<p>IPv6 只有一个环回地址，是 ::1/128。</p>
</li>
<li>
<p>IPv4 向 IPv6 过度</p>
<ul>
<li>双协议</li>
<li>隧道技术</li>
</ul>
</li>
</ul></section><section><h3>路由算法<a href="#路由算法"><span>#</span></a></h3><ul>
<li>距离向量算法</li>
<li>链路状态算法</li>
<li>路径向量算法</li>
</ul><p>距离向量算法基于 Bellman-Ford 方程，每个路由器只和邻居交换自己的整张路由表，更新规则是</p><span><span><span>D(x,y)=min⁡v{c(x,v)+D(v,y)}D(x,y)=\min_v\bigl\{c(x,v)+D(v,y)\bigr\}</span><span><span><span></span><span>D</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span>v</span></span></span><span><span></span><span><span>min</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span><span>{</span></span><span>c</span><span>(</span><span>x</span><span>,</span><span></span><span>v</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>D</span><span>(</span><span>v</span><span>,</span><span></span><span>y</span><span>)</span><span><span>}</span></span></span></span></span></span><p>其中 <span><span>c(x,v)c(x,v)</span><span><span><span></span><span>c</span><span>(</span><span>x</span><span>,</span><span></span><span>v</span><span>)</span></span></span></span> 是 x 到邻居 v 的链路代价，<span><span>D(v,y)D(v,y)</span><span><span><span></span><span>D</span><span>(</span><span>v</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span> 是邻居 v 到目的地 y 的代价。RIP 就是这种算法，收敛慢，可能无穷计数。</p><p>链路状态算法基于 Dijkstra，每个路由器把自己周围的链路状态泛洪给全网，各自算最短路径树。收敛快、不会环路，代价是存储和计算开销大。OSPF 就是这种算法。</p><p>路径向量算法在距离向量基础上再记录完整的 AS 路径，BGP 用它，天然能检测环路。</p><p>需要注意，距离向量是“听邻居说”，链路状态是“自己看全局”，前者简单但慢收敛，后者复杂但稳定。</p><section><h4>静态路由<a href="#静态路由"><span>#</span></a></h4><p>由网络管理员配置，例如可以配置 NAT 路由器的端口映射，比如把外网的 ip&lt;80&gt; 端口映射到内网的 ip&lt;80&gt; 端口。</p></section><section><h4>层次路由<a href="#层次路由"><span>#</span></a></h4><p>层次路由是把网络按区域划分，区域内部用域内路由协议，区域之间用域间路由协议。</p><p>好处是路由表规模小、收敛快、区域内的拓扑变化不会扩散到全网；代价是最短路径可能不是全局最优。</p><p>需要注意，自治系统（AS）就是为了实现层次路由而划分的，域内追求最优路径，域间还要考虑策略、计费和政治因素，所以 BGP 选的不一定是最短路径。</p></section><section><h4>内部网关协议 IGP - RIP<a href="#内部网关协议-igp---rip"><span>#</span></a></h4><p>跑在 UDP 上的，具体见下面的模型。</p></section><section><h4>内部网关协议 IGP - OSPF<a href="#内部网关协议-igp---ospf"><span>#</span></a></h4><p>划分出来的东西叫做区域，其边界路由器叫做区域边界路由器。</p><p>采用迪杰斯特拉算法，并且全局状态稳定了一致。</p><ul>
<li>OSPF 报文
<ul>
<li>问候（Hello）报文：发现并维护邻居关系</li>
<li>数据库描述分组（DD 分组）</li>
<li>链路状态请求（LSH）</li>
<li>链路状态更新（LSA）</li>
<li>链路状态确认（LSA）</li>
</ul>
</li>
</ul></section><section><h4>外部网关协议 EGP - BGP<a href="#外部网关协议-egp---bgp"><span>#</span></a></h4><p>iBGP：核心路由器，运行 iBGP 协议，时刻和其他核心路由器和边界路由器练习以确保得到路径。</p><p>eBGP：边界路由器。</p><p>划分出来的东西叫做自治系统。</p><ul>
<li>
<p>BGP 路由选择优先级</p>
<ul>
<li>本地偏好值（网络管理员配置）</li>
<li>AS 跳数最短</li>
<li>热土豆路由算法（这个指的是过内部网关协议的时候，走最短的那一条）</li>
<li>选择 BGP 标识最小的</li>
</ul>
</li>
<li>
<p>BGP 报文</p>
<ul>
<li>打开（open）报文</li>
<li>更新（Update）报文</li>
<li>保活报文（Keepalive）报文</li>
<li>同质（Notification）报文</li>
</ul>
</li>
</ul><p>BGP 协议跑在 TCP 上。</p></section></section><section><h3>IP 多播<a href="#ip-多播"><span>#</span></a></h3><p>将 IP 地址的后 23 位，映射到 MAC 地址的后 23 位。</p><p>多播范围是 11100000.0.0.0-11101111.255.255.255，即 224.0.0.0-239.255.255.255。</p><p>采用多播转发树来避免环路。</p><p>多播组的管理靠 IGMP：主机通过 IGMP 报文告诉本地路由器自己要加入或退出某个多播组，路由器据此决定还要不要向这个网段转发多播数据。</p><p>需要注意，IGMP 只在主机和直连路由器之间工作，路由器之间的多播转发靠多播路由协议，这部分 408 不深究。</p><p>还要注意，多播 MAC 只映射后 23 位，所以一个 MAC 地址可能对应 32 个多播 IP，接收方还要在网络层再过滤一次。</p></section><section><h3>移动 IP<a href="#移动-ip"><span>#</span></a></h3><p>移动 IP 的全过程，就像你（移动节点）带号离家出走去外地旅游。</p><p>你到了外地后，先找当地的居委会（外地代理 FA）办个临时的暂住证（转交地址 CoA），并立刻打电话回老家，把这个暂住证号码告诉老家的村长（归属代理 HA）。</p><p>这样，以后别人再往你老家寄信（真实目的地仍是你的永久 IP），老家村长就会直接把信截胡，然后用一个更大的新信封把原信包起来（IP 隧道封装），写上你的暂住证号码寄到外地。</p><p>外地居委会收到大信封后，拆开扔掉，把里面的原信安全地交到你手里，从而保证你的 TCP 连接在漫游时永远不断线！</p></section><section><h3>网络层设备<a href="#网络层设备"><span>#</span></a></h3><section><h4>路由器<a href="#路由器"><span>#</span></a></h4><p>路由器工作在网络层，转发的是 IP 数据报，能连接不同的网络，也能在 IPv4 和 IPv6 之间做转换。</p><p>结构分四部分：</p><ul>
<li>输入端口：物理层接收、链路层解封装、查转发表决定送到哪个输出端口；</li>
<li>交换结构：把分组从输入端口送到输出端口，常见实现是经内存交换、经总线交换、经交换网络（如 Crossbar）交换；</li>
<li>输出端口：缓存排队、重新封装成帧发出去；</li>
<li>路由处理器：运行路由协议，维护路由表，计算并下发转发表。</li>
</ul><p>需要注意，输入端口排队过多会丢包，输出端口排队过多也会丢包，这就是路由器拥塞的来源；交换结构的速率决定了路由器的整体吞吐能力。</p></section><section><h4>路由表与分组转发<a href="#路由表与分组转发"><span>#</span></a></h4><p>转发表由路由表计算得出。</p><p>路由表是路由协议算出来的，包含目的网络、下一跳、度量等；转发表是从路由表提炼的，只保留“查什么、从哪个口出去”，并且按最长前缀匹配来查。</p><p>需要注意，转发表里通常不存完整的 IP 地址，只存前缀，查表时把目的地址前缀逐位比较，取匹配最长的那一条，这就是默认路由 0.0.0.0/0 永远排在最后的原因。</p></section></section><section><h3>RIP 协议全流程<a href="#rip-协议全流程"><span>#</span></a></h3><p>构建一条由三台路由器、四个子网组成的经典拓扑：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[子网 Net1] ----- (接口 E0) [路由器 R1] (接口 E1) ----- [子网 Net2] ----- (接口 E0) [路由器 R2] (接口 E1) ----- [子网 Net3] ----- (接口 E0) [路由器 R3] (接口 E1) ----- [子网 Net4]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>网络参数划分：
<ul>
<li>Net1：<code>10.1.0.0/24</code></li>
<li>Net2：<code>10.2.0.0/24</code>（连接 R1 与 R2）</li>
<li>Net3：<code>10.3.0.0/24</code>（连接 R2 与 R3）</li>
<li>Net4：<code>10.4.0.0/24</code></li>
</ul>
</li>
<li>协议规格说明：
<ul>
<li>运行 RIPv2（底层基于 <code>UDP 520</code> 端口，多播目的地址为 <code>224.0.0.9</code>；若为 RIPv1 则为广播 <code>255.255.255.255</code>）。</li>
<li>距离度量（Metric）：跳数（Hop Count）。直连网络距离为 1（或在某些教材记为 0，王道/主流考研教材统一规定：直连网络跳数为 1，距离为 16 表示不可达）。以下均严格采用“直连跳数为 1，每过一跳加 1”的标准考研记法。</li>
</ul>
</li>
</ul><section><h4>0 时刻启动<a href="#0-时刻启动"><span>#</span></a></h4><ol>
<li>0 时刻（刚开机/协议刚启动）：主动索要（RIP Request）
<ul>
<li>路由器刚启动时，如果在 30 秒周期内傻等，网络收敛就会很慢。</li>
<li>因此，路由器刚初始化完毕，会立刻向所有使能接口多播发送一个 RIP 请求报文（Request Message），询问：“邻居们，把你们手头的路由表发我一份！”</li>
<li>邻居收到后，立即针对该请求回送一个 RIP 响应报文（Response Message）。这样可以在几毫秒内迅速拿到邻居手里的初始路由。</li>
</ul>
</li>
<li>常规运行期：周期性通告（RIP Response - 周期 30s）
<ul>
<li>此后，路由器启动定时器，每隔 30 秒主动向外多播一次完整的路由表（携带自己当前所知的所有路由条目）。</li>
<li>-注：为防止同一局域网内所有路由器同时发包导致拥塞，这个 30s 通常会加上一个随机的小抖动（比如 25s ~ 35s）。-</li>
</ul>
</li>
<li>三大定时器：
<ul>
<li>更新定时器（30s）：周期性发送全部路由。</li>
<li>超时/失效定时器（180s）：若 180s 没收到某个邻居关于某条路由的更新，将该路由的度量值直接置为 16（不可达）。</li>
<li>垃圾收集定时器（120s）：置为 16 后再等 120s，若仍无更新，彻底从路由表中抹除该条目。</li>
</ul>
</li>
</ol></section><section><h4>时刻 <span><span>T0T_0</span><span><span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>：初始上电状态<a href="#时刻-t0t_0t0初始上电状态"><span>#</span></a></h4><p>各路由器仅知道与自己硬件端口物理直连的网络，跳数记为 1，下一跳为“直连（Direct）”：</p><ul>
<li>R1 初始路由表：
<ul>
<li>Net1 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
<li>Net2 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
</ul>
</li>
<li>R2 初始路由表：
<ul>
<li>Net2 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
<li>Net3 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
</ul>
</li>
<li>R3 初始路由表：
<ul>
<li>Net3 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
<li>Net4 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
</ul>
</li>
</ul></section><section><h4>第 1 次更新周期（<span><span>T≈0∼30sT \approx 0 \sim 30\text{s}</span><span><span><span></span><span>T</span><span></span><span>≈</span><span></span></span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span>30</span><span><span>s</span></span></span></span></span>）：相邻信息互换<a href="#第-1-次更新周期t030st-approx-0-sim-30textst030s相邻信息互换"><span>#</span></a></h4><p>所有路由器向邻居发送自身的路由向量。</p></section><section><h4>1. R1 与 R2 之间互换<a href="#1-r1-与-r2-之间互换"><span>#</span></a></h4><ul>
<li>R2 将自己的表发给 R1：<code>{Net2: 1, Net3: 1}</code></li>
<li>R1 收到后，先将所有条目距离全部加 1（变为 <code>{Net2: 2, Net3: 2}</code>，下一跳设为 R2）：
<ul>
<li>对比 Net2：原先直连距离为 1，新送来的距离为 2，不更新。</li>
<li>对比 Net3：原表中没有 Net3，学习新增条目！</li>
<li>R1 路由表更新为：
<ul>
<li>Net1 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
<li>Net2 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
<li>Net3 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：2, 下一跳：R2（新学到！）</li>
</ul>
</li>
</ul>
</li>
<li>同理，R2 收到 R1 的表 <code>{Net1: 1, Net2: 1}</code>，加 1 后变为 <code>{Net1: 2, Net2: 2}</code>：
<ul>
<li>R2 学习到 Net1。</li>
</ul>
</li>
</ul></section><section><h4>2. R2 与 R3 之间互换<a href="#2-r2-与-r3-之间互换"><span>#</span></a></h4><ul>
<li>R2 收到 R3 的表，学习到 Net4（距离：2, 下一跳：R3）。</li>
<li>R3 收到 R2 的表，学习到 Net2（距离：2, 下一跳：R2）。</li>
</ul></section><section><h4>第 1 次更新结束后各表状态<a href="#第-1-次更新结束后各表状态"><span>#</span></a></h4><ul>
<li>R1：知道 Net1(1), Net2(1), Net3(2)；仍不知道 Net4！</li>
<li>R2：知道 Net1(2), Net2(1), Net3(1), Net4(2)；（R2 率先收敛！）</li>
<li>R3：知道 Net2(2), Net3(1), Net4(1)；仍不知道 Net1！</li>
</ul></section><section><h4>第 2 次更新周期（<span><span>T≈60sT \approx 60\text{s}</span><span><span><span></span><span>T</span><span></span><span>≈</span><span></span></span><span><span></span><span>60</span><span><span>s</span></span></span></span></span>）：跨跳信息扩散与全网收敛<a href="#第-2-次更新周期t60st-approx-60textst60s跨跳信息扩散与全网收敛"><span>#</span></a></h4><p>30 秒后，更新定时器再次触发。此时 R2 已经拥有了关于 Net4 和 Net1 的信息，并在本次广播中通告出去。</p></section><section><h4>1. R2 发送路由表给 R1<a href="#1-r2-发送路由表给-r1"><span>#</span></a></h4><ul>
<li>R2 发送的向量中包含条目 <code>{Net4: 2}</code>。</li>
<li>R1 收到后加 1 变为 <code>{Net4: 3, 下一跳: R2}</code>：
<ul>
<li>R1 查表发现自己此前完全不知道 Net4，立刻新增记录！</li>
<li>R1 最终路由表：
<ul>
<li>Net1 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
<li>Net2 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
<li>Net3 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：2, 下一跳：R2</li>
<li>Net4 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：3, 下一跳：R2</li>
</ul>
</li>
</ul>
</li>
</ul></section><section><h4>2. R2 发送路由表给 R3<a href="#2-r2-发送路由表给-r3"><span>#</span></a></h4><ul>
<li>R2 发送的向量中包含条目 <code>{Net1: 2}</code>。</li>
<li>R3 收到后加 1 变为 <code>{Net1: 3, 下一跳: R2}</code>：
<ul>
<li>R3 查表新增记录 Net1。</li>
<li>R3 最终路由表：
<ul>
<li>Net1 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：3, 下一跳：R2</li>
<li>Net2 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：2, 下一跳：R2</li>
<li>Net3 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
<li>Net4 <span><span>→\to</span><span><span><span></span><span>→</span></span></span></span> 距离：1, 下一跳：Direct</li>
</ul>
</li>
</ul>
</li>
</ul></section><section><h4>RIP 模型结束<a href="#rip-模型结束"><span>#</span></a></h4><p>至此，网络中所有路由器都获知了全网所有 4 个子网的完整到达路径，网络达到收敛（Convergence）状态！此后若拓扑无变化，每 30s 的更新报文仅用于重置超时定时器以维持活跃。</p></section><section><h4>稳态后的异常处理：故障与“坏消息传得慢”<a href="#稳态后的异常处理故障与坏消息传得慢"><span>#</span></a></h4><p>如果此时 Net1 发生故障物理断开：</p><ol>
<li>R1 首先察觉，将 Net1 的度量置为 16（不可达）。</li>
<li>致命缺陷（慢收敛与路由环路）：
<ul>
<li>如果此时恰好 R2 的 30s 定时器先到了，R2 把自己旧的路由表（Net1: 2, 下一跳：R1）广播给 R1。</li>
<li>R1 以为 R2 还有一条通往 Net1 的路，加 1 误算为 <code>Net1: 3, 下一跳: R2</code>！</li>
<li>接着 R1 又广播给 R2，R2 更新为 <code>Net1: 4, 下一跳: R1</code>……</li>
<li>如此循环往复，两台路由器互相踢皮球，跳数不断攀升，直到数字累加到 16 判定彻底不可达，这就是著名的“无穷大计数问题（Count to Infinity）”！</li>
</ul>
</li>
<li>解决方案（三大经典防环机制）：
<ul>
<li>水平分割（Split Horizon）：“从哪个接口学来的路由，绝不再从该接口发回去”（R2 从 R1 学到 Net1，发给 R1 时绝不包含 Net1）。</li>
<li>毒性逆转（Poison Reverse）：“从该接口学到的路由，发回去时把度量直接设为 16（标为毒药）”。</li>
<li>触发更新（Triggered Updates）：一旦网络拓扑发生改变，不等 30s 定时器到期，立刻向周围全网广播坏消息！</li>
</ul>
</li>
</ol></section><section><h4>关于 RIP 其他注意的点<a href="#关于-rip-其他注意的点"><span>#</span></a></h4><p>使用 RIP 的时候，若收到的更新报文中的下一跳地址，与本地路由表中已有条目的下一跳地址相同，则无论距离增大还是减小，都必须更新。</p><p><span><span>(目的网络 Net,下一跳路由器 Next-Hop,距离/跳数 Metric)(\text{目的网络 Net}, \quad \text{下一跳路由器 Next-Hop}, \quad \text{距离/跳数 Metric})</span><span><span><span></span><span>(</span><span><span>目的网络</span><span> Net</span></span><span>,</span><span></span><span></span><span><span>下一跳路由器</span><span> Next-Hop</span></span><span>,</span><span></span><span></span><span><span>距离</span><span>/</span><span>跳数</span><span> Metric</span></span><span>)</span></span></span></span></p><p>这是 RIP 记录的东西，假设当前路由器 A 有 2 条记录：</p><p>D，B，2；E，C，3</p><p>路由器 B 传过来两条他的记录：</p><p>D，4；E，1</p><p>路由器 A 先标准 +1，即</p><p>D，5；E，2</p><p>那么，对比，可以发现 A 的两条都应该更新，即 D，B，5；E，B，2。</p></section></section><section><h3>ARP 协议解析全流程<a href="#arp-协议解析全流程"><span>#</span></a></h3><p>同一子网网段：<code>192.168.1.0/24</code></p><ul>
<li>主机 H1：IP = <code>192.168.1.1</code>，MAC = <code>A1-A1-A1-A1-A1-A1</code>（简记为 <code>A1</code>）</li>
<li>主机 H2：IP = <code>192.168.1.2</code>，MAC = <code>A2-A2-A2-A2-A2-A2</code>（简记为 <code>A2</code>）</li>
<li>主机 H3：IP = <code>192.168.1.3</code>，MAC = <code>A3-A3-A3-A3-A3-A3</code>（简记为 <code>A3</code>）</li>
<li>主机 H4：IP = <code>192.168.1.4</code>，MAC = <code>A4-A4-A4-A4-A4-A4</code>（简记为 <code>A4</code>）</li>
<li>广播 MAC： <code>FF-FF-FF-FF-FF-FF</code>（简记为 <code>FF</code>）</li>
</ul><p>在以太网传输 ARP 报文或 IP 数据报时，区分四个地址：</p><ol>
<li>网络层（IP 协议字段）：
<ul>
<li>源 IP 地址：发送发起方的 IP。</li>
<li>目的 IP 地址：最终接收方的 IP。</li>
</ul>
</li>
<li>数据链路层（以太网帧首部字段）：
<ul>
<li>源 MAC 地址：当前跳发送网卡的物理地址。</li>
<li>目的 MAC 地址：当前跳接收网卡的物理地址（若未知或为广播，则为 <code>FF</code>）。</li>
</ul>
</li>
</ol><p>ARP 报文自身的特殊载荷：
ARP 报文属于网络层（或介于两者之间），封装在以太网帧中。ARP 请求报文内部包含字段：</p><ul>
<li>发送端 IP、发送端 MAC；</li>
<li>目标端 IP、目标端 MAC（ARP 请求时由于不知道对方 MAC，此字段通常填全 0 即 <code>00-00-00-00-00-00</code>，而外层以太网帧的目的 MAC 填全 F 即 <code>FF-FF-FF-FF-FF-FF</code> 广播！）。</li>
</ul><section><h4>阶段一：H1 向 H4 发送数据<a href="#阶段一h1-向-h4-发送数据"><span>#</span></a></h4></section><section><h4>步骤 1：H1 查询本地缓存并发送 ARP 请求广播<a href="#步骤-1h1-查询本地缓存并发送-arp-请求广播"><span>#</span></a></h4><ul>
<li>状态：H1 的 ARP 表为空，不知道 H4 的 MAC，将待发送的 IP 数据报挂起。</li>
<li>动作：H1 广播发送 ARP 请求。</li>
<li>以太网帧与报文结构辨析：
<ul>
<li>以太网帧首部（数据链路层）：
<ul>
<li>源 MAC = <code>A1</code></li>
<li>目的 MAC = <code>FF</code>（以太网广播，局域网全员接收）</li>
</ul>
</li>
<li>ARP 请求载荷内部：
<ul>
<li>发送端 IP = <code>192.168.1.1</code>，发送端 MAC = <code>A1</code></li>
<li>目标端 IP = <code>192.168.1.4</code>，目标端 MAC = <code>00</code>（未知，占位填 0）</li>
</ul>
</li>
</ul>
</li>
</ul></section><section><h4>步骤 2：全网接收与 ARP 缓存学习<a href="#步骤-2全网接收与-arp-缓存学习"><span>#</span></a></h4><p>局域网内所有主机（H2、H3、H4）的网卡均接收到该广播帧，解封交给 ARP 模块处理：</p><ul>
<li>主机 H2：
<ul>
<li>发现目标 IP（<code>192.168.1.4</code>）不是自己，不予以回复；</li>
<li>但是！按照题目要求的机制，H2 解析出发送方的映射，顺手将 <code>&lt;192.168.1.1, A1&gt;</code> 记录到了自己的 ARP 缓存表中！</li>
</ul>
</li>
<li>主机 H3：
<ul>
<li>目标 IP 不是自己，不予回复；同样顺手记录 <code>&lt;192.168.1.1, A1&gt;</code> 到缓存表。</li>
</ul>
</li>
<li>主机 H4：
<ul>
<li>发现目标 IP 正是自己！</li>
<li>H4 将 <code>&lt;192.168.1.1, A1&gt;</code> 写入/更新自己的 ARP 缓存表；</li>
<li>准备发起 ARP 响应。</li>
</ul>
</li>
</ul></section><section><h4>步骤 3：H4 单播发送 ARP 响应给 H1<a href="#步骤-3h4-单播发送-arp-响应给-h1"><span>#</span></a></h4><ul>
<li>动作：H4 已经知道了 H1 的 MAC（<code>A1</code>），因此以单播形式回复。</li>
<li>以太网帧与报文结构辨析：
<ul>
<li>以太网帧首部（数据链路层）：
<ul>
<li>源 MAC = <code>A4</code></li>
<li>目的 MAC = <code>A1</code>（单播交付）</li>
</ul>
</li>
<li>ARP 响应载荷内部：
<ul>
<li>发送端 IP = <code>192.168.1.4</code>，发送端 MAC = <code>A4</code></li>
<li>目标端 IP = <code>192.168.1.1</code>，目标端 MAC = <code>A1</code></li>
</ul>
</li>
</ul>
</li>
<li>结果：H1 收到后，将 <code>&lt;192.168.1.4, A4&gt;</code> 存入本地 ARP 缓存表。</li>
</ul></section><section><h4>步骤 4：H1 正式向 H4 发送 IP 数据报<a href="#步骤-4h1-正式向-h4-发送-ip-数据报"><span>#</span></a></h4><ul>
<li>以太网帧首部（数据链路层）：
<ul>
<li>源 MAC = <code>A1</code></li>
<li>目的 MAC = <code>A4</code></li>
</ul>
</li>
<li>IP 首部（网络层）：
<ul>
<li>源 IP = <code>192.168.1.1</code></li>
<li>目的 IP = <code>192.168.1.4</code></li>
</ul>
</li>
<li>传输：H4 顺利收到 H1 的数据报！</li>
</ul></section><section><h4>阶段二：随后，主机 H2 向主机 H1 发送数据<a href="#阶段二随后主机-h2-向主机-h1-发送数据"><span>#</span></a></h4></section><section><h4>步骤 5：H2 检查本地 ARP 缓存表<a href="#步骤-5h2-检查本地-arp-缓存表"><span>#</span></a></h4><ul>
<li>状态：H2 想要发送数据报给 H1（目的 IP：<code>192.168.1.1</code>）。</li>
<li>关键推导：
<ul>
<li>因为在步骤 2 中，H2 偷听（接收）到了 H1 发送的 ARP 广播，并启用了自动学习机制；</li>
<li>所以此时 H2 的本地 ARP 表中已经存在条目 <code>&lt;192.168.1.1 -&gt; A1&gt;</code>！</li>
</ul>
</li>
<li>结论：主机 H2 根本不需要再次发送 ARP 广播请求！</li>
</ul></section><section><h4>步骤 6：H2 直接封装并单播发送 IP 数据报给 H1<a href="#步骤-6h2-直接封装并单播发送-ip-数据报给-h1"><span>#</span></a></h4><ul>
<li>以太网帧首部（数据链路层）：
<ul>
<li>源 MAC = <code>A2</code></li>
<li>目的 MAC = <code>A1</code>（直接命中缓存，无需请求）</li>
</ul>
</li>
<li>IP 首部（网络层）：
<ul>
<li>源 IP = <code>192.168.1.2</code></li>
<li>目的 IP = <code>192.168.1.1</code></li>
</ul>
</li>
<li>传输：交换机依据 MAC 地址表将帧单播送达 H1，通信直接完成！</li>
</ul></section><section><h4>状态速查表<a href="#状态速查表"><span>#</span></a></h4>

<table><thead><tr><th>主机</th><th>阶段一结束后 ARP 表状态</th><th>阶段二发送数据动作</th></tr></thead><tbody><tr><td>H1</td><td>拥有 <code>H4(A4)</code></td><td>接收 H2 的数据报</td></tr><tr><td>H2</td><td>已学习到 <code>H1(A1)</code></td><td>直接单播发数据，0 次 ARP 开销</td></tr><tr><td>H3</td><td>已学习到 <code>H1(A1)</code></td><td>无动作</td></tr><tr><td>H4</td><td>已学习到 <code>H1(A1)</code></td><td>接收 H1 的数据报</td></tr></tbody></table></section></section><section><h3>内网 1 主机 A 向内网 2 WEB 服务器发送 IP 数据报<a href="#内网-1-主机-a-向内网-2-web-服务器发送-ip-数据报"><span>#</span></a></h3><p>一个标准拓扑（由一台双接口路由器连接内网 1 和内网 2）：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>【内网 1】                          【路由器 R】                         【内网 2】</span></div></div><div><div><div>2</div></div><div><span>[主机 A] &lt;---&gt; [交换机 SW1] &lt;---&gt; [接口 E0 | 接口 E1] &lt;---&gt; [交换机 SW2] &lt;---&gt; [Web 服务器 B]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>主机 A（内网 1）：
<ul>
<li>IP 地址：<code>192.168.1.10</code></li>
<li>子网掩码：<code>255.255.255.0</code></li>
<li>MAC 地址：<code>AA-AA-AA-AA-AA-AA</code></li>
<li>默认网关：<code>192.168.1.1</code></li>
<li>ARP 缓存表：空</li>
</ul>
</li>
<li>路由器 R：
<ul>
<li>接口 E0（连接内网 1）：
<ul>
<li>IP 地址：<code>192.168.1.1</code>（即内网 1 的网关）</li>
<li>MAC 地址：<code>R0-R0-R0-R0-R0-R0</code></li>
</ul>
</li>
<li>接口 E1（连接内网 2）：
<ul>
<li>IP 地址：<code>192.168.2.1</code>（即内网 2 的网关）</li>
<li>MAC 地址：<code>R1-R1-R1-R1-R1-R1</code></li>
</ul>
</li>
<li>路由表：直连网段 <code>192.168.1.0/24 -&gt; E0</code>，<code>192.168.2.0/24 -&gt; E1</code></li>
<li>ARP 缓存表：空</li>
</ul>
</li>
</ul><section><h4>阶段 1：主机 A 进行网段判断（路由决策）<a href="#阶段-1主机-a-进行网段判断路由决策"><span>#</span></a></h4><ol>
<li>主机 A 的网络层生成待发送的 IP 数据报：
<ul>
<li>源 IP：<code>192.168.1.10</code></li>
<li>目的 IP：<code>192.168.2.80</code></li>
</ul>
</li>
<li>主机 A 用自身的子网掩码（<code>255.255.255.0</code>）与目的 IP 进行按位逻辑与运算，得出目的网络号为 <code>192.168.2.0</code>。</li>
<li>主机 A 发现目的网络与自己所在的 <code>192.168.1.0</code> 网段不属于同一子网。</li>
<li>决策结果：主机 A 必须将该数据报交给默认网关（<code>192.168.1.1</code>）进行跨网段转发。</li>
</ol></section><section><h4>阶段 2：内网 1 内部的 ARP 寻址（A 寻找网关的 MAC）<a href="#阶段-2内网-1-内部的-arp-寻址a-寻找网关的-mac"><span>#</span></a></h4><ol>
<li>主机 A 准备将数据报封装成 MAC 帧，下一跳地址为网关 <code>192.168.1.1</code>。</li>
<li>主机 A 查询本地 ARP 缓存表，因为是“从零开始”，未命中，无法得知网关的 MAC。</li>
<li>主机 A 发送 ARP 请求报文：
<ul>
<li>报文内容：“谁是 <code>192.168.1.1</code>？请告诉我你的 MAC，我是 <code>192.168.1.10</code>，MAC 是 <code>AA-...-AA</code>。”</li>
<li>MAC 帧封装：
<ul>
<li>源 MAC：<code>AA-AA-AA-AA-AA-AA</code></li>
<li>目的 MAC：<code>FF-FF-FF-FF-FF-FF</code>（广播帧）</li>
</ul>
</li>
</ul>
</li>
<li>交换机 SW1 收到该广播帧，进行洪泛（转发到除入口外的所有端口）。</li>
<li>路由器接口 E0 收到广播帧，解封后识别到正在询问自己的 IP（<code>192.168.1.1</code>）：
<ul>
<li>路由器将主机 A 的映射（<code>192.168.1.10 &lt;-&gt; AA-AA-AA-AA-AA-AA</code>）记录到自己的 ARP 缓存中。</li>
</ul>
</li>
<li>路由器接口 E0 发送 ARP 响应报文：
<ul>
<li>报文内容：“我是 <code>192.168.1.1</code>，我的 MAC 是 <code>R0-R0-R0-R0-R0-R0</code>。”</li>
<li>MAC 帧封装：
<ul>
<li>源 MAC：<code>R0-R0-R0-R0-R0-R0</code></li>
<li>目的 MAC：<code>AA-AA-AA-AA-AA-AA</code>（单播帧）</li>
</ul>
</li>
</ul>
</li>
<li>交换机 SW1 将该帧转发给主机 A。主机 A 收到后，将网关映射写入本地 ARP 缓存。</li>
</ol></section><section><h4>阶段 3：主机 A 封装并发送首个 IP 数据报<a href="#阶段-3主机-a-封装并发送首个-ip-数据报"><span>#</span></a></h4><ol>
<li>主机 A 将之前暂存的 IP 数据报重新封装为数据链路层帧：
<ul>
<li>MAC 首部：源 MAC = <code>AA-AA-AA-AA-AA-AA</code>，目的 MAC = <code>R0-R0-R0-R0-R0-R0</code></li>
<li>IP 首部：源 IP = <code>192.168.1.10</code>，目的 IP = <code>192.168.2.80</code></li>
</ul>
</li>
<li>交换机 SW1 根据目的 MAC（<code>R0-...</code>）进行转发，数据帧到达路由器接口 E0。</li>
</ol></section><section><h4>阶段 4：路由器解封装与查表路由<a href="#阶段-4路由器解封装与查表路由"><span>#</span></a></h4><ol>
<li>路由器接口 E0 收到帧，比对目的 MAC 符合自身，接收并剥离数据链路层首部（MAC 帧头帧尾），送交网络层。</li>
<li>路由器检查 IP 首部：
<ul>
<li>检查通过，将 TTL 减 1（重新计算 IP 首部校验和）。</li>
<li>提取目的 IP：<code>192.168.2.80</code>。</li>
</ul>
</li>
<li>路由器检索自身路由表，匹配到直连路由条目：<code>192.168.2.0/24</code> 对应出接口为 E1。</li>
<li>路由器准备将 IP 数据报从接口 E1 封装转发出去。</li>
</ol></section><section><h4>阶段 5：内网 2 内部的 ARP 寻址（路由器寻找 Web 服务器的 MAC）<a href="#阶段-5内网-2-内部的-arp-寻址路由器寻找-web-服务器的-mac"><span>#</span></a></h4><ol>
<li>路由器准备从接口 E1 封装发往 Web 服务器（<code>192.168.2.80</code>）。</li>
<li>路由器检查接口 E1 的 ARP 缓存表，未命中（从零开始，没有任何缓存记录）。</li>
<li>暂存该 IP 数据报，路由器接口 E1 发送 ARP 请求广播帧：
<ul>
<li>报文内容：“谁是 <code>192.168.2.80</code>？请回答，我是 <code>192.168.2.1</code>，MAC 是 <code>R1-...-R1</code>。”</li>
<li>MAC 帧封装：
<ul>
<li>源 MAC：<code>R1-R1-R1-R1-R1-R1</code></li>
<li>目的 MAC：<code>FF-FF-FF-FF-FF-FF</code>（广播帧）</li>
</ul>
</li>
</ul>
</li>
<li>交换机 SW2 将广播帧洪泛，Web 服务器 B 收到该帧：
<ul>
<li>B 确认询问的是自己的 IP，把网关映射记录到自己的 ARP 缓存中。</li>
</ul>
</li>
<li>Web 服务器 B 发送 ARP 响应报文：
<ul>
<li>报文内容：“我是 <code>192.168.2.80</code>，我的 MAC 是 <code>BB-BB-BB-BB-BB-BB</code>。”</li>
<li>MAC 帧封装：
<ul>
<li>源 MAC：<code>BB-BB-BB-BB-BB-BB</code></li>
<li>目的 MAC：<code>R1-R1-R1-R1-R1-R1</code>（单播帧）</li>
</ul>
</li>
</ul>
</li>
<li>交换机 SW2 转发给路由器 E1 接口，路由器将 Web 服务器的 MAC 存入自己的 ARP 缓存表。</li>
</ol></section><section><h4>阶段 6：路由器封装并成功交付 IP 数据报<a href="#阶段-6路由器封装并成功交付-ip-数据报"><span>#</span></a></h4><ol>
<li>路由器接口 E1 将此前暂存的 IP 数据报重新封装：
<ul>
<li>MAC 首部：
<ul>
<li>源 MAC：<code>R1-R1-R1-R1-R1-R1</code>（变为出接口 E1 的 MAC）</li>
<li>目的 MAC：<code>BB-BB-BB-BB-BB-BB</code>（变为 Web 服务器的 MAC）</li>
</ul>
</li>
<li>IP 首部：
<ul>
<li>源 IP：<code>192.168.1.10</code>（保持不变！）</li>
<li>目的 IP：<code>192.168.2.80</code>（保持不变！）</li>
</ul>
</li>
</ul>
</li>
<li>路由器从 E1 接口发出该以太网帧。</li>
<li>交换机 SW2 依据目的 MAC 转发给 Web 服务器 B。</li>
<li>Web 服务器 B 收到该帧，校验 MAC 地址一致，剥离 MAC 帧头，将 IP 数据报送上自身的网络层，最终根据协议号提交给传输层（TCP 80 端口）。</li>
</ol></section><section><h4>IP 与 MAC 会不会变<a href="#ip-与-mac-会不会变"><span>#</span></a></h4><ul>
<li>IP 变不变？不走 NAT 时，源 IP、目的 IP 全程不变！</li>
<li>MAC 变不变？每过一个路由器（网关），源 MAC、目的 MAC 统一变</li>
</ul></section></section><section><h3>公网主机 1 向公网主机 2 发送 IP 数据报 TTL 辨析<a href="#公网主机-1-向公网主机-2-发送-ip-数据报-ttl-辨析"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>H1 -&gt; R1 -&gt; R2 -&gt; R3 -&gt; H4</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>H1 向 H4 发送 IP 数据报，假设 TTL 为 2。</p><p>本机发送到 R1，R1 进行处理后，发送前 -1，发现是 1，不丢弃。</p><p>R1 发送到 R2，R2 进行处理后，发送前 -1，发现是 0，丢弃。</p><p>H1 向 H4 发送 IP 数据报，假设 TTL 为 4。</p><p>本机发送到 R1，R1 进行处理后，发送前 -1，发现是 3，不丢弃。</p><p>R1 发送到 R2，R2 进行处理后，发送前 -1，发现是 2，不丢弃。</p><p>R2 发送到 R3，R3 进行处理后，发送前 -1，发现是 1，不丢弃。</p><p>R3 发送到 H4，H4 直接接收。所以最终 TTL 字段是 1（而不是 0）</p></section></section>
<section><h2>传输层<a href="#传输层"><span>#</span></a></h2><p>应用进程之间的通信。</p><section><h3>传输层 - 考纲<a href="#传输层---考纲"><span>#</span></a></h3><ul>
<li>传输层提供的服务
<ul>
<li>传输层的功能</li>
<li>传输层的寻址与端口</li>
<li>无连接服务与面向连接服务</li>
</ul>
</li>
<li>UDP
<ul>
<li>UDP 数据报</li>
<li>UDP 校验</li>
</ul>
</li>
<li>TCP
<ul>
<li>TCP 报文段</li>
<li>TCP 连接管理</li>
<li>TCP 可靠传输</li>
<li>TCP 流量控制与拥塞控制</li>
</ul>
</li>
</ul></section><section><h3>端口号<a href="#端口号"><span>#</span></a></h3><p>服务器使用的端口号</p><ul>
<li>熟知端口号（0-1023）
<ul>
<li>FTP：21</li>
<li>SSH：22</li>
<li>Telnet：23</li>
<li>SMTP：25</li>
<li>DNS：53</li>
<li>HTTP：80</li>
<li>HTTPS：443</li>
<li>SNMP：161</li>
</ul>
</li>
<li>登记端口号（1024-49151）</li>
<li>客户端临时端口号（49152-65535）：由系统动态分配给客户进程，连接结束后释放</li>
</ul><p>需要注意，服务端用熟知端口或登记端口，客户端一般用临时端口；一条连接靠“源 IP、源端口、目的 IP、目的端口、协议号”这个五元组来唯一标识。</p></section><section><h3>面向连接与无连接<a href="#面向连接与无连接"><span>#</span></a></h3><p>TCP 面向连接，通信前要三次握手，提供可靠、有序、面向字节流的服务，有流量控制和拥塞控制。</p><p>UDP 无连接，直接发，提供不可靠、无序、面向报文的服务，没有流量控制和拥塞控制，但开销小、时延低。</p>

<table><thead><tr><th>对比项</th><th>TCP</th><th>UDP</th></tr></thead><tbody><tr><td>连接</td><td>面向连接</td><td>无连接</td></tr><tr><td>可靠性</td><td>可靠，有确认重传</td><td>不可靠，尽最大努力</td></tr><tr><td>数据边界</td><td>字节流，无边界</td><td>面向报文，保留边界</td></tr><tr><td>通信方式</td><td>点对点</td><td>一对一、一对多、多对多</td></tr><tr><td>首部开销</td><td>20B 起</td><td>8B</td></tr><tr><td>流量与拥塞控制</td><td>都有</td><td>都没有</td></tr><tr><td>典型应用</td><td>文件、网页、邮件</td><td>DNS、视频、语音、广播</td></tr></tbody></table><p>需要注意，UDP 不可靠不代表不能用，可靠性可以让应用层自己补，例如 DNS 超时后自己重传。</p></section><section><h3>UDP<a href="#udp"><span>#</span></a></h3><section><h4>UDP 首部<a href="#udp-首部"><span>#</span></a></h4><p>首部仅有 8B，四个字段各 2B：源端口、目的端口、长度、校验和。</p><p>长度字段是首部加数据的总长度，最小值为 8；校验和可以填 0 表示不校验，IPv4 允许，IPv6 不允许。</p><p>源端口在不需要对方回复的时候填 0 就好了。</p><p>支持 1 对 1、1 对多、多对多。</p><p>需要注意，UDP 是面向报文的，应用层交下来一个报文，UDP 就加一个首部发出去，不合并也不拆分，所以报文边界保留；报文太长会在 IP 层被分片。</p></section><section><h4>UDP 分用和复用<a href="#udp-分用和复用"><span>#</span></a></h4><p>源主机发送请求的时候是复用，多个不同的应用层进程（各自带着不同的源端口），共同使用（复用）同一个下层的网络层（IP 协议），目的地主机收到之后是分用。</p></section><section><h4>UDP 校验<a href="#udp-校验"><span>#</span></a></h4><p>二进制反码求和，校验全部，需要回卷，算完之后取反。</p><p>校验的时候，全部相加为 1，那么没错。</p><p>还需要注意求校验和的时候需要加上 12B 的伪首部。</p></section></section><section><h3>TCP<a href="#tcp"><span>#</span></a></h3><section><h4>TCP 报文段<a href="#tcp-报文段"><span>#</span></a></h4><p>首部最短 20B，最长 60B，其中选项最多 40B。</p><ul>
<li>源端口、目的端口：各 2B；</li>
<li>序号：4B，本报文段数据第一个字节的编号；</li>
<li>确认号：4B，期望收到的下一个字节编号；</li>
<li>数据偏移：4 位，以 4B 为单位，指明首部长度；</li>
<li>保留位：6 位，目前置 0；</li>
<li>标志位：URG、ACK、PSH、RST、SYN、FIN，各 1 位；</li>
<li>窗口：2B，接收窗口，以字节为单位，用于流量控制；</li>
<li>校验和：2B，校验首部和数据，计算时加 12B 伪首部；</li>
<li>紧急指针：2B，URG 置 1 时有效；</li>
<li>选项：MSS、窗口扩大、时间戳、SACK 等。</li>
</ul><p>需要注意，SYN 和 FIN 都要消耗一个序号，单纯的 ACK 不消耗序号，所以握手时 ack 等于对方的 seq 加 1。</p><p>窗口字段只有 16 位，最大 65535B，大带宽长时延的链路要用窗口扩大选项，否则吞吐量上不去。</p></section><section><h4>重传<a href="#重传"><span>#</span></a></h4><p>超时与冗余 ACK。</p><p>超时指的是 RTO 重传计时器走完了。</p><p>冗余 ACK 指的是收到了 3 个连续的冗余 ACK（共 4 个，且再 RTO 重传前收到的）。</p></section><section><h4>三报文握手<a href="#三报文握手"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>时刻               C (客户端 / 主动打开方)                S (服务端 / 被动打开方)</span></div></div><div><div><div>2</div></div><div><span>───               ─────────────────────                 ─────────────────────</span></div></div><div><div><div>3</div></div><div><span>t0                      [CLOSED]                               [LISTEN]</span></div></div><div><div><div>4</div></div><div><span><span>                           </span></span><span>│                                      │</span></div></div><div><div><div>5</div></div><div><span><span>                           </span></span><span>├─ 1. 发送 SYN=1, seq=x ─────────────&gt; (在途中，耗时 0.5 RTT)</span></div></div><div><div><div>6</div></div><div><span><span>                           </span></span><span>▼                                      │</span></div></div><div><div><div>7</div></div><div><span><span>                      </span></span><span>[SYN_SENT]                                  │</span></div></div><div><div><div>8</div></div><div><span><span>                           </span></span><span>│                                      ▼</span></div></div><div><div><div>9</div></div><div><span>t0 + 0.5 RTT               │                                  [SYN_RCVD]</span></div></div><div><div><div>10</div></div><div><span><span>                           </span></span><span>│                                      │</span></div></div><div><div><div>11</div></div><div><span><span>                           </span></span><span>│ &lt;──── 2. 发送 SYN=1, ACK=1 ──────────┤ (确认号 ack=x+1, seq=y)</span></div></div><div><div><div>12</div></div><div><span><span>                           </span></span><span>│         (在途中，耗时 0.5 RTT)        │</span></div></div><div><div><div>13</div></div><div><span><span>                           </span></span><span>▼                                      │</span></div></div><div><div><div>14</div></div><div><span><span>                     </span></span><span>[ESTABLISHED]                                │</span></div></div><div><div><div>15</div></div><div><span><span>                           </span></span><span>│                                      │</span></div></div><div><div><div>16</div></div><div><span>t0 + 1.0 RTT               ├─ 3. 发送 ACK=1, ack=y+1, seq=x+1 ──&gt; (在途中，耗时 0.5 RTT)</span></div></div><div><div><div>17</div></div><div><span><span>                           </span></span><span>│    (客户端此时已可携带数据应用数据)    ▼</span></div></div><div><div><div>18</div></div><div><span><span>                           </span></span><span>│                                [ESTABLISHED]</span></div></div><div><div><div>19</div></div><div><span><span>                           </span></span><span>│                                      │</span></div></div><div><div><div>20</div></div><div><span>t0 + 1.5 RTT               │                                      │ (服务端收到最终 ACK，连接建立！)</span></div></div><div><div><div>21</div></div><div><span><span>                           </span></span><span>▼                                      ▼</span></div></div><div><div><div>22</div></div><div><span><span>                      </span></span><span>[数据传输阶段]                         [数据传输阶段]</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>为什么必须是三次，两次不行？因为要防止已失效的连接请求报文突然又传到服务端：如果只有两次，服务端收到一个迟到的 SYN 就会直接建立连接并分配资源，而客户端并不想连，资源就白占了。三次握手下，客户端收到服务端的 SYN+ACK 后还要再确认一次，服务端只有收到这个确认才认为连接建立。</p><p>需要注意，第三次握手的 ACK 可以携带数据，前两次不行，因为此时客户端还没确认服务端的接收能力。</p></section><section><h4>四报文挥手<a href="#四报文挥手"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>时刻               H3 (主动关闭方)                        S (被动关闭方)</span></div></div><div><div><div>2</div></div><div><span>───               ──────────────                        ─────────────</span></div></div><div><div><div>3</div></div><div><span>t               [ESTABLISHED]                          [ESTABLISHED]</span></div></div><div><div><div>4</div></div><div><span><span>                  </span></span><span>│</span></div></div><div><div><div>5</div></div><div><span><span>                  </span></span><span>├─ 发送 FIN=1 ─────────────────────────&gt; (在途中，耗时 0.5 RTT)</span></div></div><div><div><div>6</div></div><div><span><span>                  </span></span><span>▼</span></div></div><div><div><div>7</div></div><div><span><span>                </span></span><span>[FIN_WAIT_1]</span></div></div><div><div><div>8</div></div><div><span><span>                  </span></span><span>│</span></div></div><div><div><div>9</div></div><div><span>t + 0.5 RTT       │                                      │ (收到 FIN，状态变为 CLOSE_WAIT)</span></div></div><div><div><div>10</div></div><div><span><span>                  </span></span><span>│                                      ├─ 理想极速下：S 既无数据要发，</span></div></div><div><div><div>11</div></div><div><span><span>                  </span></span><span>│                                      │  立刻合并不单发 ACK，而是直接</span></div></div><div><div><div>12</div></div><div><span><span>                  </span></span><span>│                                      │  连同自己的 FIN+ACK 一起回传！</span></div></div><div><div><div>13</div></div><div><span><span>                  </span></span><span>│ &lt;──────────────── 发送 FIN=1, ACK=1 ─┤ (或者分开连着发，耗时 0.5 RTT)</span></div></div><div><div><div>14</div></div><div><span><span>                  </span></span><span>▼                                      ▼</span></div></div><div><div><div>15</div></div><div><span><span>                </span></span><span>[TIME_WAIT]                            [LAST_ACK]</span></div></div><div><div><div>16</div></div><div><span><span>                  </span></span><span>│</span></div></div><div><div><div>17</div></div><div><span>t + 1.0 RTT       ├─ 收到 S 的 FIN，发送最终 ACK ────────&gt; (在途中，耗时 0.5 RTT)</span></div></div><div><div><div>18</div></div><div><span><span>                  </span></span><span>▼</span></div></div><div><div><div>19</div></div><div><span><span>                </span></span><span>(进入 2MSL 等待...)</span></div></div><div><div><div>20</div></div><div><span><span>                  </span></span><span>│</span></div></div><div><div><div>21</div></div><div><span>t + 1.5 RTT       │                                      │ (S 终于收到 H3 的最终 ACK！)</span></div></div><div><div><div>22</div></div><div><span><span>                                                         </span></span><span>▼</span></div></div><div><div><div>23</div></div><div><span><span>                                                       </span></span><span>[CLOSED] （S 彻底释放连接！）</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>TIME_WAIT 要等 2MSL，原因有两个：一是保证最后一个 ACK 能到达服务端，如果它丢了，服务端会重传 FIN，此时客户端还能再回一次 ACK；二是让本连接产生的所有报文段都在网络中消失，不会干扰之后用同样端口建立的新连接。</p><p>需要注意，只有主动关闭方进入 TIME_WAIT，被动关闭方收到最后一个 ACK 就直接进入 CLOSED。</p><p>尤其要注意，关于四报文挥手，一定不是 H3 第一次发 FIN 报文后，S 就立刻关闭，而是变成 CLOSE_WAIT 状态。</p></section><section><h4>TCP 流量控制<a href="#tcp-流量控制"><span>#</span></a></h4><p>流量控制指的是对方够不够收，每次接受方返回 ACK 的时候，都要顺便带上自己的接收窗口大小。</p><p>如果接受窗口为 0，那么每隔一段时间发送零窗口探测报文。</p><p>而保活计时器指的是 tcp 连接时间太久了，发送保活探针，连续发了好几个没人回应，那么主动关闭。</p></section><section><h4>TCP 拥塞控制<a href="#tcp-拥塞控制"><span>#</span></a></h4><p>慢开始 - 拥塞避免 - 快重传 - 快恢复，具体模型见下面的模型辨析。</p></section><section><h4>MSS 和序号的概念<a href="#mss-和序号的概念"><span>#</span></a></h4><p>做题的时候，不要做昏头了，忘记这俩要转换。</p></section><section><h4>TCP 的注意点<a href="#tcp-的注意点"><span>#</span></a></h4><p>需要注意，慢开始阶段每收到一个确认就把拥塞窗口加 1 个 MSS，一个 RTT 内收到几个确认就加几次，表现出来才是翻倍，不能直接一次性乘 2。</p></section><section><h4>辨析超时和丢失<a href="#辨析超时和丢失"><span>#</span></a></h4>

<table><thead><tr><th>现象</th><th>TCP 对网络状况的看法</th><th>拥塞严重级别</th></tr></thead><tbody><tr><td>检测到 3 个冗余 ACK</td><td>虽然有个报文丢了，但后面的报文还能送过去，B 还能给我回信，说明网络其实还能走得通</td><td>轻度拥塞</td></tr><tr><td>RTO 超时</td><td>整个信道死一般的寂静！网络可能已经堵死了，或者链路彻底断了！</td><td>极度严重拥塞</td></tr></tbody></table></section><section><h4>RTO 超时相关的计算<a href="#rto-超时相关的计算"><span>#</span></a></h4><p>计算顺序是：先由测量样本算出平滑往返时间，再算往返时间偏差，最后算 RTO。</p><span><span><span>RTTS=(1−α) RTTS旧+α RTT新样本\text{RTT}_S=(1-\alpha)\,\text{RTT}_S^{\text{旧}}+\alpha\,\text{RTT}^{\text{新样本}}</span><span><span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>S</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>α</span><span>)</span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>S</span></span></span><span><span></span><span><span><span><span>旧</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>α</span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span><span><span>新样本</span></span></span></span></span></span></span></span></span></span></span></span></span></span><p>参数标准：RFC 推荐 <span><span>α=18=0.125\alpha=\frac{1}{8}=0.125</span><span><span><span></span><span>α</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>8</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0.125</span></span></span></span>。</p><p><span><span>α\alpha</span><span><span><span></span><span>α</span></span></span></span> 越接近 0，对新测量值反应越迟钝、越平滑；越接近 1，对网络突发波动越敏感。</p><span><span><span>RTTD=(1−β) RTTD旧+β ∣RTTS旧−RTT新样本∣\text{RTT}_D=(1-\beta)\,\text{RTT}_D^{\text{旧}}+\beta\,\bigl|\text{RTT}_S^{\text{旧}}-\text{RTT}^{\text{新样本}}\bigr|</span><span><span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>β</span><span>)</span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>D</span></span></span><span><span></span><span><span><span><span>旧</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>β</span><span></span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>S</span></span></span><span><span></span><span><span><span><span>旧</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span><span><span>新样本</span></span></span></span></span></span></span></span></span></span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><p>参数标准：RFC 推荐 <span><span>β=14=0.25\beta=\frac{1}{4}=0.25</span><span><span><span></span><span>β</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0.25</span></span></span></span>。</p><p>初始状态（第一次测量）时，偏差值默认取样本的一半：</p><span><span><span>RTTD(1)=12RTT(1)\text{RTT}_{D(1)}=\frac{1}{2}\text{RTT}_{(1)}</span><span><span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span><span>D</span><span>(</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span><span>(</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><span><span><span>RTO=RTTS+4 RTTD\text{RTO}=\text{RTT}_S+4\,\text{RTT}_D</span><span><span><span></span><span><span>RTO</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>S</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>4</span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><p>报文重传时，该样本的测量值不能用于更新 <span><span>RTTS\text{RTT}_S</span><span><span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>S</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>RTTD\text{RTT}_D</span><span><span><span></span><span><span><span>RTT</span></span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></p><p>只要报文段超时重传了一次，不再代入公式计算，而是直接将当前的 RTO 翻倍：</p><p><span><span>RTO重传=2 RTO原\text{RTO}_{\text{重传}}=2\,\text{RTO}_{\text{原}}</span><span><span><span></span><span><span><span>RTO</span></span><span><span><span><span><span><span></span><span><span><span><span>重传</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span></span><span><span><span>RTO</span></span><span><span><span><span><span><span></span><span><span><span><span>原</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></p><p>只要连续重传，就按 <span><span>2,4,8…2, 4, 8 \dots</span><span><span><span></span><span>2</span><span>,</span><span></span><span>4</span><span>,</span><span></span><span>8</span><span></span><span>…</span></span></span></span> 的倍数指数退避，直到数据报成功发送且不再出现重传为止，才恢复上面的正常公式计算！</p></section></section><section><h3>TCP 模型 1：双方同时发送数据<a href="#tcp-模型-1双方同时发送数据"><span>#</span></a></h3><p>以 A 向 B 发送 TCP 连接，A 拥塞窗口为 16，接收窗口恒为 10，B 拥塞窗口为 8，接收窗口恒为 18。A 和 B 均不从缓冲区回收，双方先发送完毕的先向对方发送 fin。</p><p>a 序列号一开始为 100，mss 为 1000，b 序列号一开始为 150。</p><section><h4>第一阶段：三次握手（建立连接）<a href="#第一阶段三次握手建立连接"><span>#</span></a></h4><ol>
<li>第 1 步（A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B）：A 发起连接请求
<ul>
<li>标志位：<span><span>SYN=1,ACK=0\text{SYN} = 1, \text{ACK} = 0</span><span><span><span></span><span><span>SYN</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span></li>
<li>序号：<span><span>seq=100\text{seq} = 100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>100</span></span></span></span></li>
<li>宣告窗口：<span><span>win=10000\text{win} = 10000</span><span><span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10000</span></span></span></span>（<span><span>10 MSS10\text{ MSS}</span><span><span><span></span><span>10</span><span><span> MSS</span></span></span></span></span>），宣告 <span><span>MSS=1000\text{MSS} = 1000</span><span><span><span></span><span><span>MSS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1000</span></span></span></span></li>
</ul>
</li>
<li>第 2 步（B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A）：B 确认并请求
<ul>
<li>标志位：<span><span>SYN=1,ACK=1\text{SYN} = 1, \text{ACK} = 1</span><span><span><span></span><span><span>SYN</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></li>
<li>序号：<span><span>seq=150\text{seq} = 150</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>150</span></span></span></span>，确认号：<span><span>ack=101\text{ack} = 101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>101</span></span></span></span></li>
<li>宣告窗口：<span><span>win=18000\text{win} = 18000</span><span><span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>18000</span></span></span></span>（<span><span>18 MSS18\text{ MSS}</span><span><span><span></span><span>18</span><span><span> MSS</span></span></span></span></span>），宣告 <span><span>MSS=1000\text{MSS} = 1000</span><span><span><span></span><span><span>MSS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1000</span></span></span></span></li>
</ul>
</li>
<li>第 3 步（A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B）：A 确认
<ul>
<li>标志位：<span><span>ACK=1\text{ACK} = 1</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></li>
<li>序号：<span><span>seq=101\text{seq} = 101</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>101</span></span></span></span>，确认号：<span><span>ack=151\text{ack} = 151</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>151</span></span></span></span></li>
<li>双方进入 <span><span>ESTABLISHED\text{ESTABLISHED}</span><span><span><span></span><span><span>ESTABLISHED</span></span></span></span></span> 状态。</li>
<li>初始慢启动窗口：<span><span>cwndA=1 MSS\text{cwnd}_A = 1\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span></span></span></span>，<span><span>cwndB=1 MSS\text{cwnd}_B = 1\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
</ol></section><section><h4>第二阶段：慢启动数据传输（RTT 1 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> RTT 4）<a href="#第二阶段慢启动数据传输rtt-1-sim-rtt-4"><span>#</span></a></h4></section><section><h4>RTT 1：初始慢启动（<span><span>cwnd=1 MSS\text{cwnd} = 1\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span></span></span></span>）<a href="#rtt-1初始慢启动cwnd1msstextcwnd--1text-msscwnd1mss"><span>#</span></a></h4><ul>
<li>A 发送：<span><span>swndA=min⁡(1,18)=1 MSS\text{swnd}_A = \min(1, 18) = 1\text{ MSS}</span><span><span><span></span><span><span><span>swnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>min</span><span>(</span><span>1</span><span>,</span><span></span><span>18</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span></span></span></span>
<ul>
<li>A 发送数据段：<span><span>seq=101∼1100\text{seq} = 101 \sim 1100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>101</span><span></span><span>∼</span><span></span></span><span><span></span><span>1100</span></span></span></span>（长 1000）</li>
</ul>
</li>
<li>B 发送：<span><span>swndB=min⁡(1,10)=1 MSS\text{swnd}_B = \min(1, 10) = 1\text{ MSS}</span><span><span><span></span><span><span><span>swnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>min</span><span>(</span><span>1</span><span>,</span><span></span><span>10</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span></span></span></span>
<ul>
<li>B 发送数据段：<span><span>seq=151∼1150\text{seq} = 151 \sim 1150</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>151</span><span></span><span>∼</span><span></span></span><span><span></span><span>1150</span></span></span></span>（长 1000）</li>
</ul>
</li>
<li>确认与窗口更新：
<ul>
<li>B 回复 A：<span><span>ack=1101,win=17000\text{ack} = 1101, \text{win} = 17000</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1101</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>17000</span></span></span></span>（缓冲区剩 17 MSS）。A 收到后，<span><span>cwndA\text{cwnd}_A</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 翻倍为 <span><span>2 MSS2\text{ MSS}</span><span><span><span></span><span>2</span><span><span> MSS</span></span></span></span></span>。</li>
<li>A 回复 B：<span><span>ack=1151,win=9000\text{ack} = 1151, \text{win} = 9000</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1151</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>9000</span></span></span></span>（缓冲区剩 9 MSS）。B 收到后，<span><span>cwndB\text{cwnd}_B</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 翻倍为 <span><span>2 MSS2\text{ MSS}</span><span><span><span></span><span>2</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
</ul></section><section><h4>RTT 2：慢启动翻倍（<span><span>cwnd=2 MSS\text{cwnd} = 2\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span><span> MSS</span></span></span></span></span>）<a href="#rtt-2慢启动翻倍cwnd2msstextcwnd--2text-msscwnd2mss"><span>#</span></a></h4><ul>
<li>A 发送：<span><span>swndA=min⁡(2,17)=2 MSS\text{swnd}_A = \min(2, 17) = 2\text{ MSS}</span><span><span><span></span><span><span><span>swnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>min</span><span>(</span><span>2</span><span>,</span><span></span><span>17</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span><span> MSS</span></span></span></span></span>
<ul>
<li>A 连续发送 2 段：<span><span>seq=1101∼3100\text{seq} = 1101 \sim 3100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1101</span><span></span><span>∼</span><span></span></span><span><span></span><span>3100</span></span></span></span></li>
</ul>
</li>
<li>B 发送：<span><span>swndB=min⁡(2,9)=2 MSS\text{swnd}_B = \min(2, 9) = 2\text{ MSS}</span><span><span><span></span><span><span><span>swnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>min</span><span>(</span><span>2</span><span>,</span><span></span><span>9</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span><span> MSS</span></span></span></span></span>
<ul>
<li>B 连续发送 2 段：<span><span>seq=1151∼3150\text{seq} = 1151 \sim 3150</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1151</span><span></span><span>∼</span><span></span></span><span><span></span><span>3150</span></span></span></span></li>
</ul>
</li>
<li>确认与窗口更新：
<ul>
<li>B 回复 A：<span><span>ack=3101,win=15000\text{ack} = 3101, \text{win} = 15000</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>3101</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>15000</span></span></span></span>。A 收到后，<span><span>cwndA\text{cwnd}_A</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 翻倍为 <span><span>4 MSS4\text{ MSS}</span><span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>。</li>
<li>A 回复 B：<span><span>ack=3151,win=7000\text{ack} = 3151, \text{win} = 7000</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>3151</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7000</span></span></span></span>。B 收到后，<span><span>cwndB\text{cwnd}_B</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 翻倍为 <span><span>4 MSS4\text{ MSS}</span><span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
</ul></section><section><h4>RTT 3：慢启动翻倍（<span><span>cwnd=4 MSS\text{cwnd} = 4\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>）<a href="#rtt-3慢启动翻倍cwnd4msstextcwnd--4text-msscwnd4mss"><span>#</span></a></h4><ul>
<li>A 发送：<span><span>swndA=min⁡(4,15)=4 MSS\text{swnd}_A = \min(4, 15) = 4\text{ MSS}</span><span><span><span></span><span><span><span>swnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>min</span><span>(</span><span>4</span><span>,</span><span></span><span>15</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>
<ul>
<li>A 连续发送 4 段：<span><span>seq=3101∼7100\text{seq} = 3101 \sim 7100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>3101</span><span></span><span>∼</span><span></span></span><span><span></span><span>7100</span></span></span></span></li>
</ul>
</li>
<li>B 发送：<span><span>swndB=min⁡(4,7)=4 MSS\text{swnd}_B = \min(4, 7) = 4\text{ MSS}</span><span><span><span></span><span><span><span>swnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>min</span><span>(</span><span>4</span><span>,</span><span></span><span>7</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>
<ul>
<li>B 连续发送 4 段：<span><span>seq=3151∼7150\text{seq} = 3151 \sim 7150</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>3151</span><span></span><span>∼</span><span></span></span><span><span></span><span>7150</span></span></span></span></li>
</ul>
</li>
<li>确认与窗口更新：
<ul>
<li>B 回复 A：<span><span>ack=7101,win=11000\text{ack} = 7101, \text{win} = 11000</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7101</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>11000</span></span></span></span>。A 收到后，<span><span>cwndA\text{cwnd}_A</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 翻倍为 <span><span>8 MSS8\text{ MSS}</span><span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>。</li>
<li>A 回复 B：<span><span>ack=7151,win=3000\text{ack} = 7151, \text{win} = 3000</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7151</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>3000</span></span></span></span>。B 收到后，<span><span>cwndB\text{cwnd}_B</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 增长为 <span><span>8 MSS8\text{ MSS}</span><span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>（达上限）。</li>
</ul>
</li>
</ul></section><section><h4>RTT 4：B 发送完毕并率先发起挥手<a href="#rtt-4b-发送完毕并率先发起挥手"><span>#</span></a></h4><ul>
<li>A 发送：<span><span>swndA=min⁡(8,11)=8 MSS\text{swnd}_A = \min(8, 11) = 8\text{ MSS}</span><span><span><span></span><span><span><span>swnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>min</span><span>(</span><span>8</span><span>,</span><span></span><span>11</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>
<ul>
<li>A 连续发送 8 段：<span><span>seq=7101∼15100\text{seq} = 7101 \sim 15100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7101</span><span></span><span>∼</span><span></span></span><span><span></span><span>15100</span></span></span></span>（A 累计已发 15 MSS）</li>
</ul>
</li>
<li>B 发送：B 总目标为 8 MSS，前三轮已发 7 MSS，本次仅剩最后 1 个 MSS！
<ul>
<li>B 发送最后一段数据：<span><span>seq=7151∼8150\text{seq} = 7151 \sim 8150</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7151</span><span></span><span>∼</span><span></span></span><span><span></span><span>8150</span></span></span></span>（长 1000）</li>
<li>B 的全部应用数据在此完全发完！</li>
</ul>
</li>
<li>确认反馈：
<ul>
<li>A 回复 B 的数据：<span><span>ack=8151,win=2000\text{ack} = 8151, \text{win} = 2000</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8151</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>2000</span></span></span></span>（A 缓冲区仅剩 2 MSS）。</li>
<li>B 回复 A 的数据：<span><span>ack=15101,win=3000\text{ack} = 15101, \text{win} = 3000</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>15101</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>3000</span></span></span></span>。A 收到后，<span><span>cwndA\text{cwnd}_A</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 翻倍达到上限 <span><span>16 MSS16\text{ MSS}</span><span><span><span></span><span>16</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
</ul></section><section><h4>第三阶段：连接释放与尾部数据传输（B 率先发 FIN）<a href="#第三阶段连接释放与尾部数据传输b-率先发-fin"><span>#</span></a></h4><p>由于 B 在 RTT 4 发送完毕，B 触发先发 <span><span>FIN\text{FIN}</span><span><span><span></span><span><span>FIN</span></span></span></span></span> 规则！</p><ol>
<li>
<p>第 1 次挥手（B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A）：B 率先发起断开请求</p>
<ul>
<li>标志位：<span><span>FIN=1,ACK=1\text{FIN} = 1, \text{ACK} = 1</span><span><span><span></span><span><span>FIN</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></li>
<li>序号：<span><span>seq=8151\text{seq} = 8151</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8151</span></span></span></span>（消耗 1 个序号）</li>
<li>确认号：<span><span>ack=15101\text{ack} = 15101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>15101</span></span></span></span></li>
<li>状态：B 进入 <span><span>FIN_WAIT_1\text{FIN\_WAIT\_1}</span><span><span><span></span><span><span>FIN_WAIT_1</span></span></span></span></span> 状态。</li>
</ul>
</li>
<li>
<p>第 2 次挥手（A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B）与 A 发送最后剩余数据（RTT 5）：</p>
<ul>
<li>A 收到 B 的 FIN，先回复 ACK 确认：
<ul>
<li>标志位：<span><span>ACK=1\text{ACK} = 1</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></li>
<li>序号：<span><span>seq=15101\text{seq} = 15101</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>15101</span></span></span></span></li>
<li>确认号：<span><span>ack=8152\text{ack} = 8152</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8152</span></span></span></span>（确认 B 的 FIN）</li>
<li>状态：B 进入 <span><span>FIN_WAIT_2\text{FIN\_WAIT\_2}</span><span><span><span></span><span><span>FIN_WAIT_2</span></span></span></span></span>，A 进入 <span><span>CLOSE_WAIT\text{CLOSE\_WAIT}</span><span><span><span></span><span><span>CLOSE_WAIT</span></span></span></span></span>。</li>
</ul>
</li>
<li>A 发送剩余的最后 1 个 MSS 数据（<span><span>16−15=1 MSS16 - 15 = 1\text{ MSS}</span><span><span><span></span><span>16</span><span></span><span>−</span><span></span></span><span><span></span><span>15</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span></span></span></span>）：
<ul>
<li>标志位：<span><span>ACK=1\text{ACK} = 1</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></li>
<li>序号：<span><span>seq=15101∼16100\text{seq} = 15101 \sim 16100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>15101</span><span></span><span>∼</span><span></span></span><span><span></span><span>16100</span></span></span></span>（长 1000）</li>
<li>确认号：<span><span>ack=8152\text{ack} = 8152</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8152</span></span></span></span></li>
<li>A 的全部应用数据在此也彻底发完！</li>
</ul>
</li>
</ul>
</li>
<li>
<p>B 确认 A 的最后数据：</p>
<ul>
<li>B 回复：<span><span>ACK=1,seq=8152,ack=16101,win=2000\text{ACK} = 1, \text{seq} = 8152, \text{ack} = 16101, \text{win} = 2000</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8152</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>16101</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>2000</span></span></span></span>。</li>
</ul>
</li>
<li>
<p>第 3 次挥手（A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B）：A 数据发送完毕，发送自己的 <span><span>FIN\text{FIN}</span><span><span><span></span><span><span>FIN</span></span></span></span></span></p>
<ul>
<li>标志位：<span><span>FIN=1,ACK=1\text{FIN} = 1, \text{ACK} = 1</span><span><span><span></span><span><span>FIN</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></li>
<li>序号：<span><span>seq=16101\text{seq} = 16101</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>16101</span></span></span></span>（消耗 1 个序号）</li>
<li>确认号：<span><span>ack=8152\text{ack} = 8152</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8152</span></span></span></span></li>
<li>状态：A 进入 <span><span>LAST_ACK\text{LAST\_ACK}</span><span><span><span></span><span><span>LAST_ACK</span></span></span></span></span> 状态。</li>
</ul>
</li>
<li>
<p>第 4 次挥手（B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A）：B 确认 A 的断开</p>
<ul>
<li>标志位：<span><span>ACK=1\text{ACK} = 1</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></li>
<li>序号：<span><span>seq=8152\text{seq} = 8152</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8152</span></span></span></span></li>
<li>确认号：<span><span>ack=16102\text{ack} = 16102</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>16102</span></span></span></span>（确认 A 的 FIN）</li>
<li>状态：B 进入 <span><span>TIME_WAIT\text{TIME\_WAIT}</span><span><span><span></span><span><span>TIME_WAIT</span></span></span></span></span>；A 收到后彻底进入 <span><span>CLOSED\text{CLOSED}</span><span><span><span></span><span><span>CLOSED</span></span></span></span></span>！</li>
</ul>
</li>
</ol></section><section><h4>TCP 模型全流程<a href="#tcp-模型全流程"><span>#</span></a></h4>

<table><thead><tr><th>阶段 / 轮次</th><th>报文方向</th><th>标志位</th><th><span><span>seq\text{seq}</span><span><span><span></span><span><span>seq</span></span></span></span></span> 范围</th><th><span><span>ack\text{ack}</span><span><span><span></span><span><span>ack</span></span></span></span></span></th><th>拥塞窗口变化与状态说明</th></tr></thead><tbody><tr><td>握手 1</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>SYN</td><td>100</td><td>-</td><td><span><span>win=10000\text{win}=10000</span><span><span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10000</span></span></span></span></td></tr><tr><td>握手 2</td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>SYN, ACK</td><td>150</td><td>101</td><td><span><span>win=18000\text{win}=18000</span><span><span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>18000</span></span></span></span></td></tr><tr><td>握手 3</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>ACK</td><td>101</td><td>151</td><td>连接建立，双方 <span><span>cwnd=1 MSS\text{cwnd} = 1\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span></span></span></span></td></tr><tr><td>RTT 1</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>数据 (1 段)</td><td><span><span>101∼1100101 \sim 1100</span><span><span><span></span><span>101</span><span></span><span>∼</span><span></span></span><span><span></span><span>1100</span></span></span></span></td><td>151</td><td><span><span>cwndA=1\text{cwnd}_A = 1</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，发 1000 字节</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>数据 (1 段)</td><td><span><span>151∼1150151 \sim 1150</span><span><span><span></span><span>151</span><span></span><span>∼</span><span></span></span><span><span></span><span>1150</span></span></span></span></td><td>101</td><td><span><span>cwndB=1\text{cwnd}_B = 1</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，发 1000 字节</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>ACK</td><td>1151</td><td>1101</td><td><span><span>cwndA→2 MSS\text{cwnd}_A \rightarrow 2\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>2</span><span><span> MSS</span></span></span></span></span></td></tr><tr><td></td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>ACK</td><td>1101</td><td>1151</td><td><span><span>cwndB→2 MSS\text{cwnd}_B \rightarrow 2\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>2</span><span><span> MSS</span></span></span></span></span></td></tr><tr><td>RTT 2</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>数据 (2 段)</td><td><span><span>1101∼31001101 \sim 3100</span><span><span><span></span><span>1101</span><span></span><span>∼</span><span></span></span><span><span></span><span>3100</span></span></span></span></td><td>1151</td><td><span><span>cwndA=2\text{cwnd}_A = 2</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span>，发 2000 字节</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>数据 (2 段)</td><td><span><span>1151∼31501151 \sim 3150</span><span><span><span></span><span>1151</span><span></span><span>∼</span><span></span></span><span><span></span><span>3150</span></span></span></span></td><td>1101</td><td><span><span>cwndB=2\text{cwnd}_B = 2</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span>，发 2000 字节</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>ACK</td><td>3151</td><td>3101</td><td><span><span>cwndA→4 MSS\text{cwnd}_A \rightarrow 4\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span></td></tr><tr><td></td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>ACK</td><td>3101</td><td>3151</td><td><span><span>cwndB→4 MSS\text{cwnd}_B \rightarrow 4\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span></td></tr><tr><td>RTT 3</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>数据 (4 段)</td><td><span><span>3101∼71003101 \sim 7100</span><span><span><span></span><span>3101</span><span></span><span>∼</span><span></span></span><span><span></span><span>7100</span></span></span></span></td><td>3151</td><td><span><span>cwndA=4\text{cwnd}_A = 4</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span>，发 4000 字节</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>数据 (4 段)</td><td><span><span>3151∼71503151 \sim 7150</span><span><span><span></span><span>3151</span><span></span><span>∼</span><span></span></span><span><span></span><span>7150</span></span></span></span></td><td>3101</td><td><span><span>cwndB=4\text{cwnd}_B = 4</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span>，发 4000 字节</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>ACK</td><td>7151</td><td>7101</td><td><span><span>cwndA→8 MSS\text{cwnd}_A \rightarrow 8\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span></td></tr><tr><td></td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>ACK</td><td>7101</td><td>7151</td><td><span><span>cwndB→8 MSS\text{cwnd}_B \rightarrow 8\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>（达上限）</td></tr><tr><td>RTT 4</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>数据 (8 段)</td><td><span><span>7101∼151007101 \sim 15100</span><span><span><span></span><span>7101</span><span></span><span>∼</span><span></span></span><span><span></span><span>15100</span></span></span></span></td><td>7151</td><td><span><span>cwndA=8\text{cwnd}_A = 8</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>8</span></span></span></span>，累计已发 15 MSS</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>数据 (1 段)</td><td><span><span>7151∼81507151 \sim 8150</span><span><span><span></span><span>7151</span><span></span><span>∼</span><span></span></span><span><span></span><span>8150</span></span></span></span></td><td>7101</td><td>B 发送最后 1 MSS，全部发完！</td></tr><tr><td></td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>ACK</td><td>15101</td><td>8151</td><td>A 确认 B 的所有数据</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>ACK</td><td>8151</td><td>15101</td><td><span><span>cwndA→16 MSS\text{cwnd}_A \rightarrow 16\text{ MSS}</span><span><span><span></span><span><span><span>cwnd</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>16</span><span><span> MSS</span></span></span></span></span>（达上限）</td></tr><tr><td>挥手 1</td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>FIN, ACK</td><td>8151</td><td>15101</td><td>B 率先发完，发起 FIN（消耗 1 序号）</td></tr><tr><td>挥手 2</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>ACK</td><td>15101</td><td>8152</td><td>A 确认 B 的 FIN，进入半关闭</td></tr><tr><td>RTT 5</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>数据 (1 段)</td><td><span><span>15101∼1610015101 \sim 16100</span><span><span><span></span><span>15101</span><span></span><span>∼</span><span></span></span><span><span></span><span>16100</span></span></span></span></td><td>8152</td><td>A 发送最后剩余的 1 MSS，全部发完</td></tr><tr><td></td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>ACK</td><td>8152</td><td>16101</td><td>B 确认 A 的最后数据</td></tr><tr><td>挥手 3</td><td>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B</td><td>FIN, ACK</td><td>16101</td><td>8152</td><td>A 发完，发起 FIN（消耗 1 序号）</td></tr><tr><td>挥手 4</td><td>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A</td><td>ACK</td><td>8152</td><td>16102</td><td>B 确认 A 的 FIN，完全断开</td></tr></tbody></table></section></section><section><h3>TCP 模型 2：慢开始，拥塞避免，快重传，快恢复<a href="#tcp-模型-2慢开始拥塞避免快重传快恢复"><span>#</span></a></h3><p>初始设定。</p><ol>
<li>连接与角色：
<ul>
<li>由 A 向 B 发起 TCP 连接，本模型为单边数据传输（A 传输数据给 B，B 仅回复确认 ACK，不发送应用层数据）。</li>
<li>A 端初始序号 <span><span>ISNA=100\text{ISN}_A = 100</span><span><span><span></span><span><span><span>ISN</span></span><span><span><span><span><span><span></span><span><span>A</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>100</span></span></span></span>，<span><span>MSS=1000 字节\text{MSS} = 1000\text{ 字节}</span><span><span><span></span><span><span>MSS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1000</span><span><span> </span><span>字节</span></span></span></span></span>。</li>
<li>B 端初始序号 <span><span>ISNB=500\text{ISN}_B = 500</span><span><span><span></span><span><span><span>ISN</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>500</span></span></span></span>。</li>
</ul>
</li>
<li>窗口与控制参数：
<ul>
<li>A 端初始拥塞窗口：<span><span>cwnd=1 MSS=1000 字节\text{cwnd} = 1\text{ MSS} = 1000\text{ 字节}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1000</span><span><span> </span><span>字节</span></span></span></span></span>；</li>
<li>A 端初始慢开始门限：<span><span>ssthresh=8 MSS\text{ssthresh} = 8\text{ MSS}</span><span><span><span></span><span><span>ssthresh</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>；</li>
<li>B 端接收窗口：设 B 端应用层及时读取缓冲区，<span><span>rwndB\text{rwnd}_B</span><span><span><span></span><span><span><span>rwnd</span></span><span><span><span><span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 恒为 <span><span>32 MSS32\text{ MSS}</span><span><span><span></span><span>32</span><span><span> MSS</span></span></span></span></span>（接收窗口极大，确保发送窗口完全受拥塞控制约束：<span><span>swnd=cwnd\text{swnd} = \text{cwnd}</span><span><span><span></span><span><span>swnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>cwnd</span></span></span></span></span>）；</li>
<li>A 端计划发送的总数据量为 <span><span>24 MSS=24000 字节24\text{ MSS} = 24000\text{ 字节}</span><span><span><span></span><span>24</span><span><span> MSS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>24000</span><span><span> </span><span>字节</span></span></span></span></span>。</li>
</ul>
</li>
<li>异常事件注入（触发快重传/快恢复）：
<ul>
<li>在 A 越过门限进入“拥塞避免”阶段后，传输至第 11 个报文段（数据字节序号 <span><span>[10101∼11000][10101 \sim 11000]</span><span><span><span></span><span>[</span><span>10101</span><span></span><span>∼</span><span></span></span><span><span></span><span>11000</span><span>]</span></span></span></span>）时在信道中意外丢失；</li>
<li>随后的报文正常到达 B，B 收到失序报文后立刻产生重复 ACK（Duplicate ACK）；</li>
<li>收到第 3 个冗余 ACK 时，A 触发快重传补发丢失段，并执行 TCP Reno 快恢复。</li>
</ul>
</li>
<li>终止规则：
<ul>
<li>A 端传输完毕所有数据后，率先向 B 发送 <span><span>FIN\text{FIN}</span><span><span><span></span><span><span>FIN</span></span></span></span></span> 报文，执行连接释放。</li>
</ul>
</li>
</ol><section><h4>TCP 模型 2 流程分析<a href="#tcp-模型-2-流程分析"><span>#</span></a></h4><ol>
<li>慢开始（<span><span>cwnd&lt;ssthresh\text{cwnd} &lt; \text{ssthresh}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>ssthresh</span></span></span></span></span>）：
<ul>
<li>初始 <span><span>cwnd=1\text{cwnd} = 1</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>。每经过 1 个 RTT，<span><span>cwnd\text{cwnd}</span><span><span><span></span><span><span>cwnd</span></span></span></span></span> 指数翻倍：<span><span>1→2→4→81 \rightarrow 2 \rightarrow 4 \rightarrow 8</span><span><span><span></span><span>1</span><span></span><span>→</span><span></span></span><span><span></span><span>2</span><span></span><span>→</span><span></span></span><span><span></span><span>4</span><span></span><span>→</span><span></span></span><span><span></span><span>8</span></span></span></span>。</li>
<li>前 3 轮累积发送：<span><span>1+2+4=7 MSS1 + 2 + 4 = 7\text{ MSS}</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>4</span><span></span><span>=</span><span></span></span><span><span></span><span>7</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
<li>转折点（<span><span>cwnd=ssthresh=8 MSS\text{cwnd} = \text{ssthresh} = 8\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>ssthresh</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>）：
<ul>
<li>第 4 轮发送 8 个报文（报文 8 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> 15）。此时达到门限，随后切换为拥塞避免。</li>
<li>此时在第 4 轮中，设第 11 个报文（序号 <span><span>[10101∼11000][10101 \sim 11000]</span><span><span><span></span><span>[</span><span>10101</span><span></span><span>∼</span><span></span></span><span><span></span><span>11000</span><span>]</span></span></span></span>）发生丢失！</li>
</ul>
</li>
<li>快重传与快恢复（收到 3 个 Duplicate ACK）：
<ul>
<li>报文 12, 13, 14, 15 到达 B 端，因中间空缺报文 11，B 连续回复 4 个 <span><span>ack=10101\text{ack} = 10101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span></span></span></span>（1 个正常确认 + 3 个冗余确认）。</li>
<li>A 收到第 3 个冗余确认，断定报文 11 丢失：
<ul>
<li>快重传：立即重传报文 11；</li>
<li>快恢复（Reno）：
<ul>
<li>调整门限：<span><span>ssthresh=⌊cwnd/2⌋=⌊8/2⌋=4 MSS\text{ssthresh} = \lfloor\text{cwnd} / 2\rfloor = \lfloor 8 / 2 \rfloor = 4\text{ MSS}</span><span><span><span></span><span><span>ssthresh</span></span><span></span><span>=</span><span></span></span><span><span></span><span>⌊</span><span><span>cwnd</span></span><span>/2</span><span>⌋</span><span></span><span>=</span><span></span></span><span><span></span><span>⌊</span><span>8/2</span><span>⌋</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>；</li>
<li>设置新窗口：<span><span>cwnd=ssthresh+3 MSS=7 MSS\text{cwnd} = \text{ssthresh} + 3\text{ MSS} = 7\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>ssthresh</span></span><span></span><span>+</span><span></span></span><span><span></span><span>3</span><span><span> MSS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7</span><span><span> MSS</span></span></span></span></span>；</li>
<li>收到重传报文 11 的累计确认后，退出快恢复，设置 <span><span>cwnd=ssthresh=4 MSS\text{cwnd} = \text{ssthresh} = 4\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>ssthresh</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>，重新进入拥塞避免（加法增大）。</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>恢复后的拥塞避免与传输完成：
<ul>
<li>从 <span><span>cwnd=4\text{cwnd} = 4</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span> 开始线性递增，把剩余的数据发完，直至总计发满 <span><span>24 MSS24\text{ MSS}</span><span><span><span></span><span>24</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
</ol></section><section><h4>第一阶段：三次握手<a href="#第一阶段三次握手"><span>#</span></a></h4><ol>
<li>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B：<span><span>SYN=1,seq=100\text{SYN} = 1, \text{seq} = 100</span><span><span><span></span><span><span>SYN</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>100</span></span></span></span>，宣告 <span><span>MSS=1000\text{MSS} = 1000</span><span><span><span></span><span><span>MSS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1000</span></span></span></span>。A 状态 <span><span>→SYN_SENT\rightarrow \text{SYN\_SENT}</span><span><span><span></span><span>→</span><span></span></span><span><span></span><span><span>SYN_SENT</span></span></span></span></span>。</li>
<li>B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A：<span><span>SYN=1,ACK=1,seq=500,ack=101,win=32000\text{SYN} = 1, \text{ACK} = 1, \text{seq} = 500, \text{ack} = 101, \text{win} = 32000</span><span><span><span></span><span><span>SYN</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>500</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>101</span><span>,</span><span></span><span><span>win</span></span><span></span><span>=</span><span></span></span><span><span></span><span>32000</span></span></span></span>。B 状态 <span><span>→SYN_RCVD\rightarrow \text{SYN\_RCVD}</span><span><span><span></span><span>→</span><span></span></span><span><span></span><span><span>SYN_RCVD</span></span></span></span></span>。</li>
<li>A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B：<span><span>ACK=1,seq=101,ack=501\text{ACK} = 1, \text{seq} = 101, \text{ack} = 501</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>101</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>501</span></span></span></span>。连接建立，进入 <span><span>ESTABLISHED\text{ESTABLISHED}</span><span><span><span></span><span><span>ESTABLISHED</span></span></span></span></span>。
<ul>
<li>初始变量：<span><span>cwnd=1 MSS\text{cwnd} = 1\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span><span> MSS</span></span></span></span></span>，<span><span>ssthresh=8 MSS\text{ssthresh} = 8\text{ MSS}</span><span><span><span></span><span><span>ssthresh</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
</ol></section><section><h4>第二阶段：慢开始阶段（RTT 1 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> RTT 3）<a href="#第二阶段慢开始阶段rtt-1-sim-rtt-3"><span>#</span></a></h4><ul>
<li>【RTT 1】（<span><span>cwnd=1\text{cwnd} = 1</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>）
<ul>
<li>A 发送报文 1：<span><span>seq=101∼1100\text{seq} = 101 \sim 1100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>101</span><span></span><span>∼</span><span></span></span><span><span></span><span>1100</span></span></span></span>（长 1000）。</li>
<li>B 回复确认：<span><span>ACK=1,ack=1101\text{ACK} = 1, \text{ack} = 1101</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1101</span></span></span></span>。</li>
<li>A 收到 ACK，<span><span>cwnd\text{cwnd}</span><span><span><span></span><span><span>cwnd</span></span></span></span></span> 翻倍：<span><span>cwnd=1×2=2 MSS\text{cwnd} = 1 \times 2 = 2\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>×</span><span></span></span><span><span></span><span>2</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
<li>【RTT 2】（<span><span>cwnd=2\text{cwnd} = 2</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span></span></span></span>）
<ul>
<li>A 发送报文 2、3：<span><span>seq=1101∼3100\text{seq} = 1101 \sim 3100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1101</span><span></span><span>∼</span><span></span></span><span><span></span><span>3100</span></span></span></span>。</li>
<li>B 回复确认：<span><span>ACK=1,ack=3101\text{ACK} = 1, \text{ack} = 3101</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>3101</span></span></span></span>。</li>
<li>A 收到 ACK，<span><span>cwnd\text{cwnd}</span><span><span><span></span><span><span>cwnd</span></span></span></span></span> 翻倍：<span><span>cwnd=2×2=4 MSS\text{cwnd} = 2 \times 2 = 4\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span></span><span>×</span><span></span></span><span><span></span><span>2</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
<li>【RTT 3】（<span><span>cwnd=4\text{cwnd} = 4</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span></span></span></span>）
<ul>
<li>A 发送报文 4 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> 7：<span><span>seq=3101∼7100\text{seq} = 3101 \sim 7100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>3101</span><span></span><span>∼</span><span></span></span><span><span></span><span>7100</span></span></span></span>。</li>
<li>B 回复确认：<span><span>ACK=1,ack=7101\text{ACK} = 1, \text{ack} = 7101</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7101</span></span></span></span>。</li>
<li>A 收到 ACK，<span><span>cwnd\text{cwnd}</span><span><span><span></span><span><span>cwnd</span></span></span></span></span> 翻倍：<span><span>cwnd=4×2=8 MSS\text{cwnd} = 4 \times 2 = 8\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span></span><span>×</span><span></span></span><span><span></span><span>2</span><span></span><span>=</span><span></span></span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>。</li>
<li>状态迁移判断：<span><span>cwnd=ssthresh=8 MSS\text{cwnd} = \text{ssthresh} = 8\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>ssthresh</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>，慢开始结束，下一轮进入拥塞避免！</li>
</ul>
</li>
</ul></section><section><h4>第三阶段：丢包与快重传、快恢复（RTT 4）<a href="#第三阶段丢包与快重传快恢复rtt-4"><span>#</span></a></h4><ul>
<li>
<p>【RTT 4 发送】（此时 <span><span>cwnd=8\text{cwnd} = 8</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8</span></span></span></span>）
A 连续发送 8 个数据段（报文 8 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> 15），序号区间 <span><span>[7101,15100][7101, 15100]</span><span><span><span></span><span>[</span><span>7101</span><span>,</span><span></span><span>15100</span><span>]</span></span></span></span>：</p>
<ul>
<li>报文 8: <span><span>seq=7101∼8100\text{seq} = 7101 \sim 8100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7101</span><span></span><span>∼</span><span></span></span><span><span></span><span>8100</span></span></span></span>（成功）</li>
<li>报文 9: <span><span>seq=8101∼9100\text{seq} = 8101 \sim 9100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>8101</span><span></span><span>∼</span><span></span></span><span><span></span><span>9100</span></span></span></span>（成功）</li>
<li>报文 10: <span><span>seq=9101∼10100\text{seq} = 9101 \sim 10100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>9101</span><span></span><span>∼</span><span></span></span><span><span></span><span>10100</span></span></span></span>（成功）</li>
<li>报文 11: <span><span>seq=10101∼11000\text{seq} = 10101 \sim 11000</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span><span></span><span>∼</span><span></span></span><span><span></span><span>11000</span></span></span></span> <span><span>⟶\longrightarrow</span><span><span><span></span><span>⟶</span></span></span></span> 【在网络中不幸丢失！】</li>
<li>报文 12: <span><span>seq=1101∼12000\text{seq} = 1101 \sim 12000</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1101</span><span></span><span>∼</span><span></span></span><span><span></span><span>12000</span></span></span></span>（成功到达，失序）</li>
<li>报文 13: <span><span>seq=12101∼13000\text{seq} = 12101 \sim 13000</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>12101</span><span></span><span>∼</span><span></span></span><span><span></span><span>13000</span></span></span></span>（成功到达，失序）</li>
<li>报文 14: <span><span>seq=13101∼14000\text{seq} = 13101 \sim 14000</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>13101</span><span></span><span>∼</span><span></span></span><span><span></span><span>14000</span></span></span></span>（成功到达，失序）</li>
<li>报文 15: <span><span>seq=14101∼15100\text{seq} = 14101 \sim 15100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>14101</span><span></span><span>∼</span><span></span></span><span><span></span><span>15100</span></span></span></span>（成功到达，失序）</li>
</ul>
</li>
<li>
<p>【B 端的响应与冗余 ACK】：</p>
<ul>
<li>报文 8, 9, 10 顺利到达，B 发送正常累计确认：<span><span>ack=10101\text{ack} = 10101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span></span></span></span>。</li>
<li>收到失序的报文 12 <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B 产生第 1 个冗余 ACK：<span><span>ack=10101\text{ack} = 10101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span></span></span></span>。</li>
<li>收到失序的报文 13 <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B 产生第 2 个冗余 ACK：<span><span>ack=10101\text{ack} = 10101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span></span></span></span>。</li>
<li>收到失序的报文 14 <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B 产生第 3 个冗余 ACK：<span><span>ack=10101\text{ack} = 10101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span></span></span></span>！</li>
</ul>
</li>
<li>
<p>【快重传与快恢复执行（TCP Reno）】：</p>
<ol>
<li>A 连续收到第 3 个重复的 <span><span>ack=10101\text{ack} = 10101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span></span></span></span>：
<ul>
<li>快重传触发：A 判定报文 11 丢失，不等待重传计时器超时，立即重新发送报文 11（<span><span>seq=10101∼11000\text{seq} = 10101 \sim 11000</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span><span></span><span>∼</span><span></span></span><span><span></span><span>11000</span></span></span></span>）！</li>
</ul>
</li>
<li>执行快恢复算法：
<ul>
<li>门限折半：<span><span>ssthresh=⌊cwnd/2⌋=⌊8/2⌋=4 MSS\text{ssthresh} = \lfloor\text{cwnd} / 2\rfloor = \lfloor 8 / 2 \rfloor = 4\text{ MSS}</span><span><span><span></span><span><span>ssthresh</span></span><span></span><span>=</span><span></span></span><span><span></span><span>⌊</span><span><span>cwnd</span></span><span>/2</span><span>⌋</span><span></span><span>=</span><span></span></span><span><span></span><span>⌊</span><span>8/2</span><span>⌋</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>。</li>
<li>窗口膨胀：<span><span>cwnd=ssthresh+3 MSS=7 MSS\text{cwnd} = \text{ssthresh} + 3\text{ MSS} = 7\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>ssthresh</span></span><span></span><span>+</span><span></span></span><span><span></span><span>3</span><span><span> MSS</span></span><span></span><span>=</span><span></span></span><span><span></span><span>7</span><span><span> MSS</span></span></span></span></span>。</li>
<li>A 随后收到失序报文 15 激发的第 4 个冗余 ACK，<span><span>cwnd\text{cwnd}</span><span><span><span></span><span><span>cwnd</span></span></span></span></span> 临时增加为 <span><span>8 MSS8\text{ MSS}</span><span><span><span></span><span>8</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
<li>确认到达与退出快恢复：
<ul>
<li>B 端收到重传成功的报文 11，加上之前已在接收缓存中排队的报文 12 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> 15，所有空洞被填满！</li>
<li>B 发送累积确认：<span><span>ACK=1,ack=15101\text{ACK} = 1, \text{ack} = 15101</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>15101</span></span></span></span>！</li>
<li>A 收到该新确认，快恢复结束：设定 <span><span>cwnd=ssthresh=4 MSS\text{cwnd} = \text{ssthresh} = 4\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>ssthresh</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>，重新切回拥塞避免阶段（加法增大）。</li>
</ul>
</li>
</ol>
</li>
</ul></section><section><h4>第四阶段：重回拥塞避免并完成剩余传输（RTT 5 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> RTT 6）<a href="#第四阶段重回拥塞避免并完成剩余传输rtt-5-sim-rtt-6"><span>#</span></a></h4><p>目前 A 已成功发送并确认了 15 个报文段（共 <span><span>15000 字节15000\text{ 字节}</span><span><span><span></span><span>15000</span><span><span> </span><span>字节</span></span></span></span></span>），还剩 <span><span>24−15=9 MSS24 - 15 = 9\text{ MSS}</span><span><span><span></span><span>24</span><span></span><span>−</span><span></span></span><span><span></span><span>15</span><span></span><span>=</span><span></span></span><span><span></span><span>9</span><span><span> MSS</span></span></span></span></span> 需发送。</p><ul>
<li>
<p>【RTT 5】（拥塞避免：<span><span>cwnd=4 MSS\text{cwnd} = 4\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> MSS</span></span></span></span></span>）</p>
<ul>
<li>A 发送 4 个报文（报文 16 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> 19）：<span><span>seq=15101∼19100\text{seq} = 15101 \sim 19100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>15101</span><span></span><span>∼</span><span></span></span><span><span></span><span>19100</span></span></span></span>。</li>
<li>B 回复累计确认：<span><span>ack=19101\text{ack} = 19101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>19101</span></span></span></span>。</li>
<li>A 经历 1 个 RTT，拥塞窗口加法递增：<span><span>cwnd=4+1=5 MSS\text{cwnd} = 4 + 1 = 5\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>5</span><span><span> MSS</span></span></span></span></span>。</li>
<li>累计已发：<span><span>15+4=19 MSS15 + 4 = 19\text{ MSS}</span><span><span><span></span><span>15</span><span></span><span>+</span><span></span></span><span><span></span><span>4</span><span></span><span>=</span><span></span></span><span><span></span><span>19</span><span><span> MSS</span></span></span></span></span>，还剩 <span><span>24−19=5 MSS24 - 19 = 5\text{ MSS}</span><span><span><span></span><span>24</span><span></span><span>−</span><span></span></span><span><span></span><span>19</span><span></span><span>=</span><span></span></span><span><span></span><span>5</span><span><span> MSS</span></span></span></span></span>。</li>
</ul>
</li>
<li>
<p>【RTT 6】（拥塞避免：<span><span>cwnd=5 MSS\text{cwnd} = 5\text{ MSS}</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span>5</span><span><span> MSS</span></span></span></span></span>）</p>
<ul>
<li>A 发送剩余的最后 5 个报文（报文 20 <span><span>∼\sim</span><span><span><span></span><span>∼</span></span></span></span> 24）：<span><span>seq=19101∼24100\text{seq} = 19101 \sim 24100</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>19101</span><span></span><span>∼</span><span></span></span><span><span></span><span>24100</span></span></span></span>。</li>
<li>B 回复累计确认：<span><span>ack=24101\text{ack} = 24101</span><span><span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>24101</span></span></span></span>。</li>
<li>A 计划发送的 24000 字节数据全部传输完毕且已被全部确认！</li>
</ul>
</li>
</ul></section><section><h4>第五阶段：四次挥手（A 率先断开）<a href="#第五阶段四次挥手a-率先断开"><span>#</span></a></h4><p>因为是 A 单向传输数据且已全部发完，由 A 率先发起 <span><span>FIN\text{FIN}</span><span><span><span></span><span><span>FIN</span></span></span></span></span>：</p><ol>
<li>挥手 1（A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B）：A 发起断开
<ul>
<li>标志位：<span><span>FIN=1,ACK=1,seq=24101,ack=501\text{FIN} = 1, \text{ACK} = 1, \text{seq} = 24101, \text{ack} = 501</span><span><span><span></span><span><span>FIN</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>24101</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>501</span></span></span></span></li>
<li>状态：A 进入 <span><span>FIN_WAIT_1\text{FIN\_WAIT\_1}</span><span><span><span></span><span><span>FIN_WAIT_1</span></span></span></span></span>。</li>
</ul>
</li>
<li>挥手 2（B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A）：B 确认断开请求
<ul>
<li>标志位：<span><span>ACK=1,seq=501,ack=24102\text{ACK} = 1, \text{seq} = 501, \text{ack} = 24102</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>501</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>24102</span></span></span></span></li>
<li>状态：B 进入 <span><span>CLOSE_WAIT\text{CLOSE\_WAIT}</span><span><span><span></span><span><span>CLOSE_WAIT</span></span></span></span></span>，A 收到后进入 <span><span>FIN_WAIT_2\text{FIN\_WAIT\_2}</span><span><span><span></span><span><span>FIN_WAIT_2</span></span></span></span></span>。</li>
</ul>
</li>
<li>挥手 3（B <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> A）：B 无数据发送，直接发送关闭
<ul>
<li>标志位：<span><span>FIN=1,ACK=1,seq=501,ack=24102\text{FIN} = 1, \text{ACK} = 1, \text{seq} = 501, \text{ack} = 24102</span><span><span><span></span><span><span>FIN</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>501</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>24102</span></span></span></span></li>
<li>状态：B 进入 <span><span>LAST_ACK\text{LAST\_ACK}</span><span><span><span></span><span><span>LAST_ACK</span></span></span></span></span>。</li>
</ul>
</li>
<li>挥手 4（A <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> B）：A 确认关闭
<ul>
<li>标志位：<span><span>ACK=1,seq=24102,ack=502\text{ACK} = 1, \text{seq} = 24102, \text{ack} = 502</span><span><span><span></span><span><span>ACK</span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>24102</span><span>,</span><span></span><span><span>ack</span></span><span></span><span>=</span><span></span></span><span><span></span><span>502</span></span></span></span></li>
<li>状态：A 进入 <span><span>TIME_WAIT\text{TIME\_WAIT}</span><span><span><span></span><span><span>TIME_WAIT</span></span></span></span></span>，倒计时 <span><span>2MSL2\text{MSL}</span><span><span><span></span><span>2</span><span><span>MSL</span></span></span></span></span>；B 收到后立即进入 <span><span>CLOSED\text{CLOSED}</span><span><span><span></span><span><span>CLOSED</span></span></span></span></span>！</li>
</ul>
</li>
</ol></section><section><h4>TCP 模型 2 全过程<a href="#tcp-模型-2-全过程"><span>#</span></a></h4>

<table><thead><tr><th>阶段 / 事件</th><th>发送方 <span><span>cwnd\text{cwnd}</span><span><span><span></span><span><span>cwnd</span></span></span></span></span></th><th>门限 <span><span>ssthresh\text{ssthresh}</span><span><span><span></span><span><span>ssthresh</span></span></span></span></span></th><th>传输数据 <span><span>seq\text{seq}</span><span><span><span></span><span><span>seq</span></span></span></span></span> 范围</th><th>接收方确认 <span><span>ack\text{ack}</span><span><span><span></span><span><span>ack</span></span></span></span></span></th><th>核心状态及机制说明</th></tr></thead><tbody><tr><td>握手建立</td><td>1</td><td>8</td><td>-</td><td>-</td><td>三次握手完成，进入慢开始</td></tr><tr><td>RTT 1</td><td><span><span>1→21 \rightarrow 2</span><span><span><span></span><span>1</span><span></span><span>→</span><span></span></span><span><span></span><span>2</span></span></span></span></td><td>8</td><td><span><span>101∼1100101 \sim 1100</span><span><span><span></span><span>101</span><span></span><span>∼</span><span></span></span><span><span></span><span>1100</span></span></span></span></td><td>1101</td><td>慢开始：指数增长</td></tr><tr><td>RTT 2</td><td><span><span>2→42 \rightarrow 4</span><span><span><span></span><span>2</span><span></span><span>→</span><span></span></span><span><span></span><span>4</span></span></span></span></td><td>8</td><td><span><span>1101∼31001101 \sim 3100</span><span><span><span></span><span>1101</span><span></span><span>∼</span><span></span></span><span><span></span><span>3100</span></span></span></span></td><td>3101</td><td>慢开始：指数增长</td></tr><tr><td>RTT 3</td><td><span><span>4→84 \rightarrow 8</span><span><span><span></span><span>4</span><span></span><span>→</span><span></span></span><span><span></span><span>8</span></span></span></span></td><td>8</td><td><span><span>3101∼71003101 \sim 7100</span><span><span><span></span><span>3101</span><span></span><span>∼</span><span></span></span><span><span></span><span>7100</span></span></span></span></td><td>7101</td><td>达门限，切入拥塞避免</td></tr><tr><td>RTT 4</td><td>8</td><td>8</td><td><span><span>7101∼151007101 \sim 15100</span><span><span><span></span><span>7101</span><span></span><span>∼</span><span></span></span><span><span></span><span>15100</span></span></span></span></td><td>-</td><td>报文 11 丢失（<span><span>seq=10101\text{seq}=10101</span><span><span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>10101</span></span></span></span>）</td></tr><tr><td>冗余确认</td><td>8</td><td>8</td><td>-</td><td>10101 (重复 3 次)</td><td>报文 12~14 触发 3 个 Dup ACK</td></tr><tr><td>快重传</td><td>8</td><td>4</td><td>重传 <span><span>10101∼1100010101 \sim 11000</span><span><span><span></span><span>10101</span><span></span><span>∼</span><span></span></span><span><span></span><span>11000</span></span></span></span></td><td>-</td><td>立即补发报文 11，不等待超时</td></tr><tr><td>快恢复 (Reno)</td><td><span><span>7→87 \rightarrow 8</span><span><span><span></span><span>7</span><span></span><span>→</span><span></span></span><span><span></span><span>8</span></span></span></span></td><td>4</td><td>-</td><td>-</td><td><span><span>cwnd=ssthresh+3\text{cwnd} = \text{ssthresh} + 3</span><span><span><span></span><span><span>cwnd</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>ssthresh</span></span><span></span><span>+</span><span></span></span><span><span></span><span>3</span></span></span></span> 临时膨胀</td></tr><tr><td>退出快恢复</td><td>4</td><td>4</td><td>-</td><td>15101</td><td>累积确认到达，切回拥塞避免</td></tr><tr><td>RTT 5</td><td><span><span>4→54 \rightarrow 5</span><span><span><span></span><span>4</span><span></span><span>→</span><span></span></span><span><span></span><span>5</span></span></span></span></td><td>4</td><td><span><span>15101∼1910015101 \sim 19100</span><span><span><span></span><span>15101</span><span></span><span>∼</span><span></span></span><span><span></span><span>19100</span></span></span></span></td><td>19101</td><td>拥塞避免：加法增大（+1）</td></tr><tr><td>RTT 6</td><td><span><span>5→65 \rightarrow 6</span><span><span><span></span><span>5</span><span></span><span>→</span><span></span></span><span><span></span><span>6</span></span></span></span></td><td>4</td><td><span><span>19101∼2410019101 \sim 24100</span><span><span><span></span><span>19101</span><span></span><span>∼</span><span></span></span><span><span></span><span>24100</span></span></span></span></td><td>24101</td><td>全部发完，加法增大</td></tr><tr><td>挥手 1</td><td>-</td><td>-</td><td><span><span>FIN,seq=24101\text{FIN}, \text{seq}=24101</span><span><span><span></span><span><span>FIN</span></span><span>,</span><span></span><span><span>seq</span></span><span></span><span>=</span><span></span></span><span><span></span><span>24101</span></span></span></span></td><td>501</td><td>A 发起连接终止</td></tr><tr><td>挥手 2~4</td><td>-</td><td>-</td><td>-</td><td>24102 / 502</td><td>B 确认并挥手，A 确认，全流程结束</td></tr></tbody></table></section></section></section>
<section><h2>应用层<a href="#应用层"><span>#</span></a></h2><section><h3>应用层 - 考纲<a href="#应用层---考纲"><span>#</span></a></h3><ul>
<li>网络应用模型
<ul>
<li>客户端/服务端模型</li>
<li>P2P 模型</li>
</ul>
</li>
<li>DNS 系统
<ul>
<li>层次域名空间</li>
<li>域名服务器</li>
<li>域名解析过程</li>
</ul>
</li>
<li>文件传输协议 FTP
<ul>
<li>FTP 的工作原理</li>
<li>控制连接与数据连接</li>
</ul>
</li>
<li>电子邮件
<ul>
<li>电子邮件系统的组成与结构</li>
<li>电子邮件格式与 MIME</li>
<li>SMTP 与 POP3</li>
</ul>
</li>
<li>万维网 WWW
<ul>
<li>WWW 的概念与组成结构</li>
<li>HTTP</li>
</ul>
</li>
</ul></section><section><h3>网络应用模型<a href="#网络应用模型"><span>#</span></a></h3><section><h4>客户端/服务端模型<a href="#客户端服务端模型"><span>#</span></a></h4><p>客户端主动发起请求，服务端被动等待并响应，服务端要一直在线，有固定的地址和端口。</p><p>好处是集中管理、便于计费和安全控制；坏处是服务端容易成为瓶颈和单点故障。</p></section><section><h4>P2P 模型<a href="#p2p-模型"><span>#</span></a></h4><p>每个节点既是客户端又是服务端，可以直接交换数据，不需要中心服务器。</p><p>好处是扩展性好，节点越多总带宽越大；坏处是管理困难、内容难以管控、节点行为不可靠。</p><p>需要注意，P2P 里没有固定的服务端角色，一个节点可以同时对别人提供服务，也可以同时向别人请求服务。</p></section></section><section><h3>dns<a href="#dns"><span>#</span></a></h3><p>常用于 53 端口，采用 UDP。</p><section><h4>域名服务器层级<a href="#域名服务器层级"><span>#</span></a></h4><p>基于 blog.attilio.cc 为例。</p><ul>
<li>. 为根域名服务器，一般省略</li>
<li>.cc 为顶级域名服务器</li>
<li>.attilio.cc 为权限域名服务器</li>
</ul><p>可能设置多个权限域名服务器，例如在这里也可以把 blog 也设置为权限域名服务器。</p><p>一般做最坏例的讨论。</p></section><section><h4>迭代查询<a href="#迭代查询"><span>#</span></a></h4><p>如果前面有 <code>www</code>，忽略之，目标域名为 <code>blog.attilio.cc</code>。</p><p>首先考虑单权限域名服务器的情况（假设整个二级域及其子域都统一由一台权限域名服务器管理，不进行子域委派）：</p><p>本机向本地域名服务器发起递归查询，委托其代为打听；本地域名服务器在本地无缓存的情况下，对外进行迭代查询：</p><ol>
<li>本地域名服务器向根域名服务器发送请求，根域名服务器收到请求后，发现这是 <code>.cc</code> 结尾的域名，返回 <code>.cc</code> 顶级域名服务器 的 IP 地址；</li>
<li>本地域名服务器向 <code>.cc</code> 顶级域名服务器发送请求，<code>.cc</code> 顶级域名服务器收到请求后，发现这是 <code>attilio.cc</code> 的域，返回 <code>attilio.cc</code> 权限域名服务器 的 IP 地址；</li>
<li>本地域名服务器向 <code>attilio.cc</code> 权限域名服务器发送请求，<code>attilio.cc</code> 权限域名服务器收到请求后，由于没有单独设立下一级子域服务器，它直接在内部记录中查到了 <code>blog</code> 的主机映射，直接返回 <code>blog.attilio.cc</code> 对应的最终 IP 地址。</li>
</ol><p>本地域名服务器对外进行了 3 次迭代查询；</p><p>本机自身只向本地域名服务器发送了 1 次查询请求；</p><p>整个解析流程在网络上一共产生了 4 个查询报文（本机 1 次 + 本地 DNS 3 次），最终成功得到 <code>blog.attilio.cc</code> 的 IP 地址。</p><p>然而，如果是最坏情况，也就是存在子域委派，那么就需要进行更多的查询。</p><p>修改 3，本地域名服务器向 <code>attilio.cc</code> 权限域名服务器发送请求，<code>attilio.cc</code> 权限域名服务器收到请求后，发现 <code>blog</code> 是子域，所以委派给 <code>blog</code> 权限域名服务器，返回 <code>blog</code> 权限域名服务器的 IP 地址；</p><p>增加 4，本地域名服务器向 <code>blog</code> 权限域名服务器发送请求，<code>blog</code> 权限域名服务器收到请求后，查询到 <code>blog.attilio.cc</code> 的 IP 地址，返回。</p><p>综上，要辨析清楚返回的是 DNS 服务器的 IP 地址还是对应解析的 IP 地址。</p></section><section><h4>递归查询<a href="#递归查询"><span>#</span></a></h4><p>对于递归查询和上述类似的，只不过变成老大亲自去跑腿，本地域名服务器只需要发一次即可。</p><p>不过需要注意的是，递归查询和迭代查询是可以随时替换的，例如整条链路可能一部分是递归，一部分是迭代，不一定是课本标准模型里那样。</p><p>比如说，顶级域名服务器采用递归查询，而权限域名服务器使用迭代查询等。</p></section></section><section><h3>ftp<a href="#ftp"><span>#</span></a></h3><p>名称：文件传输协议（File Transfer Protocol），基于 TCP 的客户端/服务器（C/S）模型。</p><p>核心特征：带外（Out-of-band）控制，即控制信息和实际数据分别在两条不同的 TCP 连接中传输。</p><section><h4>两个端口与两条连接<a href="#两个端口与两条连接"><span>#</span></a></h4><p>控制连接（端口 21）：
用于传输客户端的用户名、密码、各种操作命令（如 PUT、GET、LS）以及服务器的应答状态码。</p><p>生命周期：在整个 FTP 会话期间一直保持打开状态，直到用户退出登录。</p><p>数据连接（端口 20 或随机高位端口）：
用于实际传输文件内容、目录列表等数据。</p><p>生命周期：每次有数据传输需求时才临时建立，传输完毕后立即关闭。</p></section><section><h4>两种工作模式（谁连谁、用不用 20 端口的本质区别）<a href="#两种工作模式谁连谁用不用-20-端口的本质区别"><span>#</span></a></h4><p>主动模式（PORT 模式，服务器主动找客户端）：
控制连接：客户端随机选择端口 N，连接服务器的 21 端口。</p><p>客户端通知：客户端在本地监听端口 N+1，并通过控制连接向服务器发送 PORT 命令，告知服务器：“我的 IP 和端口是 N+1”。</p><p>数据连接：服务器使用固定的 20 端口，主动向客户端的 N+1 端口发起 TCP 连接。</p><p>缺陷：若客户端处于内网或开启了防火墙，服务器主动发起的连接会被客户端防火墙拦截。</p><p>被动模式（PASV 模式，客户端主动找服务器，现代主流）：</p><p>控制连接：客户端连接服务器 21 端口后，向服务器发送 PASV 命令。</p><p>服务器响应：服务器在本地开放一个临时的随机高位端口 P，并告知客户端。</p><p>数据连接：客户端主动向服务器的端口 P 发起 TCP 连接。</p><p>注意：在被动模式下，服务器的数据传输根本不用 20 端口，而是使用随机高位端口。</p></section></section><section><h3>smtp<a href="#smtp"><span>#</span></a></h3><section><h4>smtp 解析<a href="#smtp-解析"><span>#</span></a></h4><p>定位：纯文本的、基于推（Push）模式的邮件传输协议。</p><p>端口：默认明文端口 25，加密端口（SMTPS）常用 465 或 587。</p><p>机制与缺陷：
工作在 TCP 之上，客户端或源邮件服务器将邮件主动“推”送到目的邮件服务器。
致命缺陷是最初只支持传输 7 位 ASCII 码文本，不能直接传输可执行文件、图片、音频及非 ASCII 编码的文字（如汉字）。</p></section><section><h4>pop3<a href="#pop3"><span>#</span></a></h4><p>定位：基于拉（Pull）模式的邮件读取协议。</p><p>端口：默认端口 110，SSL 加密端口 995。</p><p>机制：用户代理连接到邮件服务器，将邮件下载到本地计算机阅读。</p><p>工作模式：</p><p>删除模式：从服务器拉取邮件后，立刻在服务器端删除该邮件。</p><p>保留模式：拉取到本地后，服务器端依然保留副本。缺点是不同设备间不能很好地同步已读/未读状态（后被支持双向同步的 IMAP4 取代）。</p></section><section><h4>IMAP<a href="#imap"><span>#</span></a></h4><p>定位：基于拉（Pull）模式的邮件读取协议，是 POP3 的升级替代。</p><p>端口：默认 143，SSL 加密端口 993。</p><p>和 POP3 的关键区别：邮件默认保留在服务器上，客户端只同步首部和状态，所以多设备之间的已读、未读、文件夹结构可以保持一致。</p><p>需要注意，POP3 适合“只在一台电脑上收信”的老场景，IMAP 适合手机、电脑多端同步的现代场景；两者都只负责收信，发信仍然靠 SMTP。</p></section><section><h4>mime<a href="#mime"><span>#</span></a></h4><p>定位：不是独立的传输协议，而是寄生在 SMTP 之上的内容格式扩展标准。</p><p>机制：在原有邮件首部增加了额外字段（如 MIME-Version、Content-Type、Content-Transfer-Encoding）。</p><p>作用：将非 ASCII 码的二进制数据（如图片、视频、附件、汉字）通过 Base64 或 Quoted-Printable 等编码规则，全部无损转换成普通的 7 位 ASCII 码文本，使得老旧的 SMTP 能够安全可靠地传输富文本和多媒体内容。接收端再根据 MIME 首部反向解码还原。</p></section><section><h4>http 邮件<a href="#http-邮件"><span>#</span></a></h4><p>机制：现代主流模式（如 QQ 邮箱、Gmail 网页版）。
流向与协议分工：
PC 端浏览器到源邮件服务器：使用 HTTP/HTTPS 协议（包含发送邮件和读取邮件）。</p><p>两个不同邮件服务器之间互转：依然使用传统的 SMTP 协议通过互联网中继转发。</p><p>目的邮件服务器到接收方浏览器：接收方同样使用 HTTP/HTTPS 协议登录网页拉取并阅读邮件。</p><p>优势：客户端无需安装专门的邮件客户端（如 Outlook），无需配置繁琐的 SMTP/POP3 端口，有浏览器即可收发。</p></section></section><section><h3>http<a href="#http"><span>#</span></a></h3><p>http 常用端口为 80，https 常用端口为 443。</p><p>考虑这样一个场景：内网 1 中的主机 A 需要向内网 2 中的 Web 服务器主机 B 发送一个 HTTP 请求。主机 A 首先从本地随机分配一个源端口，以源套接字 192.168.x.x&lt;11452&gt; 发送数据报，目的地址设置为内网 2 网关的公网 IP 及对应服务端口，例如 211.211.211.211&lt;80&gt;。</p><p>当数据报到达内网 1 的默认网关（NAT 路由器）时，网关将其源私网 IP 和端口转换为内网 1 自身的公网 IP 和新分配的端口，并记录到 NAT 转换表中，然后将该报文转发至公网。</p><p>公网路由将报文送达内网 2 的默认网关路由器（具有公网 IP 211.211.211.211）。该路由器通过预先配置的端口映射规则（如将外网 80 端口映射到内网主机 B 的 80 端口），将目的 IP 和端口转换为内网主机 B 的私网套接字，最终将 HTTP 请求准确投递给内网 2 中的主机 B。</p><section><h4>HTTP 报文格式<a href="#http-报文格式"><span>#</span></a></h4><p>请求报文由请求行、首部行、空行和实体主体组成，请求行是“方法 URL 版本”，例如 <code>GET /index.html HTTP/1.1</code>。</p><p>响应报文由状态行、首部行、空行和实体主体组成，状态行是“版本 状态码 短语”，例如 <code>HTTP/1.1 200 OK</code>。</p><p>常见状态码：200 成功，301 永久重定向，304 未修改（命中缓存），400 请求错误，403 禁止访问，404 未找到，500 服务器内部错误。</p><p>需要注意，HTTP 是无状态的，所以要用 Cookie 或 Session 维持登录状态；Cookie 存在客户端，Session 存在服务端。</p></section><section><h4>四种 http 形式<a href="#四种-http-形式"><span>#</span></a></h4><p>以发送 index.html（包含 5 个图像为例）</p><ol>
<li>
<p>非持续连接（无并行 / 串行）
机制：每个对象的获取都必须新建一次 TCP 连接，且传输完毕后立刻断开该连接。
过程：
获取 html 消耗 2 RTT（三次握手 1 RTT + 请求与返回 1 RTT）；
后续 5 个图像每个依次单独建连并获取，各消耗 2 RTT。
总耗时：<span><span>2+5×2=12 RTT2+5\times 2=12\text{ RTT}</span><span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>5</span><span></span><span>×</span><span></span></span><span><span></span><span>2</span><span></span><span>=</span><span></span></span><span><span></span><span>12</span><span><span> RTT</span></span></span></span></span>。</p>
</li>
<li>
<p>非持续连接（带并行 / 并发）
机制：浏览器允许同时建立多个并行的 TCP 连接（通常上限为 5 到 8 个），各自独立获取不同对象，获取后均断开。
过程：
先用 1 个连接获取 html，耗时 2 RTT；
解析出 5 个图像后，同时并发发起 5 个独立的 TCP 连接并行下载。
总耗时：<span><span>2+2=4 RTT2+2=4\text{ RTT}</span><span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span></span><span>=</span><span></span></span><span><span></span><span>4</span><span><span> RTT</span></span></span></span></span>。</p>
</li>
<li>
<p>持续非流水线连接（Persistent without Pipelining）
机制：服务器在发送响应后仍保持该 TCP 连接打开。客户端必须在收到前一个对象的响应后，才能在同一个连接上发出下一个对象的请求。
过程：
建立连接并获取 html，耗时 2 RTT；
连接不释放，依次发送第 1 到第 5 个图像的请求，每个图像在已有连接上花费 1 RTT。
总耗时：<span><span>2+5=7 RTT2+5=7\text{ RTT}</span><span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>5</span><span></span><span>=</span><span></span></span><span><span></span><span>7</span><span><span> RTT</span></span></span></span></span>。</p>
</li>
<li>
<p>持续流水线连接（Persistent with Pipelining）
机制：保持 TCP 连接不释放，客户端在收到前一个响应之前，就可以一口气连续发出后续所有对象的请求。
过程：
建立连接并获取 html，耗时 2 RTT；
解析出 5 个图像后，在同一个连接中连续发出 5 个请求，服务器顺次流水线回传全部图像，仅需 1 个往返。
总耗时：<span><span>2+1=3 RTT2+1=3\text{ RTT}</span><span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>3</span><span><span> RTT</span></span></span></span></span>。</p>
</li>
</ol></section></section><section><h3>应用层模型解析<a href="#应用层模型解析"><span>#</span></a></h3><p>以发送 http 请求 + dns + ARP + 交换机自学习 + DHCP 为例。</p><section><h4>DHCP 动态获取 IP<a href="#dhcp-动态获取-ip"><span>#</span></a></h4><ol>
<li>DHCP Discover（发现）：
<ul>
<li>主机 A 在应用层生成 DHCP 请求，封装在 UDP 数据报中（源端口 68，目的端口 67）。</li>
<li>IP 层：源 IP 为 <code>0.0.0.0</code>，目的 IP 为受限广播地址 <code>255.255.255.255</code>。</li>
<li>MAC 层：源 MAC 为主机 A 的 MAC，目的 MAC 为广播 MAC <code>FF-FF-FF-FF-FF-FF</code>。</li>
<li>交换机自学习：广播帧路过局域网交换机，交换机立刻把 <code>(主机 A 的 MAC, 入端口 1)</code> 记录到自己的 MAC 地址转发表（CAM 表）中！然后将此广播帧向除端口 1 外的所有端口泛洪（Flooding）。</li>
</ul>
</li>
<li>DHCP Offer（提供）：
<ul>
<li>局域网内的 DHCP 服务器（通常由默认网关路由器兼任）收到广播，分配一个未使用的 IP 给 A，通过单播或广播回送 Offer。</li>
</ul>
</li>
<li>DHCP Request（请求） &amp; DHCP ACK（确认）：
<ul>
<li>A 正式请求租用该 IP，DHCP 服务器回复确认报文。</li>
</ul>
</li>
</ol><ul>
<li>最终成果：主机 A 彻底“合法落户”！此时主机 A 拥有了：
<ul>
<li>本机私网 IP：<code>192.168.1.100</code>；</li>
<li>子网掩码：<code>255.255.255.0</code>；</li>
<li>默认网关路由器的 IP：<code>192.168.1.1</code>；</li>
<li>本地 DNS 服务器的 IP：<code>211.1.1.1</code>；</li>
</ul>
</li>
</ul></section><section><h4>ARP 解析网关 MAC<a href="#arp-解析网关-mac"><span>#</span></a></h4><p>主机 A 准备在浏览器输入 <code>http://www.serverB.com</code>。
A 想要解析这个域名，必须先发报文给 DNS 服务器（<code>211.1.1.1</code>）。
A 用自己的子网掩码一算：<code>211.1.1.1</code> 和自己不在同一个子网！必须走默认网关（<code>192.168.1.1</code>）！
可是，A 的 ARP 缓存表是空的！A 根本不知道网关的 MAC 地址是多少，链路层无法打包！</p><ol>
<li>A 发送 ARP 请求（广播）：
<ul>
<li>内容：“谁是 <code>192.168.1.1</code>？请把你的 MAC 地址告诉我！”</li>
<li>目的 MAC：<code>FF-FF-FF-FF-FF-FF</code>。</li>
<li>交换机再次确认学习：确保主机 A 的端口映射最新，然后泛洪广播。</li>
</ul>
</li>
<li>默认网关单播回复 ARP 应答：
<ul>
<li>网关收到广播，发现问的是自己，回复：“我是 <code>192.168.1.1</code>，我的 MAC 是 <code>MAC_Gateway</code>！”</li>
<li>交换机自学习：网关的应答帧进入交换机，交换机立刻学习记录 <code>(网关的 MAC, 入端口 2)</code>！</li>
<li>交换机查表发现目标是主机 A，精准单播转发给主机 A。</li>
</ul>
</li>
</ol><ul>
<li>最终成果：主机 A 在本地 ARP 缓存表中写下：<code>192.168.1.1 -&gt; MAC_Gateway</code>。</li>
</ul></section><section><h4>DNS 域名解析<a href="#dns-域名解析"><span>#</span></a></h4><p>现在 A 可以把数据包发给网关了，目标是去查出 <code>www.serverB.com</code> 的真正 IP！</p><ol>
<li>封装 DNS 查询报文：
<ul>
<li>应用层：DNS 查询请求（查 <code>www.serverB.com</code>）。</li>
<li>传输层：UDP 协议（目的端口 53）。</li>
<li>网络层：源 IP <code>192.168.1.100</code>，目的 IP <code>211.1.1.1</code>（DNS 服务器 IP）。</li>
<li>链路层：源 MAC <code>MAC_A</code>，目的 MAC <code>MAC_Gateway</code>！</li>
</ul>
</li>
<li>局域网转发与 NAT 转换：
<ul>
<li>交换机查表，精准单播给网关。</li>
<li>网关（NAT 路由器）收到报文，剥掉链路层，查看网络层：
<ul>
<li>将源私网 IP 替换为网关公网 IP；</li>
<li>将报文重新打包，通过广域网路由接口转发出去。</li>
</ul>
</li>
</ul>
</li>
<li>公网迭代/递归查询：
<ul>
<li>DNS 服务器（或经过根、顶级域、权威域多轮迭代后）找到了 <code>www.serverB.com</code> 对应的公网 IP：<code>120.20.20.20</code>。</li>
<li>DNS 响应原路返回，网关根据 NAT 表反向转换，送回主机 A。</li>
</ul>
</li>
</ol><ul>
<li>最终成果：主机 A 终于拿到了服务器 B 的 IP 地址：<code>120.20.20.20</code>！</li>
</ul></section><section><h4>TCP 三次握手<a href="#tcp-三次握手"><span>#</span></a></h4><p>有了目标 IP，但在发送 HTTP 之前，传输层必须先建立一条端到端、可靠的虚电路连接！</p><ol>
<li>第一次握手（SYN）：
<ul>
<li>A 生成 <code>SYN=1, seq=x</code> 报文，目的端口 80，目的 IP <code>120.20.20.20</code>。</li>
<li>经交换机、网关 NAT、公网各大自治域（OSPF、BGP 路由选择算法）跳跃转发，抵达服务器 B。</li>
<li>-（如果服务器 B 局域网也冷启动，B 的默认网关也会在内部广播一次 ARP 解析出 B 的 MAC，再送达 B 的网卡）-。</li>
</ul>
</li>
<li>第二次握手（SYN + ACK）：
<ul>
<li>服务器 B 收到后，为该连接分配缓存和控制块，回送 <code>SYN=1, ACK=1, seq=y, ack=x+1</code>。</li>
</ul>
</li>
<li>第三次握手（ACK）：
<ul>
<li>主机 A 收到 B 的回信，回复 <code>ACK=1, ack=y+1</code>。</li>
</ul>
</li>
</ol><ul>
<li>最终成果：双方的 TCP 状态机均进入 <code>ESTABLISHED</code> 状态，连接通道正式开通！</li>
</ul></section><section><h4>HTTP 请求与响应<a href="#http-请求与响应"><span>#</span></a></h4><ol>
<li>发送 HTTP GET 请求：
<ul>
<li>主机 A 在应用层组装 HTTP 请求报文：
<code>GET /index.html HTTP/1.1\r\nHost: www.serverB.com\r\n...</code></li>
<li>TCP 将其切片封装并打上序号发送。</li>
</ul>
</li>
<li>公网飞驰：
<ul>
<li>报文穿过千山万水，穿透双向 NAT，安全送达服务器 B。</li>
</ul>
</li>
<li>Web 服务器响应：
<ul>
<li>服务器 B 的 Web 守护进程读取请求，返回 <code>HTTP/1.1 200 OK</code>，正文携带 HTML 网页数据。</li>
</ul>
</li>
<li>最终呈现：
<ul>
<li>主机 A 收到响应报文，TCP 层向上交付给浏览器，浏览器内核解析渲染出漂漂亮亮的网页！</li>
</ul>
</li>
</ol></section><section><h4>应用层模型总结<a href="#应用层模型总结"><span>#</span></a></h4>

<table><thead><tr><th>阶段</th><th>核心协议</th><th>解决的根本痛点</th><th>涉及的关键硬件动作</th></tr></thead><tbody><tr><td>0. 认祖归宗</td><td>DHCP</td><td>A 没 IP、没掩码、没网关、没 DNS</td><td>广播 Discover；交换机记录 A 的 MAC</td></tr><tr><td>1. 摸清家门</td><td>ARP</td><td>A 知道网关 IP，但链路层不知道网关 MAC</td><td>广播求 MAC；交换机记录网关的 MAC</td></tr><tr><td>2. 问询天下</td><td>DNS</td><td>A 知道域名，不知道 B 的物理 IP</td><td>跨公网 UDP 传输，NAT 替换 IP 与端口</td></tr><tr><td>3. 订立契约</td><td>TCP</td><td>准备发数据，但两端还没建立可靠连接</td><td>经过公网路由器跳步转发，三次握手置位</td></tr><tr><td>4. 互通有无</td><td>HTTP</td><td>真正的应用层数据请求与网页回传</td><td>建立在已通的 TCP 套接字之上流式交付</td></tr></tbody></table></section></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/npee/os/</id>
      <title type="text">考研冲刺前的总结 —— 操作系统</title>
      <published>2026-09-08T00:00:00.000Z</published>
      <updated>2026-09-08T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/npee/os/"/>
      <summary type="text">考研冲刺前的总结 —— 操作系统</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>和计组类似的，操作系统也是需要掌握几个模型。</p><p>由于当时课内阉割严重，所以这门课也是我学的最久的一门课。</p><p>408 四门课最害怕的事情是遗忘，这门课其实遗忘的是最厉害的。</p><p>不过经过了强化课，已经基本摸清楚模型是什么。</p><p>还是那句话，学计组，操作系统，计网一定要摸清楚基本模型，所有的题都是基于这些模型拓展的</p></section>
<section><h2>绪论<a href="#绪论"><span>#</span></a></h2><section><h3>绪论 - 考纲<a href="#绪论---考纲"><span>#</span></a></h3><ul>
<li>操作系统的基本概念</li>
<li>操作系统的发展历程</li>
<li>程序运行环境
<ul>
<li>CPU 运行模式</li>
<li>内核模式与用户模式</li>
<li>中断和异常的处理</li>
<li>系统调用</li>
<li>程序的链接与装入</li>
<li>程序运行时内存映像与地址空间</li>
</ul>
</li>
<li>操作系统结构：分层；模块化；宏内核；微内核；外核</li>
<li>操作系统引导</li>
<li>虚拟机</li>
</ul></section><section><h3>操作系统基本概念<a href="#操作系统基本概念"><span>#</span></a></h3><p>操作系统的四个基本特征要能张口就来，并且每个都能举一个例子。</p><section><h4>并发<a href="#并发"><span>#</span></a></h4><p>并发指的是两个或多个事件在同一时间间隔内发生，宏观上同时，微观上交替。</p><p>单处理机上也存在并发，靠的是进程调度和时间片轮转，所以并发不需要并行。</p><p>需要注意的是，并发是操作系统存在的基础，没有并发就退化成单道程序，也就不需要操作系统来调度了。</p></section><section><h4>共享<a href="#共享"><span>#</span></a></h4><p>共享指的是系统中的资源可以被多个并发执行的进程共同使用，分为互斥共享和同时访问两种。</p><p>互斥共享的资源是临界资源，例如打印机、共享变量，一个进程用的时候另一个必须等；同时访问的资源例如磁盘文件，可以同时读。</p><p>需要注意，并发和共享互为存在条件：没有并发就谈不上共享，没有共享并发进程也无法协作。</p></section><section><h4>虚拟<a href="#虚拟"><span>#</span></a></h4><p>虚拟是把一个物理实体变成若干个逻辑上的对应物，分为时分复用和空分复用。</p><p>时分复用的例子是虚拟处理器，多个进程轮流使用一个 CPU；空分复用的例子是虚拟存储器，每个进程都以为自己独占 4GB 的地址空间。</p><p>需要注意的是，虚拟技术的前提是每一路逻辑实体在宏观上都能推进，切换的代价要足够小，否则虚拟就没有意义。</p></section><section><h4>异步<a href="#异步"><span>#</span></a></h4><p>异步指的是进程以不可预知的速度向前推进，走走停停。</p><p>原因在于进程共享资源、竞争 CPU，谁先拿到资源谁就继续执行，所以程序的执行顺序和执行时间都不确定。</p><p>需要注意的是，异步是并发带来的结果，也正是因为异步，才需要同步机制来约束进程之间的推进顺序。</p></section><section><h4>辨析并行与并发与多任务<a href="#辨析并行与并发与多任务"><span>#</span></a></h4><p>对于多处理机，可以实现并行。</p><p>多任务指的是操作系统可以同时运行多个任务，并发就够了，不需要并行。</p></section><section><h4>操作系统的功能与服务<a href="#操作系统的功能与服务"><span>#</span></a></h4><p>操作系统管四件事：进程管理（创建、调度、同步、通信）、内存管理（分配回收、地址变换、保护共享）、文件管理（目录、存取、保护）、设备管理（分配、驱动、缓冲）。</p><p>对上层提供的服务分两类：</p><ul>
<li>面向用户的接口，也就是命令接口和图形界面，用户直接使用；</li>
<li>面向程序的接口，也就是系统调用，程序通过它请求内核服务。</li>
</ul><p>此外操作系统还要负责资源分配、记账和出错处理。</p><p>需要注意，操作系统还有一个说法是“扩充机器”：它把裸机包装成一台功能更强、更好用的虚拟机，用户看到的是文件、进程这些概念，而不是磁盘块和寄存器。</p></section></section><section><h3>操作系统发展<a href="#操作系统发展"><span>#</span></a></h3><section><h4>手工操作与脱机 IO<a href="#手工操作与脱机-io"><span>#</span></a></h4><p>早期是手工操作，用户把纸带、卡片直接装进机器，独占 CPU，人机串行，效率极低。</p><p>脱机 IO 是为了解决 CPU 和慢速外设的矛盾：用一台卫星机把输入数据先写到磁带上，主机只和磁带打交道，主机和外设就能并行起来。</p><p>需要注意，脱机 IO 里的“脱机”指的是脱离主机，不是脱离设备。</p></section><section><h4>批处理阶段<a href="#批处理阶段"><span>#</span></a></h4><p>单道批处理，内存里只有一道程序，CPU 和外设串行工作，利用率低。</p><p>多道批处理，内存里同时放多道程序，一道等 I/O 时切换另一道，CPU 和 I/O 可以并行，但交互性差，作业周转时间长。</p><p>主要的缺点为“无法实时交互”。</p><p>需要注意，多道批处理的两个关键支撑是中断和 DMA，没有它们就没法在 I/O 期间切换程序。</p></section><section><h4>分时操作系统<a href="#分时操作系统"><span>#</span></a></h4><p>可以理解为 RR 调度。</p><p>多用户同时。</p><p>及时性不错，但不能保证截止时间，这一点要和实时系统区分开。</p><p>需要注意，分时系统把 CPU 按时间片轮流分给各终端用户，用户感觉自己独占机器，这就是“虚拟”的一种体现。</p></section><section><h4>实时操作系统<a href="#实时操作系统"><span>#</span></a></h4><p>软实时和硬实时。</p><p>例如抢票系统属于软实时，而银行金融交易属于硬实时。</p><p>还需要注意，这个时间是规定时间，而不是具体的某个时间。</p></section></section><section><h3>内核态与用户态<a href="#内核态与用户态"><span>#</span></a></h3><section><h4>库函数与系统调用<a href="#库函数与系统调用"><span>#</span></a></h4><p>库函数一般是用户态的，但是系统调用是内核态的。</p><p>典型的例子有数学函数，例如 sin、cos 等。</p><p>即便是 malloc 也属于用户态，因为其本质是在堆区操作，而堆区是用户内存的一部分。</p><p>然而，库函数例如 scanf，需要进入内核态。但是，和 trap 指令类似的，它们也是在用户态进行的，只是委托操作系统完成。</p></section><section><h4>内核态<a href="#内核态"><span>#</span></a></h4><p>从虚拟存储系统的角度分析，假设一个 <span><span>4 GB4\text{ GB}</span><span><span><span></span><span>4</span><span><span> GB</span></span></span></span></span> 的地址空间，内核态可以访问全部的地址空间，而用户态只能访问 <span><span>3 GB3\text{ GB}</span><span><span><span></span><span>3</span><span><span> GB</span></span></span></span></span> 的地址空间。</p><p>例如内核态占据 3-4GB 的地址空间，用户态占据 0-3GB 的地址空间。虽然每个进程的虚拟地址都是独占的 4GB 地址空间，但是其中高地址的空间却是一样的，即从物理内核存储映射到了该逻辑地址。</p><p>内核态主要可以干 IO 操作，进程调度等，尤其需要注意：</p><p>open 和 read 操作都属于系统调用，属于内核态。</p></section><section><h4>中断与异常<a href="#中断与异常"><span>#</span></a></h4><p>其实这个概念来自于计组，异常又称内中断，中断又称外中断。</p><p>默认情况下，只说中断一般指的是外中断。</p><p>异常分为三种模式，陷阱、故障、终止。</p><p>陷阱也就是操作系统中最常用的，通过陷阱陷入内核态。</p><p>需要注意，是用户使用 trap 指令进入内核态。</p><p>这种情况下，处理完陷阱后，需要到下一条指令继续运行。</p><p>故障例如缺页、除以 0 等。</p><p>这种情况下，处理完故障后，需要回到当前指令重新运行。</p><p>终止是程序发生了严重错误，需要立即终止，不需要再执行后续的指令。</p></section><section><h4>系统调用的过程<a href="#系统调用的过程"><span>#</span></a></h4><p>用户程序执行一条陷入指令（trap、syscall），把系统调用号放在约定的寄存器里，参数按约定放在寄存器或栈上。</p><p>CPU 响应后从用户态切到内核态，根据系统调用号查系统调用表，找到对应的服务例程并执行，返回值放在约定的寄存器里。</p><p>最后执行中断返回指令，切回用户态，从陷入指令的下一条继续执行。</p><p>需要注意，系统调用是用户程序进入内核的唯一合法入口，用户程序不能直接执行特权指令，也不能直接访问内核地址空间。</p><p>系统调用的参数传递有三种方式：放寄存器、放用户栈再把栈地址传进去、指令里直接给参数。参数多于寄存器数量时用第二种。</p></section></section><section><h3>操作系统结构<a href="#操作系统结构"><span>#</span></a></h3><section><h4>分层<a href="#分层"><span>#</span></a></h4><p>一层一层调用，速度慢，但是易于调试。</p></section><section><h4>模块化<a href="#模块化"><span>#</span></a></h4><p>某个模块需要调另一个模块的功能，一个模块出错可能会影响另一个模块。</p></section><section><h4>宏内核<a href="#宏内核"><span>#</span></a></h4><p>效率高，但是较为复杂。</p></section><section><h4>微内核<a href="#微内核"><span>#</span></a></h4><p>效率较低（因为很多功能都需要打断当前进程跑去请求内核完成）</p><p>可扩展性好。</p></section><section><h4>外核<a href="#外核"><span>#</span></a></h4><p>冷门考点，但也需要知道是什么。</p><p>外核的思想是把物理资源（内存块、磁盘块）直接分配给用户进程，内核只负责资源的分配与保护，不负责抽象。</p><p>进程自己决定怎么用这些资源，比如自己实现文件系统、自己管理内存。这样省掉了内核的抽象层，灵活高效，但实现复杂、隔离性差。</p></section></section><section><h3>操作系统引导<a href="#操作系统引导"><span>#</span></a></h3><p>属于背书题，但是掌握了这道背书，其实可以很好地理解最后一章。</p><p>BIOS 初始化，CPU 自检 - 硬件自检 - 主引导 - 分区引导 - 启动管理器 - 启动操作系统内核 - 内核初始化与用户环境启动。</p><p>可以注意，操作系统本身程序最开始是存储在磁盘里的，然后最终其核心（非全部）被加载到内存里。</p></section><section><h3>虚拟机<a href="#虚拟机"><span>#</span></a></h3><section><h4>第一类虚拟机<a href="#第一类虚拟机"><span>#</span></a></h4><p>硬件上划分出不同的区域跑不同的操作系统，即硬件之上是第一类虚拟机管理程序，在这之上分别运行了不同的操作系统。</p></section><section><h4>第二类虚拟机<a href="#第二类虚拟机"><span>#</span></a></h4><p>宿主机运行虚拟化软件，虚拟化软件上运行另一个操作系统。本质上全是用户态进程。</p><p>需要辨析，虚拟化软件的代码量肯定小于一个操作系统。误解的原因是将系统镜像理解为虚拟化软件代码的一部分。</p></section></section></section>
<section><h2>进程<a href="#进程"><span>#</span></a></h2><section><h3>进程 - 考纲<a href="#进程---考纲"><span>#</span></a></h3><ul>
<li>进程与线程
<ul>
<li>进程与线程的基本概念；进程 / 线程的状态与转换</li>
<li>线程的实现：内核支持的线程，线程库支持的线程</li>
<li>进程与线程的组织与控制</li>
<li>进程间通信：共享内存，消息传递，管道，信号</li>
</ul>
</li>
<li>CPU 调度与上下文切换
<ul>
<li>调度的基本概念：调度的目标</li>
<li>调度的实现：调度器 / 调度程序，调度的时机与调度方式（抢占式 / 非抢占式），闲逛进程，内核级线程与用户级线程调度</li>
<li>CPU 调度算法</li>
<li>多处理机调度</li>
<li>上下文及其切换机制</li>
</ul>
</li>
<li>同步与互斥
<ul>
<li>同步与互斥的基本概念</li>
<li>基本的实现方法：软件方法，硬件方法</li>
<li>锁：信号量；条件变量</li>
<li>经典同步问题：生产者 - 消费者问题，读者 - 写者问题，哲学家进餐问题</li>
</ul>
</li>
<li>死锁
<ul>
<li>死锁的基本概念</li>
<li>死锁预防</li>
<li>死锁避免</li>
<li>死锁检测和解除</li>
</ul>
</li>
</ul></section><section><h3>进程与线程<a href="#进程与线程"><span>#</span></a></h3><section><h4>进程与程序<a href="#进程与程序"><span>#</span></a></h4><p>进程是程序的一次执行过程，是系统进行资源分配的基本单位。</p><p>进程和程序的区别在于：程序是静态的指令集合，可以长期存在；进程是动态的，有创建、运行、消亡的过程，是暂时的。同一个程序运行多次就是多个进程，各自有独立的 PCB 和地址空间。</p><p>进程有四个特征：动态性（最基本）、并发性、独立性、异步性。</p><p>需要注意，进程与程序的对应关系是多对多：一个程序可以对应多个进程，一个进程也可以先后执行多个程序。</p></section><section><h4>PCB 的辨析<a href="#pcb-的辨析"><span>#</span></a></h4><p>PCB 是程序在创建的时候，由程序创建原语创建的。</p><p>其是一个进程存在的标志，并且 PCB 是进程存在的唯一标志。</p><p>PCB 里面存有父程序，队列，当前进程状态等。</p><p>比较重要的是页表始址（采用多级页表的时候是页目录表始址）</p><p>假设一个进程的物理地址是 16GB，逻辑地址是 4GB，并且分配高 1GB 给内核区。</p><p>那么每一个进程的高 1GB 都是内核区物理映射过来的，都是相同的。</p></section><section><h4>主存空间辨析<a href="#主存空间辨析"><span>#</span></a></h4><p>假设逻辑主存空间有 4GB，高 1GB 内存是内核态，低 3GB 内存是用户态。</p><p>那么对于一个进程，其逻辑地址可以理解为：</p><p>代码本体 - 全局变量 - 堆区 - 共享区 - 栈区 - 局部变量 - 内核区</p><p>其中，代码本题是地址最低的，堆区从低地址向高地址增长，而栈区从高地址向低地址增长。</p></section><section><h4>进程的三态<a href="#进程的三态"><span>#</span></a></h4><p>在进程调度的时候，即操作其 PCB，例如把 PCB 插入就绪队列。</p><p>就绪态，运行态，阻塞态。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>               </span></span><span>┌──────────────┐</span></div></div><div><div><div>2</div></div><div><span><span>               </span></span><span>│    就绪态    │ &lt;────────────────────────┐</span></div></div><div><div><div>3</div></div><div><span><span>               </span></span><span>│ (Ready State)│                          │</span></div></div><div><div><div>4</div></div><div><span><span>               </span></span><span>└──────────────┘                          │</span></div></div><div><div><div>5</div></div><div><span><span>                  </span></span><span>│        ▲                             │</span></div></div><div><div><div>6</div></div><div><span><span>        </span></span><span>获得CPU   │        │ 时间片用完                  │ 事件完成</span></div></div><div><div><div>7</div></div><div><span><span>       </span></span><span>(进程调度) │        │ (超时中断)                  │ (I/O完成)</span></div></div><div><div><div>8</div></div><div><span><span>                  </span></span><span>▼        │                             │</span></div></div><div><div><div>9</div></div><div><span><span>               </span></span><span>┌──────────────┐         ┌──────────────┐ │</span></div></div><div><div><div>10</div></div><div><span><span>               </span></span><span>│    运行态    │ ───────&gt;│    阻塞态    │ ─┘</span></div></div><div><div><div>11</div></div><div><span><span>               </span></span><span>│(Running State)│ 等待事件│(Blocked State)│</span></div></div><div><div><div>12</div></div><div><span><span>               </span></span><span>└──────────────┘ (请求I/O)└──────────────┘</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>做这种题的时候，最重要的是注意辨析题目的要求是什么态转什么态。</p><p>三态模型是最简化的，实际系统里还有两个状态：新建态和终止态。</p><ul>
<li>新建态：PCB 已经分配，但进程还没被放入就绪队列，资源还没准备好；</li>
<li>终止态：进程已经结束，但 PCB 还没被回收，等待父进程或系统回收资源。</li>
</ul><p>需要注意，这两个状态都不能被调度，所以讨论调度时三态够用，讨论进程生命周期时要补上。</p><p>再进一步还有挂起状态。挂起是把进程的映像调出到外存，腾出内存，分为就绪挂起和阻塞挂起：</p><ul>
<li>就绪挂起：进程在外存，一旦调入内存就可以运行；</li>
<li>阻塞挂起：进程在外存，且还在等某个事件。</li>
</ul><p>挂起和阻塞的区别在于，阻塞是等事件、进程还在内存，挂起是被换出、进程不在内存。阻塞挂起必须先等事件发生变成就绪挂起，才能被激活回内存；而就绪挂起可以直接激活成就绪态。</p><p>对于七状态模型，只要记住两条主线：就绪、运行、阻塞之间的转换靠调度和事件；挂起相关的转换靠换入换出。</p></section><section><h4>进程控制<a href="#进程控制"><span>#</span></a></h4><p>进程控制就是操作系统用原语来改变进程状态，原语的执行必须一气呵成，不能被中断。</p><ul>
<li>创建：分配 PCB，填入 PID、优先级、入口地址等，分配资源，插入就绪队列；</li>
<li>终止：回收资源，撤销 PCB，如果是父进程终止还要处理子进程；</li>
<li>阻塞：进程主动调用，保存现场，把 PCB 插入对应事件的等待队列，转入阻塞态；</li>
<li>唤醒：事件发生时由系统或其他进程调用，把 PCB 从等待队列移入就绪队列；</li>
<li>切换：保存当前进程的现场到 PCB，恢复下一个进程的现场。</li>
</ul><p>需要注意，阻塞是进程自己主动的行为，唤醒是别人（或系统）的行为，一个进程不能唤醒自己，也不能把自己阻塞后立刻醒来。</p><p>PCB 的组织方式有两种：链接方式，把同一状态的 PCB 用链接字串成队列；索引方式，按状态建立索引表，表项指向 PCB。</p></section></section><section><h3>进程通信<a href="#进程通信"><span>#</span></a></h3><ul>
<li>
<p>共享存储：是几种方式里最快的，因为直接访问即可，但需要自己配合同步机制</p>
</li>
<li>
<p>消息传递：分为间接模式和直接模式。直接模式是直接通信，间接模式是通过一片区域通信</p>
</li>
<li>
<p>管道模式：可以理解为生产者消费者问题的缓冲区，是半双工模式</p>
</li>
<li>
<p>信号传递：进程发送信号访问，大部分的信号用户可以自定义，但是少数不行，例如 kill。进程可以给自己发送信号，例如定时完成某任务</p>
</li>
</ul><p>需要辨析管道和管程的区别，会把这俩近似的名词搞混。</p><p>还需要辨析信号和信号量，这两个中文只差一个字，但完全不是一回事：信号是进程间通信的一种异步通知机制，收到信号后进程可以忽略、捕获或者按默认动作处理；信号量是同步互斥的工具，用来控制对临界资源的访问。</p><p>管道的特点要记住三条：半双工，某一时刻只能单向传；以字节流或消息为单位，没有格式；写满会阻塞，读空也会阻塞，所以自带同步。</p><section><h4>进程与线程的数据<a href="#进程与线程的数据"><span>#</span></a></h4><p>不同进程之间不共享数据，所以对于不同进程的全局变量，不会引发竞争。</p><p>然而，由于线程没有独立的地址空间，是基于进程而生的，所以线程之间共享进程的数据，从而同一个进程的不同线程之间会引发竞争。</p>

<table><thead><tr><th>属性</th><th>进程 (Process)</th><th>线程 (Thread)</th></tr></thead><tbody><tr><td>地位</td><td>资源分配的基本单位</td><td>CPU 调度的基本单位</td></tr><tr><td>设备分配</td><td>可以独立获得设备分配</td><td>不可以！只能共享进程的设备</td></tr><tr><td>拥有资源</td><td>拥有地址空间、文件、设备等</td><td>仅拥有极少量运行必需的寄存器和栈</td></tr></tbody></table></section><section><h4>线程的三种方式<a href="#线程的三种方式"><span>#</span></a></h4><ul>
<li>
<p>用户级线程：由应用程序的线程库在用户空间管理，操作系统内核完全感知不到。优点是线程切换极快（不需要切换到内核态）；缺点是一个线程阻塞会导致整个进程都阻塞，且无法直接利用多核 CPU。</p>
</li>
<li>
<p>内核级线程：由操作系统内核直接创建、调度和管理。优点是能真正利用多核并行执行，一个线程阻塞不会影响其他线程；缺点是线程的创建和切换开销比较大，需要频繁进出内核态。</p>
</li>
<li>
<p>m 对 n 级线程：前两者的混合模式，将 m 个用户级线程映射到 n 个内核级线程（通常 m ≥ n）。优点是结合了前两者的长处，既保持了快速切换，又能发挥多核优势且避免全盘阻塞；缺点是系统的设计与调度实现极其复杂。</p>
</li>
</ul><p>任何用户级进程都可以直接运行，不需要额外适配。</p><p>对于这类题需要注意的事情就是不要搞混用户级进程和内核级线程。</p></section><section><h4>内核级线程与用户级线程的调度<a href="#内核级线程与用户级线程的调度"><span>#</span></a></h4><p>用户级线程的调度由线程库在用户态完成，内核根本不知道线程的存在，它只调度进程。所以一个线程阻塞会导致整个进程阻塞，也无法利用多核。</p><p>内核级线程由内核调度，调度单位和分配单位都是线程，所以一个线程阻塞不影响其他线程，也能真正并行。</p><p>需要注意，用户级线程切换快，是因为不陷入内核；但内核看不到它，信号处理和阻塞系统调用都会作用在整个进程上。</p></section></section><section><h3>调度<a href="#调度"><span>#</span></a></h3><section><h4>调度的目标<a href="#调度的目标"><span>#</span></a></h4><p>调度要在几个互相冲突的指标之间做平衡：</p><ul>
<li>CPU 利用率：尽量让 CPU 不空闲；</li>
<li>系统吞吐量：单位时间内完成的作业数；</li>
<li>周转时间：从提交到完成的时间，越短越好；</li>
<li>等待时间：进程在就绪队列里等的时间，越短越好；</li>
<li>响应时间：从提交请求到首次响应的时间，交互系统最看重这个。</li>
</ul><p>需要注意，批处理系统重吞吐量和周转时间，分时系统重响应时间，实时系统重截止时间，题目里说“某系统”时可以据此判断该选哪个算法。</p></section><section><h4>三类调度辨析<a href="#三类调度辨析"><span>#</span></a></h4><ul>
<li>
<p>高级调度：即作业调度。从外存的后备队列中挑选作业调入内存并为其创建进程。发生频率最低。</p>
</li>
<li>
<p>中级调度：即内存调度。当内存不足时，将暂时不能运行的进程调到外存（挂起态）腾出内存空间；等内存充裕且条件满足时再调回内存。发生频率中等。</p>
</li>
<li>
<p>低级调度：即进程调度（CPU 调度）。从就绪队列中选取一个进程，将 CPU 分配给它运行。发生频率最高（几十毫秒一次）。</p>
</li>
</ul></section><section><h4>进程调度的时机以及优先级变化<a href="#进程调度的时机以及优先级变化"><span>#</span></a></h4><p>具体题目具体分析，最重要的是搞清楚每一类任务导致从什么态变成什么态。</p><p>关于优先级变化，需要注意刚上处理机的进程不可以立刻降低优先级。考虑这样一种情况，采用的是优先级抢占式调度，如这么做，会导致一个进程刚上处理机就被撤下来。</p><p>调度的时机只有几类：</p><ul>
<li>进程正常结束或异常终止；</li>
<li>进程主动阻塞，例如请求 I/O、等待信号量；</li>
<li>进程被唤醒，从阻塞变就绪；</li>
<li>时间片用完，或者更高优先级的进程到达（抢占式）。</li>
</ul><p>需要注意，有些时刻不能调度：中断处理过程中、内核临界区内部、原子操作执行中。这几处如果切走，内核的数据结构可能正处在不一致的中间状态。</p><p>还要知道闲逛进程（idle）：就绪队列为空时，内核跑一个优先级最低的进程，它什么也不干，只在有中断时醒来。作用是让 CPU 永远有指令可执行，顺便省电。</p></section><section><h4>进程调度的方式与参数<a href="#进程调度的方式与参数"><span>#</span></a></h4><p>抢占式调度与非抢占式调度。</p><p>注意一些概念：</p><ul>
<li>
<p>周转时间：从提交到完成经历的总时间，<span><span>Ti=Ci−SiT_i=C_i-S_i</span><span><span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>CiC_i</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是完成时间，<span><span>SiS_i</span><span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是提交时间。</p>
</li>
<li>
<p>平均周转时间：<span><span>T=1n∑i=1nTiT=\frac{1}{n}\sum_{i=1}^{n}T_i</span><span><span><span></span><span>T</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∑</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p>
</li>
<li>
<p>带权周转时间：衡量作业相对等待程度的指标，<span><span>Wi=TiRiW_i=\frac{T_i}{R_i}</span><span><span><span></span><span><span>W</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>R</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>T</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，<span><span>RiR_i</span><span><span><span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是实际运行时间。比值恒 <span><span>≥1\ge 1</span><span><span><span></span><span>≥</span><span></span></span><span><span></span><span>1</span></span></span></span>，越接近 1 越好。</p>
</li>
<li>
<p>平均带权周转时间：<span><span>W=1n∑i=1nWiW=\frac{1}{n}\sum_{i=1}^{n}W_i</span><span><span><span></span><span>W</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∑</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>W</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p>
</li>
</ul><p>需要注意，平均周转时间衡量的是“快不快”，平均带权周转时间衡量的是“公不公平”：短作业被拖得越久，带权周转时间越大，所以后者对交互式系统更有意义。</p><p>做这种题一样需要注意辨析清楚题目里到底要我们干什么，求什么东西。</p></section><section><h4>上下文切换与模式切换<a href="#上下文切换与模式切换"><span>#</span></a></h4><ul>
<li>
<p>模式切换：CPU 在用户态与内核态之间的权限切换。当前运行的进程并没有改变，只需保存和恢复少量的硬件寄存器状态（如处理系统调用或硬件中断），开销较小。</p>
</li>
<li>
<p>上下文切换：CPU 控制权从一个进程转移到另一个进程。需要保存当前进程的完整 CPU 现场与虚拟内存映射，并加载新进程的状态，开销较大。</p>
</li>
<li>
<p>两者关系：上下文切换必然包含模式切换（调度必须在内核态执行）；但模式切换不一定会引发上下文切换（比如进程只是发了个简单的系统调用读取时间，处理完后仍回到该进程继续执行）。</p>
</li>
</ul></section><section><h4>CPU 调度方式<a href="#cpu-调度方式"><span>#</span></a></h4><ul>
<li>先来先服务（FCFS）：按作业到达的先后顺序进行调度，即按提交、到达的顺序。</li>
<li>短作业优先（SJF）：按作业的执行时间长短进行调度，即执行时间最短的作业优先。短作业优先可以是非抢占式的，也可以是抢占式的，默认是非抢占式的</li>
<li>高响应比优先（HRRN）：按作业的响应比高低进行调度，即响应比最高的作业优先。响应比为
<span><span>R=等待时间+要求服务时间要求服务时间=1+等待时间要求服务时间R=\frac{\text{等待时间}+\text{要求服务时间}}{\text{要求服务时间}}=1+\frac{\text{等待时间}}{\text{要求服务时间}}</span><span><span><span></span><span>R</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>要求服务时间</span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>等待时间</span></span><span>+</span><span><span>要求服务时间</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>要求服务时间</span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>等待时间</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>
等待越久响应比越高，所以长作业不会饿死，这是它比 SJF 强的地方。</li>
<li>优先级调度：按作业的优先级高低进行调度，即优先级最高的作业优先。优先级调度可以是非抢占式的，也可以是抢占式的。可以分为静态优先级和动态优先级。此外可以注意，系统一般大于用户，交互一般大于非交互，IO 一般大于计算，但是，这并不是绝对的</li>
<li>时间片轮转（RR）：一个绝对公平的算法，时间片选取需要取舍，因为切换进程也需要时间</li>
<li>多级队列调度：根据进程属性永久固定分配到不同优先级的队列中，进程不能在队列之间移动。</li>
<li>多级反馈队列调度：队列内的调度算法不一定是同一种算法。多个队列的优先级由高到低且时间片依次增大，未在规定时间片内完成的进程会被自动降入下一级队列，允许进程在不同队列间动态移动。</li>
</ul>

<table><thead><tr><th>调度算法</th><th>是否可抢占</th><th>优点</th><th>缺点</th><th>适用于</th></tr></thead><tbody><tr><td>先来先服务 (FCFS)</td><td>非抢占式</td><td>算法简单，实现成本低，绝对先来后到，无饥饿现象。</td><td>对长作业有利，对短作业极不友好，易产生护航效应（导致平均等待时间极长）。</td><td>批处理系统早期作业调度；不适合交互式系统。</td></tr><tr><td>短作业优先 (SJF)</td><td>默认非抢占式（抢占式版本为 SRTF）</td><td>理论上能够获得最短的平均周转时间和平均带权周转时间。</td><td>长作业可能长期得不到服务导致“饥饿”甚至饿死；作业运行时间全靠预估，难以准确掌握。</td><td>批处理系统（能够预估任务长度的场景）；不适用于交互式环境。</td></tr><tr><td>高响应比优先 (HRRN)</td><td>非抢占式</td><td>综合平衡了运行时间与等待时间；短作业优先调度，长作业等待久了响应比上升也能被服务，避免了饥饿。</td><td>每次进行调度前都必须重新计算等待队列中所有作业的响应比，系统开销较大。</td><td>批处理系统的作业调度。</td></tr><tr><td>优先级调度算法</td><td>可抢占 / 非抢占（两种模式均可）</td><td>灵活性高，能紧随业务优先级调整，紧要任务（如中断、系统级）可被迅速响应；配合动态优先级可防止饥饿。</td><td>静态优先级可能导致低优先级作业永久饥饿；优先级反转与维护开销较高。</td><td>实时操作系统（抢占式）；通用分时操作系统（结合动态优先级）。</td></tr><tr><td>时间片轮转 (RR)</td><td>抢占式（时间片用完即被抢占）</td><td>绝对公平，进程轮流获得 CPU，响应速度快，绝不会发生饥饿。</td><td>频繁的上下文切换带来额外的系统开销；时间片过长退化为 FCFS，时间片过短系统利用率极低。</td><td>分时操作系统；强交互式环境。</td></tr><tr><td>多级队列调度</td><td>视队列规则而定（通常高优先级队列可抢占低优先级）</td><td>分类施策，能针对不同进程特性（如系统任务、交互任务、批处理）匹配最适宜的算法。</td><td>缺乏弹性，进程一旦入队不可迁移；高优先级任务过多时，低优先级队列极易陷入长久饥饿。</td><td>进程分类界限明确的通用系统。</td></tr><tr><td>多级反馈队列调度</td><td>抢占式（新进/高优先任务可抢占 CPU）</td><td>集百家之长，兼顾短作业的周转时间与交互任务的实时响应，无需预先估算作业运行时间。</td><td>逻辑复杂，实现难度高；若高优先级队列源源不断，最底层的长作业仍有饥饿风险。</td><td>现代通用分时操作系统（如 UNIX/Linux、Windows 等内核调度基石）。</td></tr></tbody></table></section><section><h4>多处理机调度（偏冷的考点）<a href="#多处理机调度偏冷的考点"><span>#</span></a></h4><p>SMP 的调度面临两个核心矛盾：处理器亲和性和负载平衡。</p><p>当一个进程从一个 CPU 迁移到另一个 CPU 上时，应将第一个 CPU 的缓存设置为无效，然后重新填充第二个 CPU 的缓存。这种操作的代价较高，因此系统应尽量避免将进程从一个 CPU 移到另一个 CPU，而应尽量让一个进程运行在同一个 CPU 上，这称为处理器亲和性。</p><p>对于 SMP 系统，应尽量保证所有 CPU 的负载平衡（也称负载均衡），以便充分利用多处理机的优势。否则，一个或多个 CPU 会空闲，而其他 CPU 会处于高负载状态，且有一些进程处于等待状态。负载平衡应设法将负载平均分配到 SMP 系统的所有 CPU 上。</p><p>然而，负载平衡通常会抵消处理器亲和性带来的好处：保持一个进程运行在同一个 CPU 上的好处是可以利用它在该 CPU 的缓存，而将进程从一个 CPU 迁移到另一个 CPU 会失去这个好处。因此，在某些系统中，只有当不平衡达到一定程度后，才会触发进程迁移。</p><p>多处理机调度可以分为以下两种：</p><p>方案一：公共就绪队列</p><p>系统中仅设置一个公共就绪队列，所有 CPU 共享该队列。这种方案能很好地实现负载平衡，因为 CPU 一旦空闲，就会立刻从公共就绪队列中选择一个进程运行。缺点是各进程可能频繁地在不同的 CPU 上切换，处理器亲和性不好。</p><p>提升处理器亲和性的方法有两种：① 软亲和，指由调度程序尽量将一个进程保持在某个 CPU 上运行，但这个进程也可以迁移到其他 CPU 上。② 硬亲和，指由用户进程通过系统调用，主动请求系统将其绑定到固定的 CPU 上。例如，Linux 系统实现了软亲和，也支持硬亲和的系统调用。</p><p>方案二：私有就绪队列</p><p>系统为每个 CPU 设置一个私有就绪队列，当 CPU 空闲时，便从其对应的私有就绪队列中选择一个进程运行。这种方案很好地实现了处理器亲和性，缺点是必须进行负载平衡。</p><p>平衡负载的方法通常有两种：① 推迁移，指由一个特定的系统程序周期性地检查各 CPU 的负载，若发现不平衡，则从超载 CPU 的就绪队列中“推”出部分进程，迁移到空闲 CPU 的就绪队列，以实现负载平衡。② 拉迁移，指当某个 CPU 负载很低时，主动从超载 CPU 的就绪队列中“拉”取部分进程到自己的就绪队列。在实际系统中，推迁移和拉迁移常被结合使用。</p></section></section><section><h3>同步与互斥<a href="#同步与互斥"><span>#</span></a></h3><section><h4>临界资源与临界区<a href="#临界资源与临界区"><span>#</span></a></h4><p>临界资源可以理解为操作系统中只能被一个进程访问的资源，例如打印机。</p><p>临界区则指的是“代码”，临界区是访问临界资源的代码。</p><p>所以，对于每个进程而言，如果执行的是自己的代码，那么他们拥有自己的临界区。</p></section><section><h4>同步与互斥的辨析<a href="#同步与互斥的辨析"><span>#</span></a></h4><p>假设 A 需要 B 提供的资源，那么就需要通过同步关系。</p><p>互斥可以理解为，当一个进程在访问临界资源时，其他进程不能访问该资源。</p><p>需要注意，不可以用同步和互斥简单的来判断信号初始量，而是要具体题目具体分析。</p><p>空闲让进：临界区空闲无进程时，允许一个请求进入的进程立即进入。</p><p>忙则等待：临界区已有进程在访问时，其他试图进入的进程必须等待。</p><p>有限等待：对请求访问的进程，应保证其在有限时间内能进入，防止饥饿死等。</p><p>让权等待：当进程暂时不能进入临界区时，应立即释放 CPU 资源（进入阻塞态），避免白白消耗 CPU 进行忙等。</p></section><section><h4>软件实现同步与互斥<a href="#软件实现同步与互斥"><span>#</span></a></h4><p>单标法：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 进程 P0</span></div></div><div><div><div>2</div></div><div><span>while</span><span> (turn </span><span>!=</span><span> </span><span>0</span><span>);</span><span>       // 进入区：检查轮到谁</span></div></div><div><div><div>3</div></div><div><span>critical section;</span><span>        // 临界区</span></div></div><div><div><div>4</div></div><div><span>turn </span><span>=</span><span> </span><span>1</span><span>;</span><span>                // 退出区：把权力转交给 P1</span></div></div><div><div><div>5</div></div><div><span>remainder section;</span><span>       // 剩余区</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>// 进程 P1</span></div></div><div><div><div>8</div></div><div><span>while</span><span> (turn </span><span>!=</span><span> </span><span>1</span><span>);</span><span>       // 进入区：检查轮到谁</span></div></div><div><div><div>9</div></div><div><span>critical section;</span><span>        // 临界区</span></div></div><div><div><div>10</div></div><div><span>turn </span><span>=</span><span> </span><span>0</span><span>;</span><span>                // 退出区：把权力转交给 P0</span></div></div><div><div><div>11</div></div><div><span>remainder section;</span><span>       // 剩余区</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>解决了什么问题：
实现了基本的互斥访问。由于全局只有一个 <code>turn</code> 变量指示权限，任何时刻最多只能有一个进程通过循环判定，保证了“忙则等待”。</li>
<li>发现了什么问题：
违背“空闲让进”准则。该算法强制两进程必须严格交替进入。若 <span><span>P0P_0</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 退出后临界区已空闲，但 <span><span>P1P_1</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 短期内或永远不想进入临界区，则 <code>turn</code> 将永远保持为 1，<span><span>P0P_0</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 哪怕急需进入临界区也会被永远挡在外面，造成资源严重浪费。</li>
</ul><p>双标志先检查法</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 进程 P0</span></div></div><div><div><div>2</div></div><div><span>while</span><span> (</span><span>flag</span><span>[</span><span>1</span><span>]);</span><span>         // ① 进入区：先检查对方想不想进</span></div></div><div><div><div>3</div></div><div><span>flag</span><span>[</span><span>0</span><span>] </span><span>=</span><span> </span><span>true</span><span>;</span><span>          // ③ 进入区：自己表示想进</span></div></div><div><div><div>4</div></div><div><span>critical section;</span><span>        // 临界区</span></div></div><div><div><div>5</div></div><div><span>flag</span><span>[</span><span>0</span><span>] </span><span>=</span><span> </span><span>false</span><span>;</span><span>         // 退出区：自己用完了</span></div></div><div><div><div>6</div></div><div><span>remainder section;</span><span>       // 剩余区</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>// 进程 P1</span></div></div><div><div><div>9</div></div><div><span>while</span><span> (</span><span>flag</span><span>[</span><span>0</span><span>]);</span><span>         // ② 进入区：先检查对方想不想进</span></div></div><div><div><div>10</div></div><div><span>flag</span><span>[</span><span>1</span><span>] </span><span>=</span><span> </span><span>true</span><span>;</span><span>          // ④ 进入区：自己表示想进</span></div></div><div><div><div>11</div></div><div><span>critical section;</span><span>        // 临界区</span></div></div><div><div><div>12</div></div><div><span>flag</span><span>[</span><span>1</span><span>] </span><span>=</span><span> </span><span>false</span><span>;</span><span>         // 退出区：自己用完了</span></div></div><div><div><div>13</div></div><div><span>remainder section;</span><span>       // 剩余区</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>解决了什么问题：
打破了算法一中“必须严格轮流交替”的束缚，允许同一个进程在临界区空闲时连续多次使用临界区。</li>
<li>发现了什么问题：
违背“忙则等待”准则。核心缺陷在于“检查”与“设置”操作不是原子的。如果发生并发调度顺序 ① <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> ② <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> ③ <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> ④，两个进程都先发现对方为 <code>false</code>，随后各自将标志置为 <code>true</code> 并同时冲入临界区，导致互斥机制彻底崩溃。</li>
</ul><p>双标志后检查法</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 进程 P0</span></div></div><div><div><div>2</div></div><div><span>flag</span><span>[</span><span>0</span><span>] </span><span>=</span><span> </span><span>true</span><span>;</span><span>          // ① 进入区：先表达自己的意图</span></div></div><div><div><div>3</div></div><div><span>while</span><span> (</span><span>flag</span><span>[</span><span>1</span><span>]);</span><span>         // ③ 进入区：再检查对方想不想进</span></div></div><div><div><div>4</div></div><div><span>critical section;</span><span>        // 临界区</span></div></div><div><div><div>5</div></div><div><span>flag</span><span>[</span><span>0</span><span>] </span><span>=</span><span> </span><span>false</span><span>;</span><span>         // 退出区：自己释放</span></div></div><div><div><div>6</div></div><div><span>remainder section;</span><span>       // 剩余区</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>// 进程 P1</span></div></div><div><div><div>9</div></div><div><span>flag</span><span>[</span><span>1</span><span>] </span><span>=</span><span> </span><span>true</span><span>;</span><span>          // ② 进入区：先表达自己的意图</span></div></div><div><div><div>10</div></div><div><span>while</span><span> (</span><span>flag</span><span>[</span><span>0</span><span>]);</span><span>         // ④ 进入区：再检查对方想不想进</span></div></div><div><div><div>11</div></div><div><span>critical section;</span><span>        // 临界区</span></div></div><div><div><div>12</div></div><div><span>flag</span><span>[</span><span>1</span><span>] </span><span>=</span><span> </span><span>false</span><span>;</span><span>         // 退出区：自己释放</span></div></div><div><div><div>13</div></div><div><span>remainder section;</span><span>       // 剩余区</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>解决了什么问题：
解决了算法二中“两进程同时闯入临界区”的问题。因为是“先举手示意、后查看对方”，确保了绝不会出现同时进入临界区的情况。</li>
<li>发现了什么问题：
违背“空闲让进”与“有限等待”准则（导致死锁/饥饿）。若发生交错执行 ① <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> ② <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> ③ <span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span> ④，双方都先将自己的标志置为 <code>true</code>，随后都在 <code>while</code> 循环中检测到对方为 <code>true</code>，进而相互等待对方退出。此时临界区明明是空的，却没有进程进得去，导致两进程永久卡死在进入区。</li>
</ul><p>Peterson 算法</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 进程 P0</span></div></div><div><div><div>2</div></div><div><span>flag</span><span>[</span><span>0</span><span>] </span><span>=</span><span> </span><span>true</span><span>;</span><span>                    // 表达进临界区的意愿</span></div></div><div><div><div>3</div></div><div><span>turn </span><span>=</span><span> </span><span>1</span><span>;</span><span>                          // 主动谦让，优先允许对方进</span></div></div><div><div><div>4</div></div><div><span>while</span><span> (</span><span>flag</span><span>[</span><span>1</span><span>] </span><span>&amp;&amp;</span><span> turn </span><span>==</span><span> </span><span>1</span><span>);</span><span>      // 只有“对方想进 且 轮到对方”时才等待</span></div></div><div><div><div>5</div></div><div><span>critical section;</span><span>                  // 临界区</span></div></div><div><div><div>6</div></div><div><span>flag</span><span>[</span><span>0</span><span>] </span><span>=</span><span> </span><span>false</span><span>;</span><span>                   // 退出区</span></div></div><div><div><div>7</div></div><div><span>remainder section;</span><span>                 // 剩余区</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>// 进程 P1</span></div></div><div><div><div>10</div></div><div><span>flag</span><span>[</span><span>1</span><span>] </span><span>=</span><span> </span><span>true</span><span>;</span><span>                    // 表达进临界区的意愿</span></div></div><div><div><div>11</div></div><div><span>turn </span><span>=</span><span> </span><span>0</span><span>;</span><span>                          // 主动谦让，优先允许对方进</span></div></div><div><div><div>12</div></div><div><span>while</span><span> (</span><span>flag</span><span>[</span><span>0</span><span>] </span><span>&amp;&amp;</span><span> turn </span><span>==</span><span> </span><span>0</span><span>);</span><span>      // 只有“对方想进 且 轮到对方”时才等待</span></div></div><div><div><div>13</div></div><div><span>critical section;</span><span>                  // 临界区</span></div></div><div><div><div>14</div></div><div><span>flag</span><span>[</span><span>1</span><span>] </span><span>=</span><span> </span><span>false</span><span>;</span><span>                   // 退出区</span></div></div><div><div><div>15</div></div><div><span>remainder section;</span><span>                 // 剩余区</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ul>
<li>解决了什么问题：
完美综合了算法一和算法三，同时满足了：
<ol>
<li>空闲让进：若对方不想进（<code>flag[j] == false</code>），自己可以直接进。</li>
<li>忙则等待：若双方同时请求，<code>turn</code> 的最终赋值必定有先后，后写入 <code>turn</code> 的进程会把优先权让给先写入的进程，确保同一时刻仅一人进入。</li>
<li>有限等待：彼此都有谦让机制，不会形成永久死锁与无限饥饿。</li>
</ol>
</li>
<li>发现了什么问题：
违背“让权等待”准则。未获得执行权限的进程依然在 <code>while</code> 循环中不断空转判断（即“忙等待”，Busy Waiting），白白霸占 CPU 时钟周期而没有主动进入阻塞挂起状态。</li>
</ul></section><section><h4>硬件实现同步与互斥<a href="#硬件实现同步与互斥"><span>#</span></a></h4><p>中断屏蔽方法</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 进程进入与退出临界区的典型模式</span></div></div><div><div><div>2</div></div><div><span>...</span></div></div><div><div><div>3</div></div><div><span>关中断;</span><span>              // 进入区：禁止 CPU 响应中断，防止发生进程调度</span></div></div><div><div><div>4</div></div><div><span>临界区代码段;</span><span>        // 临界区：保证独占执行</span></div></div><div><div><div>5</div></div><div><span>开中断;</span><span>              // 退出区：恢复 CPU 响应中断的能力</span></div></div><div><div><div>6</div></div><div><span>剩余区代码段;</span><span>        // 剩余区</span></div></div><div><div><div>7</div></div><div><span>...</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>解决了什么问题：
从根源上杜绝了因“时钟中断”或“外部事件”导致的进程切换。由于单 CPU 下进程切换必须依赖中断，关中断后当前进程就能一口气将临界区执行完毕，极为简单地保证了互斥执行（忙则等待）。</li>
<li>发现了什么问题：
<ol>
<li>不适用于多处理器系统（SMP）：关中断指令仅对当前执行指令的这颗 CPU 核心有效，其他 CPU 核心上的进程仍然可以正常并发执行并闯入同一临界区。</li>
<li>严重破坏并发与系统安全性：若临界区较长，关中断会显著降低系统的并发能力和响应效率；关中断属于特权指令，若误开放给用户态程序，恶意进程一旦关中断后陷入死循环，整个操作系统将直接瘫痪崩溃。</li>
</ol>
</li>
</ul><p>TestAndSet 指令（TS 指令 / TSL 指令）</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// TS 指令的功能示意（硬件底层实现为原子操作，不可被中断）</span></div></div><div><div><div>2</div></div><div><span>boolean </span><span>TestAndSet</span><span><span>(</span><span>boolean </span></span><span>*</span><span><span>lock</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>boolean old;</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>old </span><span>=</span><span> </span><span>*</span><span>lock;</span><span>     // 1. 读取 lock 的旧值</span></div></div><div><div><div>5</div></div><div><span>    </span><span>*</span><span>lock </span><span>=</span><span> </span><span>true</span><span>;</span><span>    // 2. 将 lock 强制置为 true（加锁）</span></div></div><div><div><div>6</div></div><div><span>    </span><span>return</span><span> old;</span><span>      // 3. 返回旧值</span></div></div><div><div><div>7</div></div><div><span>}</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>// 进程实际调用的加锁逻辑</span></div></div><div><div><div>10</div></div><div><span>// lock 为全局共享变量，初值为 false（表示无锁）</span></div></div><div><div><div>11</div></div><div><span>while</span><span> (</span><span>TestAndSet</span><span>(</span><span>&amp;</span><span><span>lock</span><span>));</span></span><span>  // 进入区：原子测试并加锁，返回 true 则一直在此忙循环等待</span></div></div><div><div><div>12</div></div><div><span>critical section;</span><span>           // 临界区</span></div></div><div><div><div>13</div></div><div><span>lock </span><span>=</span><span> </span><span>false</span><span>;</span><span>               // 退出区：解锁，释放临界资源</span></div></div><div><div><div>14</div></div><div><span>remainder section;</span><span>          // 剩余区</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>解决了什么问题：
将软件算法中致命的“检查锁”与“设置锁”合二为一，由硬件电路直接打包成一条原子指令。在进入临界区时绝不可能发生进程切换导致两个进程同时拿到锁；且由于 <code>lock</code> 是内存中的共享变量（配合硬件总线锁定），该机制完全适用于多处理器系统。</li>
<li>发现了什么问题：
<ol>
<li>违背“让权等待”准则：未抢到锁的进程必须在 <code>while</code> 循环中死死空转（忙等待），极大地空耗 CPU 时钟周期。</li>
<li>可能导致“饥饿”现象（违背有限等待）：当锁释放的一瞬间，所有正在自旋等待的 CPU/进程凭硬件总线抢占能力再次竞争，调度顺序完全随机，可能导致某些倒霉进程长期抢不到锁。</li>
</ol>
</li>
</ul><p>Swap 指令（XCHG 指令）</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// Swap 指令的功能示意（硬件底层实现为原子操作，不可被中断）</span></div></div><div><div><div>2</div></div><div><span>void</span><span> </span><span>Swap</span><span><span>(</span><span>boolean </span></span><span>*</span><span><span>a</span><span>,</span><span> boolean </span></span><span>*</span><span><span>b</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>boolean temp </span><span>=</span><span> </span><span>*</span><span>a;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>*</span><span>a </span><span>=</span><span> </span><span>*</span><span>b;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>*</span><span>b </span><span>=</span><span> temp;</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>// 进程实际调用的加锁逻辑</span></div></div><div><div><div>9</div></div><div><span>// lock 为全局共享变量，初值为 false（表示无锁）</span></div></div><div><div><div>10</div></div><div><span>// key 为当前进程的私有局部变量</span></div></div><div><div><div>11</div></div><div><span>boolean key </span><span>=</span><span> </span><span>true</span><span>;</span><span>         // 局部变量初始化为 true（代表手里拿着一把关着的锁）</span></div></div><div><div><div>12</div></div><div><span>while</span><span> (key </span><span>!=</span><span> </span><span>false</span><span>) {</span><span>      // 进入区：只有通过交换拿到 false（开锁状态），循环才结束</span></div></div><div><div><div>13</div></div><div><span>    </span><span>Swap</span><span>(</span><span>&amp;</span><span>lock, </span><span>&amp;</span><span>key);</span><span>      // 原子地交换 key 与 lock 的内容</span></div></div><div><div><div>14</div></div><div><span>}</span></div></div><div><div><div>15</div></div><div><span>critical section;</span><span>           // 临界区</span></div></div><div><div><div>16</div></div><div><span>lock </span><span>=</span><span> </span><span>false</span><span>;</span><span>               // 退出区：释放锁</span></div></div><div><div><div>17</div></div><div><span>remainder section;</span><span>          // 剩余区</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ul>
<li>解决了什么问题：
与 TS 指令本质相同，利用硬件原子交换，巧妙地用进程私有的 <code>key = true</code> 把共享的 <code>lock = false</code>“换”出来。一旦自己手里的 <code>key</code> 变成了 <code>false</code>，说明原先锁是开的，且此时共享的 <code>lock</code> 已经被自己置换成了 <code>true</code>（自动上了锁），同样能跨多核 CPU 完美实现原子加锁与互斥访问。</li>
<li>发现了什么问题：
<ol>
<li>违背“让权等待”准则：只要 <code>key</code> 一直是 <code>true</code>，进程就会不眠不休地在 <code>while</code> 循环里不断执行 <code>Swap</code>，占用处理机资源造成忙等。</li>
<li>可能导致“饥饿”现象：与 TS 指令相同，锁被放开的瞬间各个等待进程地位均等且随机争夺，无法从机制上严格保证每个等待进程都能在有限时间内获得临界区。</li>
</ol>
</li>
</ul></section><section><h4>互斥锁 / 自旋锁<a href="#互斥锁--自旋锁"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 互斥锁的数据定义与操作（acquire 和 release 必须为原子操作）</span></div></div><div><div><div>2</div></div><div><span>boolean available </span><span>=</span><span> </span><span>true</span><span>;</span><span> // 表示锁是否可用，初值为 true（开锁状态）</span></div></div><div><div><div>3</div></div><div><span>// 获取锁的操作</span></div></div><div><div><div>4</div></div><div><span>void</span><span> </span><span>acquire</span><span>() {</span></div></div><div><div><div>5</div></div><div><span>    </span><span>while</span><span> (</span><span>!</span><span>available)</span></div></div><div><div><div>6</div></div><div><span><span>        </span></span><span>;</span><span>                 // 进入区：若锁不可用则循环忙等待（自旋）</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>available </span><span>=</span><span> </span><span>false</span><span>;</span><span>    // 抢到锁，置为不可用</span></div></div><div><div><div>8</div></div><div><span>}</span></div></div><div><div><div>9</div></div><div><span>// 释放锁的操作</span></div></div><div><div><div>10</div></div><div><span>void</span><span> </span><span>release</span><span>() {</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>available </span><span>=</span><span> </span><span>true</span><span>;</span><span>     // 退出区：释放锁，置为可用</span></div></div><div><div><div>12</div></div><div><span>}</span></div></div><div><div><div>13</div></div><div><span>// 进程典型使用流程</span></div></div><div><div><div>14</div></div><div><span>acquire</span><span>();</span><span>                // 申请锁</span></div></div><div><div><div>15</div></div><div><span>critical section;</span><span>         // 临界区</span></div></div><div><div><div>16</div></div><div><span>release</span><span>();</span><span>                // 释放锁</span></div></div><div><div><div>17</div></div><div><span>remainder section;</span><span>        // 剩余区</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ul>
<li>
<p>解决了什么问题：
提供了一种最直观、最简单的互斥同步工具。将底层的硬件原子操作（如 TS/Swap 指令）封装为标准的 acquire() 和 release() 接口，保证在任意时刻临界区内最多只有一个进程在执行，满足了“空闲让进”与“忙则等待”。在多处理器（SMP）系统中，若临界区执行时间极短，等待的线程省去了进程上下文切换的巨大开销，效率极高。</p>
</li>
<li>
<p>发现了什么问题：</p>
<ol>
<li>违背“让权等待”准则：未抢到锁的进程不会休眠，而是在 acquire() 中持续死循环（忙等待/自旋），白白空耗 CPU 周期。</li>
<li>单 CPU 系统下极度低效：若在单 CPU 系统中，占用锁的进程被切换下台，等待锁的进程只会占着 CPU 空转直到时间片耗尽，没有任何积极意义。</li>
</ol>
</li>
</ul><p>需要注意，互斥锁仍然违背让权等待原则，真正不违背让权等待原则的是信号量。</p><p>互斥锁只具有 0 和 1，表达不了丰富的信息。</p><p>此外，互斥锁是霸占 CPU 等待，而信号量是直接阻塞。</p></section><section><h4>信号量<a href="#信号量"><span>#</span></a></h4><p>P（wait）操作与 V（signal）操作。</p><p>P 的语义是申请一个资源：信号量减 1，如果减完小于 0 就阻塞自己，挂到该信号量的等待队列上。</p><p>V 的语义是释放一个资源：信号量加 1，如果加完小于等于 0，说明还有进程在等，就唤醒一个。</p><p>需要注意，P 和 V 必须配对，同一个资源先 P 后 V，顺序写反就可能死锁。</p><p>整型信号量和记录型信号量的区别在“小于 0 之后怎么办”：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 整型信号量：不满足就一直空转，违背让权等待</span></div></div><div><div><div>2</div></div><div><span>void</span><span> </span><span>P</span><span>(</span><span>int</span><span> </span><span>*</span><span><span>S</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span>    </span><span>while</span><span> (</span><span>*</span><span>S </span><span>&lt;=</span><span> </span><span>0</span><span>);</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>(</span><span>*</span><span>S)</span><span>--</span><span>;</span></div></div><div><div><div>5</div></div><div><span>}</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>// 记录型信号量：不满足就阻塞，遵守让权等待</span></div></div><div><div><div>8</div></div><div><span>void</span><span> </span><span>P</span><span><span>(</span><span>semaphore </span></span><span>*</span><span><span>S</span><span>) {</span></span></div></div><div><div><div>9</div></div><div><span>    </span><span>S</span><span>-&gt;</span><span>value</span><span>--</span><span>;</span></div></div><div><div><div>10</div></div><div><span>    </span><span>if</span><span> (</span><span>S</span><span>-&gt;</span><span>value</span><span> </span><span>&lt;</span><span> </span><span>0</span><span>)</span></div></div><div><div><div>11</div></div><div><span>        </span><span>block</span><span>(</span><span>S</span><span>-&gt;</span><span>list</span><span>);</span><span>   // 挂到等待队列并阻塞</span></div></div><div><div><div>12</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>需要注意，记录型信号量的 value 为负时，其绝对值就是等待队列里阻塞进程的个数，这个结论选择题很爱考。</p><p>整型信号量类似互斥锁，靠忙等；记录型信号量引入了等待队列，所以前者违背让权等待，后者才全部遵守。</p><p>经典的 3 个模型放在大题解析那块。</p></section><section><h4>管程<a href="#管程"><span>#</span></a></h4><p>深入理解一下管程。</p><p>管程可以用于进程的同步互斥，本质是代码，封装了共享变量和对它们的操作。</p><p>可以粗略地理解为一个大 key，key 内部锁着一些变量，例如读者写者问题中的 cnt。</p><p>考虑这样一种情况，对于读者写者问题，读者可以同时读，但是每一个读者也只能互斥的访问 cnt。</p><p>所以要辨析清楚，读者可以同时读，这个“读”指的是同时读文件，而不是同时读 cnt。</p><p>所以，管程内部只能有一个进程执行。</p><p>需要注意，管程只保证互斥，不保证同步，同步要靠条件变量（condition variable）。</p><p>条件变量有两个操作：wait 和 signal。wait 把自己挂到该条件变量的等待队列上，并释放管程的锁；signal 唤醒一个等待者，如果没有等待者，signal 什么也不做，不会累积。</p><p>所以和信号量不同，条件变量的 signal 没有“记忆”，错过就没了，这也是管程题最容易错的地方。</p><p>管程里有几个条件变量，就有几条等待队列；而入口处只有一条互斥队列。</p></section></section><section><h3>死锁<a href="#死锁"><span>#</span></a></h3><section><h4>资源竞争与推进顺序非法<a href="#资源竞争与推进顺序非法"><span>#</span></a></h4><p>死锁的起因主要有两个：资源竞争和推进顺序非法。</p><p>资源竞争是指资源不足，多个进程同时需要同一类资源；推进顺序非法是指资源够用，但申请和释放的顺序不合适，形成了循环等待。</p><p>需要注意，资源竞争不一定导致死锁，只有竞争不可剥夺资源且分配不当才会；推进顺序非法也不一定死锁，要正好构成环路。</p></section><section><h4>死锁与饥饿<a href="#死锁与饥饿"><span>#</span></a></h4><p>饥饿指的是进程长时间无法获得所需资源，导致无法继续执行，然而在充分的时间里，还是可以获得资源的。</p><p>然而死锁指的是逻辑上已经不可以继续执行了。</p></section><section><h4>死锁的四个条件<a href="#死锁的四个条件"><span>#</span></a></h4><ul>
<li>互斥</li>
<li>不剥夺</li>
<li>请求并保持</li>
<li>循环等待</li>
</ul><p>题目里很可能出这几个东西的辨析，尤其是关于不剥夺和请求并保持需要理解清楚。</p><p>不剥夺条件的意思是我申请到的资源不会被其他进程抢夺。</p><p>请求并保持的意思是我已经请求到了一个资源，我还需要另一个资源，我会在不释放我已经申请到的这个资源的前提下，申请另一个资源。</p><p>这俩要想清楚。</p></section><section><h4>死锁预防<a href="#死锁预防"><span>#</span></a></h4><p>死锁预防的方式是破坏四个条件。</p><ul>
<li>破坏互斥条件：采用共享设备，然而很多设备都是独占的，所以很多时候并不可行。</li>
<li>破坏不剥夺条件：强行释放，一般不可取</li>
<li>破坏请求并保持条件：静态分配（一次性分配所有运行所需的）；动态释放（使用完的设备先释放）</li>
<li>破坏循环等待条件：设置资源有序分配法。</li>
</ul></section><section><h4>死锁避免<a href="#死锁避免"><span>#</span></a></h4><p>典型的代表是银行家算法。</p><p>然而需要注意，其不是限制进程申请资源的顺序，而是在进程动态提出资源请求时，先进行安全性检测（试探性分配），若分配后系统仍能处于安全状态（即能找到安全序列）才予以分配，否则暂不分配让进程等待。</p><p>银行家算法要维护四个量：可利用资源 Available、最大需求 Max、已分配 Allocation、还需资源 Need，其中</p><span><span><span>Need=Max−Allocation\text{Need}=\text{Max}-\text{Allocation}</span><span><span><span></span><span><span>Need</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>Max</span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>Allocation</span></span></span></span></span></span><p>安全性检测的过程是：找一个 Need 不超过 Available 的进程，假设它运行完并归还全部资源，把它加入安全序列，再继续找下一个；如果所有进程都能进入安全序列，说明存在安全序列，系统安全。</p><p>需要注意，安全状态一定不会死锁，不安全状态不一定死锁，只是可能死锁。银行家算法是分配前预判，属于死锁避免，不是死锁预防。</p></section><section><h4>死锁检测<a href="#死锁检测"><span>#</span></a></h4><p>注意要记得资源分配图。</p><p>资源分配图里，方框是资源，框里的点表示实例数；圆圈是进程；进程指向资源的边是请求边，资源指向进程的边是分配边。</p><p>化简方法是：找一个既不阻塞又非孤立的进程，把它的请求边和分配边都消掉（相当于它运行完归还资源），重复这个过程。能消掉所有边，图就是可完全化简的，没有死锁；如果最后还剩下有边的环路，就发生了死锁。</p><p>需要注意，图里有环不一定是死锁，因为同类资源有多个实例时，环上的进程可以等别人还资源；但每个资源类只有一个实例时，有环就是死锁。</p><p>死锁发生后，可以采用以下三种方式来解除：</p><ul>
<li>资源剥夺</li>
<li>进程撤销</li>
<li>进程回退</li>
</ul><p>一定要往经典模型去思考。</p></section></section></section>
<section><h2>内存管理<a href="#内存管理"><span>#</span></a></h2><section><h3>内存管理 - 考纲<a href="#内存管理---考纲"><span>#</span></a></h3><ul>
<li>内存管理基础
<ul>
<li>内存管理概念：逻辑地址与物理地址空间、地址变换、内存共享、内存保护、内存分配与回收</li>
<li>连续分配管理方式</li>
<li>页式管理、段式管理、段页式管理</li>
</ul>
</li>
<li>虚拟内存管理
<ul>
<li>虚拟内存的基本概念；请求页式管理；页框的分配与回收；页置换算法</li>
<li>内存映射文件；虚拟存储器性能的影响以及改进方式</li>
</ul>
</li>
</ul></section><section><h3>内存管理概念<a href="#内存管理概念"><span>#</span></a></h3><section><h4>程序链接与装入<a href="#程序链接与装入"><span>#</span></a></h4><p>编译 - 链接 - 装入</p>

<table><thead><tr><th>链接方式</th><th>链接发生的时间节点</th><th>模块是否提前装入内存</th><th>核心优势</th><th>核心劣势</th></tr></thead><tbody><tr><td>静态链接</td><td>程序运行前（编译成可执行文件时）</td><td>全量打包，一次性装入</td><td>运行时无额外开销，直接执行</td><td>重复存储、浪费内存、升级困难</td></tr><tr><td>装入时动态链接</td><td>程序装入内存时</td><td>全量装入（边装入边链接）</td><td>便于模块独立更新与跨程序共享</td><td>未调用的模块也得跟着装入占用内存</td></tr><tr><td>运行时动态链接</td><td>程序运行到需要时（执行中动态按需）</td><td>仅在调用时才装入</td><td>最大化节约内存，启动飞快</td><td>首次动态调用时有寻址和装入开销</td></tr></tbody></table><p>辨析一下链接的三种方式：</p><p>静态链接是运行前就把需要的库打包好，占磁盘空间，然后装入时一次性全转入</p><p>装入时动态链接意思是边装入边链接，但也是全都装入</p><p>运行时动态链接意思是需要的模块才链接。</p><p>需要辨析链接和装入的区别。</p>

<table><thead><tr><th>对比维度</th><th>静态装入 (绝对装入)</th><th>可重定位装入 (静态重定位)</th><th>动态运行时装入 (动态重定位)</th></tr></thead><tbody><tr><td>地址转换时机</td><td>编译/链接时（在程序产生时就已确定物理地址）</td><td>装入内存时（装入的一瞬间完成所有地址转换）</td><td>程序执行时（真正访问某条指令/数据时才实时转换）</td></tr><tr><td>地址转换方式</td><td>无需转换。逻辑地址就是绝对物理地址。</td><td>软件重定位。装入程序根据分配的起始地址，一次性修改程序内所有相对地址。</td><td>硬件重定位。由 CPU 内置的重定位寄存器（基址寄存器）在取指执行时动态相加完成映射。</td></tr><tr><td>装入后能否移动</td><td>绝对不能（地址全写死在二进制代码里）</td><td>不能（地址在装载时已固化，移动会导致内部引用错乱）</td><td>可以自由移动（只需修改重定位寄存器的基地址即可实现进程在内存中的换入换出和腾挪）</td></tr><tr><td>硬件支持要求</td><td>仅需最简单的单一硬件，无特殊要求。</td><td>无需特殊硬件（纯软件算法修改地址）。</td><td>必须依赖专用硬件（如 MMU、重定位寄存器、限长寄存器）。</td></tr><tr><td>内存分配要求</td><td>只能装入固定内存位置，仅支持单道程序。</td><td>必须分配连续的物理内存空间，一旦分配不可拆分。</td><td>允许分配连续空间，亦是后续非连续分配、虚拟内存与分页分段机制的底层基石。</td></tr><tr><td>适用场景</td><td>早期单道批处理系统、极简裸机嵌入式系统。</td><td>早期多道批处理系统（无虚拟内存概念）。</td><td>现代所有主流操作系统（支持多任务并发、进程交换与虚拟内存）。</td></tr></tbody></table><p>三种内存装入方式辨析</p><ul>
<li>
<p>静态装入（绝对装入）：在编译或链接时就已经确定了绝对物理地址，指令中的地址直接写死，不需要任何重定位寄存器介入，仅适用于早期的单道程序环境。</p>
</li>
<li>
<p>可重定位装入（静态重定位）：装入程序在将模块载入内存时，根据分配的内存起始物理地址，通过纯软件方式一次性修改程序内的所有相对逻辑地址（加上起始基地址偏移量）。装入完成后物理地址就此固定，程序在运行期间不可在内存中移动。</p>
</li>
<li>
<p>动态运行时装入（动态重定位）：装入模块进入内存后依然保留相对逻辑地址，将地址转换推迟到 CPU 实际执行指令的那一刻才动态进行。在执行指令时，硬件（重定位寄存器）自动将逻辑地址与基地址相加得出物理地址，因此程序可以在内存中便捷地移动（支持紧凑以消除外部碎片）。</p>
</li>
<li>
<p>考点延伸辨析：在狭义的连续分配管理中（如动态重定位分区分配），每个进程仅依靠一个重定位寄存器，因此只能分配连续的物理地址，便于系统进行整体搬迁和碎片紧凑；而在更广义的现代内存管理中，“动态运行时装入”这一核心思想被直接拓展到了基本分页、请求分页及分段等非连续（离散）分配机制中（由单基址寄存器升级为页表基址寄存器 + 硬件 MMU 查表），从而彻底打破了物理地址必须连续的限制。</p>
</li>
</ul></section><section><h4>内存保护、共享与回收<a href="#内存保护共享与回收"><span>#</span></a></h4><p>内存保护主要是通过重定位寄存器来判断，共享则是共享物理内存，将之映射到逻辑地址空间中。</p><p>具体有两种做法：</p><ul>
<li>上下界寄存器：上界存起始地址，下界存末地址，访问时判断地址是否落在区间内；</li>
<li>基址寄存器加限长寄存器：访问时先加上基址，再判断偏移是否小于限长。</li>
</ul><p>需要注意，越界检查必须由硬件在地址变换时完成，不能靠软件检查，否则用户态程序可以绕过。</p><p>共享是把同一块物理内存映射到多个进程的逻辑地址空间，只读的代码段共享最典型。写时复制是共享的一种延伸：fork 之后父子进程共享页面，谁先写谁复制一份。</p><p>分配和回收主要基于页式和段式管理：页式按页框分配，段式按段分配。</p><p>此外，硬件资源是昂贵的，所以对于整个 CPU 可能只有一个重定位寄存器，进程切换时要更新它，这也算上下文切换的一部分。</p></section><section><h4>连续分配策略辨析<a href="#连续分配策略辨析"><span>#</span></a></h4><ul>
<li>
<p>单一连续分配</p>
</li>
<li>
<p>固定分区分配</p>
<ul>
<li>分区大小相等：其实还有应用，例如要管理 k 个相同的炼钢厂。</li>
<li>分区大小不等</li>
</ul>
</li>
<li>
<p>动态分区分配</p>
<ul>
<li>首次适应算法：每次匹配从头开始，找到第一个适配的空闲分区</li>
<li>邻近适应算法：从上次分配结束的为止开始向后找到第一个可以适配的。</li>
<li>最佳适应算法：每次都选择可以被容纳的最小的一块（需要注意重新排序），容易出现外碎片</li>
<li>最坏适应算法：每次都选择最大的那一块（注意需要重新排序），大的装不进去</li>
</ul>
</li>
</ul><p>然而实际应用中，反而首次适应算法式最好的。</p><ul>
<li>基于索引的算法
<ul>
<li>快速适应算法：根据系统平时常用的，固定分几个不同大小的区，构成链表，然后找最小可以容纳的分配，缺点是实现复杂以及内碎片</li>
<li>伙伴系统 (Buddy System)：所有可用空闲分区的大小均规定为 <span><span>2k2^k</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span></span></span></span></span></span></span></span>（<span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 为整数）。
<ul>
<li>分配：为大小为 <span><span>SS</span><span><span><span></span><span>S</span></span></span></span> 的请求寻找能容纳它的最小 <span><span>2i2^i</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span></span></span></span></span></span></span></span> 分区；若当前无空闲 <span><span>2i2^i</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span></span></span></span></span></span></span></span> 块，则将更大的空闲块（如 <span><span>2i+12^{i+1}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>i</span><span>+</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>）对半切开分成两半（互为“伙伴”），重复折半直到切出合适的 <span><span>2i2^i</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span></span></span></span></span></span></span></span> 大小分配给进程。</li>
<li>回收：当释放一块 <span><span>2i2^i</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span></span></span></span></span></span></span></span> 空间时，若其相邻的“伙伴块”也是空闲的，则立即合并为一个 <span><span>2i+12^{i+1}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>i</span><span>+</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 的大块，并可向上递归继续合并。这个伙伴块是唯一固定的，例如我是原来大空间的右边一半，那么我一定是找左边那一半；反之亦然</li>
<li>评价：极大加快了查找与合并速度，有效减少了外部碎片，但会产生一定的内部碎片。</li>
</ul>
</li>
<li>哈希算法：以空闲区大小为关键字建立哈希表分配</li>
</ul>
</li>
</ul></section><section><h4>基本分页管理<a href="#基本分页管理"><span>#</span></a></h4><ul>
<li>
<p>基本分页管理的概念</p>
<p>页面，页框，实页号，页号，物理页框等概念。</p>
<p>以一个 <span><span>4 GB4\text{ GB}</span><span><span><span></span><span>4</span><span><span> GB</span></span></span></span></span> 的逻辑空间为例，如果页大小为 <span><span>4 KB=212 B4\text{ KB}=2^{12}\text{ B}</span><span><span><span></span><span>4</span><span><span> KB</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>12</span></span></span></span></span></span></span></span></span><span><span> B</span></span></span></span></span>，那么页内地址占 12 位，页号占 <span><span>32−12=2032-12=20</span><span><span><span></span><span>32</span><span></span><span>−</span><span></span></span><span><span></span><span>12</span><span></span><span>=</span><span></span></span><span><span></span><span>20</span></span></span></span> 位。</p>
</li>
<li>
<p>基本地址变换</p>
<p>如果越界中断，那么直接返回。如果没有越界，那么根据虚页号的前 20 位直接访问页表数组下标，得到物理页框号，物理页框号和原来的 12 位拼接，可以得到物理地址。</p>
<p>需要注意，页表没有全相联、组相联之类的概念，硬要说的话，查页表时，像一维数组下标寻址，一对一直接索引（无需相联比较）；而物理块放置时，任意虚页可放入任意物理页框，本质映射策略是全相联。一定要区分页表和 TLB 的概念。</p>
<p>页表类似数组 / 哈希表，而 TLB 才类似 cache（的组相联 / 全相联）！</p>
</li>
<li>
<p>基本分页的缺点</p>
<p>页式管理容易产生内碎片。</p>
</li>
</ul>

<table><thead><tr><th>归属分类</th><th>常见名词（同义词）</th><th>英文缩写</th><th>物理含义与位置</th></tr></thead><tbody><tr><td>逻辑侧（虚）</td><td>页面、页、虚页</td><td>Page / VP</td><td>进程逻辑地址空间被切分出的固定大小的数据块。</td></tr><tr><td></td><td>页号、虚页号</td><td>Page Number / VPN</td><td>逻辑页的编号，位于逻辑地址的高位（即数组下标）。</td></tr><tr><td></td><td>页内地址、页内偏移量</td><td>Page Offset / Offset</td><td>相对该页开头的相对偏移，位于逻辑地址的低位。</td></tr><tr><td>物理侧（实）</td><td>页框、物理页框、实页、物理块、内存块</td><td>Page Frame / Frame</td><td>物理内存被切分出的固定大小区域，大小必须与页面一致。</td></tr><tr><td></td><td>页框号、物理页框号、实页号、物理块号</td><td>Frame Number / PFN</td><td>物理页框的物理编号，位于物理地址的高位。</td></tr><tr><td>映射桥梁</td><td>页表</td><td>Page Table</td><td>连续的一维数组，建立了从“页号（下标）”到“页框号（内容）”的映射。</td></tr><tr><td></td><td>页表项</td><td>Page Table Entry (PTE)</td><td>页表中的一行（一个元素），里面存着对应页框号及状态位。</td></tr></tbody></table></section><section><h4>含有 TLB 的页表<a href="#含有-tlb-的页表"><span>#</span></a></h4><p>在操作系统（这门课）里，TLB 不需要考虑组相联，仅需要考虑全相联，计组那块要考虑组相联。</p><p>TLB 存储的是 tag - 物理页框号，还有脏位等。</p><p>TLB 和 cache 类似，一定是要和页表做区分，具体如下：</p><p>TLB 命中时，地址变换不需要访存，加上取数据一共 1 次访存；TLB 未命中时要先查页表再取数据，一共 2 次，多级页表还要更多。</p><p>TLB 一般用全相联或组相联，替换算法用随机或 LRU，表项里除了 tag 和页框号，还有有效位、访问位和 ASID（区分进程，避免进程切换时整表刷新）。</p></section><section><h4>辨析 TLB / 一页与页面置换算法<a href="#辨析-tlb--一页与页面置换算法"><span>#</span></a></h4><p>在 TLB 里，才会有替换的概念，而在一页内，这个页仅是记录，而并不会发生缺失。只有这一整个页需要被替换掉的情况，也就是页面置换。</p><p>一页本身并没有一页的某一项被替换的概念。</p></section><section><h4>二级页表 &amp; 多级页表<a href="#二级页表--多级页表"><span>#</span></a></h4><p>一级页表的问题是：页表必须是连续的，页表很大时会占掉一大片连续主存，而且进程可能只用几个页，却要把整张页表都建起来。</p><p>考虑采用二级页表：<span><span>4 GB4\text{ GB}</span><span><span><span></span><span>4</span><span><span> GB</span></span></span></span></span> 的地址空间，页面 <span><span>4 KB4\text{ KB}</span><span><span><span></span><span>4</span><span><span> KB</span></span></span></span></span> 占 12 位，剩下的 20 位页号再拆成两段，一级页号 10 位、二级页号 10 位。</p><p>地址变换时，先用前 10 位在一级页表（页目录）里查到二级页表的物理页框号，再用中间 10 位在二级页表里查到数据页的物理页框号，最后和 12 位页内偏移拼成物理地址。</p><p>需要注意，页目录必须常驻内存且必须连续；二级页表可以离散存放，也可以根本不存在（对应页目录项有效位为 0），这正是二级页表省内存的原因。</p><p>还有一点，页表尽量都不要超过 1 页，是为了让一次查表只访存一次；页表超过一页就要分级，访存次数也跟着增加。</p><p>还是要辨析清楚，号和具体内存地址的关系。号 / 块一定指的是以 xx 为基准的。</p><p>在答题的时候，经常会混淆以块为基准还是以具体地址为基准！</p><p>事实上，对于一级页表（仅一级），页表始址寄存器也只用存其物理页号，而不需要存具体的 0 号记录对应的地址，因为边界对齐。</p></section><section><h4>段表<a href="#段表"><span>#</span></a></h4><p>段式管理容易产生外碎片，不利于内存的利用；有利于程序的动态链接（因为是按逻辑的）；</p><p>段号，段长，段内偏移量。</p><p>注意，段表寄存器里存的是段表长度和段表初始地址！</p><p>段表的逻辑是先取出段号，如果段号 &gt;= 段表长度，那么越界中断（段表越界）。和页表类似的，一个进程对应一个段表，而不是全局进程对应一个段表。</p><p>第二步如果段内偏移量大于等于段长，那么发生段内越界中断。</p><p>一定要捋清楚地址对应的是什么，段表寄存器里存的是什么。</p><p>由于实际生活中分段已经几乎不使用了，所以考试也基本不大可能考大题。</p><p>段的长度不固定且段对用户不透明，程序员在指定的时候必须指定段号以及偏移量（是二维的）。</p><p>段可以共享，把物理段映射到不同的逻辑段。</p></section><section><h4>段页式<a href="#段页式"><span>#</span></a></h4><p>段页式即先分段再分页，本质是按页存储的。</p><p>在段页式存储中，每个进程仅有一张段表，但是可能有多个页表（每个段一张）</p></section></section><section><h3>虚拟内存管理<a href="#虚拟内存管理"><span>#</span></a></h3><section><h4>基本分页和请求分页<a href="#基本分页和请求分页"><span>#</span></a></h4><p>基本分页就是得一次性装入，而请求分页可以按需装入，动态置换。</p><p>虚拟内存有三个特征：</p><ul>
<li>多次性：作业可以分多次调入内存，不需要一次全装入；</li>
<li>对换性：作业运行中可以换入换出；</li>
<li>虚拟性：逻辑上扩充了内存容量，用户看到的空间大于实际物理内存。</li>
</ul><p>实现虚拟内存要三个支撑：一定容量的外存、页表这类数据结构、缺页中断机构。所以虚拟内存的容量上限由地址位数决定，而不是由内存加外存的大小决定。</p><p>需要注意，虚拟内存建立在局部性原理上，如果程序没有局部性，缺页会频繁发生，虚拟内存反而比不分页更慢。</p></section><section><h4>页表的机制<a href="#页表的机制"><span>#</span></a></h4><p>请求分页的页表项比基本分页多几个字段：</p><ul>
<li>状态位：该页是否在内存；</li>
<li>访问字段：最近是否被访问过，供置换算法使用；</li>
<li>修改位：调入后有没有被改过，决定换出时要不要写回；</li>
<li>外存地址：该页在外存的位置。</li>
</ul><p>地址变换的顺序是：先查快表，不命中再查页表；页表项状态位为 0 就产生缺页中断，由操作系统调页；调页完成后更新页表项和快表，重新执行被中断的指令。</p><p>需要注意，缺页中断是内中断（异常），处理完要重新执行当前指令；而设备 I/O 完成中断是外中断，处理完执行下一条指令。</p></section><section><h4>缺页率与有效访问时间<a href="#缺页率与有效访问时间"><span>#</span></a></h4><p>设缺页率为 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span>，一次内存访问时间为 <span><span>tat_a</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，一次缺页处理时间为 <span><span>tft_f</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>f</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，其中包括磁盘 I/O 和操作系统开销，则有效访问时间为</p><span><span><span>EAT=(1−p) ta+p tf\text{EAT}=(1-p)\,t_a+p\,t_f</span><span><span><span></span><span><span>EAT</span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>p</span><span>)</span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>p</span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>f</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><p>如果再加一层快表，设快表命中率为 <span><span>qq</span><span><span><span></span><span>q</span></span></span></span>，快表访问时间为 <span><span>tbt_b</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>b</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，那么</p><span><span><span>EAT=q (tb+ta)+(1−q)[tb+(1−p) ta+p tf]\text{EAT}=q\,(t_b+t_a)+(1-q)\bigl[t_b+(1-p)\,t_a+p\,t_f\bigr]</span><span><span><span></span><span><span>EAT</span></span><span></span><span>=</span><span></span></span><span><span></span><span>q</span><span></span><span>(</span><span><span>t</span><span><span><span><span><span><span></span><span><span>b</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>q</span><span>)</span><span><span>[</span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>b</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>p</span><span>)</span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>p</span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>f</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>]</span></span></span></span></span></span><p>需要注意，缺页率对 EAT 的影响是决定性的：<span><span>tft_f</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>f</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是毫秒级，<span><span>tat_a</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是纳秒级，差了五六个数量级，所以缺页率只要到百分之一，性能就掉得很惨。</p><p>影响缺页率的因素有页面大小、分配的页框数、置换算法、程序局部性和写回策略。页面太小页表会膨胀、缺页变多；页面太大内部碎片变多、单次调页的 I/O 时间变长，所以是折中。</p></section><section><h4>页框分配与置换<a href="#页框分配与置换"><span>#</span></a></h4><ul>
<li>
<p>内存分配与置换策略</p>
<p>这里的核心维度只有两个：</p>
<ul>
<li>分配策略：给一个进程的物理页框数是固定死的，还是动态可变的？</li>
<li>置换策略：缺页要置换时，只能踢自己进程内部的页（局部），还是可以抢其他进程的页（全局）？</li>
</ul>
<p>三种合法组合：</p>
<ul>
<li>固定分配 + 局部置换：每个进程在运行前分配固定数量的物理块，运行期间总块数不变。发生缺页时，只能在自己分到的那几个块里挑一个踢出去。</li>
<li>可变分配 + 全局置换：系统保留一个空闲物理块队列。进程缺页时，操作系统从空闲块队列里划拨一块给它；若空闲块用光了，系统可以强行剥夺其他进程的物理块分配给当前进程。</li>
<li>可变分配 + 局部置换：根据进程缺页率的频繁程度，操作系统动态增加或减少分配给该进程的物理块数；但发生缺页置换时，仍然只能从该进程自己的块里挑一个踢掉。</li>
</ul>
</li>
<li>
<p>为什么没有“固定分配 + 全局置换”？</p>
<p>既然规定了“固定分配”，就要求每个进程拥有的物理块总数必须恒定不变。而“全局置换”允许从其他进程那里动态抢夺物理块，一旦抢了，被抢进程的块数减少，抢到进程的块数增加，两者的总块数都变了，直接打破了“固定”的前提！</p>
</li>
<li>
<p>调页时机</p>
<ul>
<li>预调页策略（Pre-paging）：
<ul>
<li>何时发生：主要用于进程启动前（初始化时）。</li>
<li>机制：利用空间局部性原理，预测进程接下来会用到哪些页，一次性把相邻的几个页提前调入内存。</li>
<li>特点：靠预测，成功率只有 50% 左右，主要由程序员通过系统调用显式指定或用于大块数据批量加载。</li>
</ul>
</li>
<li>请求调页策略（Demand Paging）：
<ul>
<li>何时发生：在进程运行过程中。</li>
<li>机制：平时不调，只有当 CPU 访问该页发生缺页中断（Page Fault）时，才被动地从外存调入。</li>
<li>特点：现代 OS 的通用标准策略，实现简单，但发生缺页时的 I/O 开销较大。</li>
</ul>
</li>
</ul>
</li>
<li>
<p>从何处调入页面？</p>
<p>在外存（磁盘）中，空间被明确划分为两块：</p>
<ul>
<li>文件区：存放普通文件，追求离散存储以提高空间利用率，I/O 速度较慢。</li>
<li>对换区（Swap 分区）：存放暂存的内存页面，采用连续分配方式，追求极致的 I/O 读写速度。</li>
</ul>
<p>页面调入的三种场景：</p>
<ul>
<li>对换区空间足够充足：
<ul>
<li>进程运行前，把与该进程相关的所有数据从文件区全部预先复制到对换区。</li>
<li>之后只要发生缺页，一律直接从高速的对换区调入；换出时也全部写回对换区。</li>
</ul>
</li>
<li>对换区空间不够充裕：
<ul>
<li>没修改过的页（只读代码、未写过的数据）：换出时直接丢弃，无需写入外存；下次需要时直接去文件区重新读。</li>
<li>被修改过的页（脏页，Dirty Page）：换出时必须写入对换区，下次缺页也从对换区调入。</li>
</ul>
</li>
<li>UNIX 策略：
<ul>
<li>与进程相关的代码段、数据段在第一次使用时，统一从文件区调入。</li>
<li>只要这一页被调入过内存，一旦它未来被换出，一律写入对换区；下次如果再需要它，就改从对换区调入。</li>
<li>和对换区空间不够的策略对比，对换区空间不够也是从文件去读入，不同点在于不充裕的时候，修改过的才放进对换区，而 UNIX 是只要访问过了就放对换区。</li>
</ul>
</li>
</ul>
<p>“交换频繁而 CPU 很空闲”的现象，即抖动（颠簸）！</p>
<p>本质原因：同时运行的进程数量过多（多道程序度过高），导致分配给每个进程的物理块数量少于其工作集（Working Set）的大小。进程大部分时间都在等磁盘 I/O 调页，CPU 反而被闲置。</p>
<p>解决抖动：</p>
<ol>
<li>减少多道程序度：挂起或杀死部分进程，把腾出来的物理页框集中分给剩下的进程，确保每个进程都能装下其工作集。</li>
<li>增加物理内存容量：给服务器插更多的物理内存条。</li>
<li>基于工作集算法进行动态调整：防止给进程分配的页面数低于下限。</li>
</ol>
</li>
<li>
<p>置换算法</p>
<ul>
<li>OPT（最佳置换算法，Optimal）
<ul>
<li>淘汰规则：淘汰在未来最长时间内不再被访问的页面。</li>
<li>评价：性能最好，缺页率最低。但操作系统无法预知未来，因此在物理上无法实现，通常仅作为衡量其他算法优劣的理论上限。</li>
</ul>
</li>
<li>FIFO（先进先出置换算法）
<ul>
<li>淘汰规则：淘汰最早进入内存的页面。</li>
<li>评价：实现最简单（维护一个队列），但性能很差，没有考虑局部性。</li>
<li>致命考点——Belady 异常：正常算法物理块越多缺页越少，但 FIFO 会出现为进程分配的物理块增加，缺页次数反而不减反增的怪异现象！</li>
</ul>
</li>
<li>LRU（最近最少使用算法，Least Recently Used）
<ul>
<li>淘汰规则：淘汰过去一段时间内最久未被访问的页面。</li>
<li>实现机制：依靠硬件计数器或双向链表/软件堆栈，记录每个页面的上次访问时间。</li>
<li>评价：性能最接近 OPT，且属于堆栈型算法，绝对不会产生 Belady 异常！但硬件维护代价和开销极高。</li>
</ul>
</li>
<li>CLOCK 算法（时钟置换 / NRU 最近未使用）
<ul>
<li>淘汰规则：把内存中的页面排成一个循环队列，每页设置一个访问位 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span>（0 或 1）。
<ul>
<li>当页面被访问时，硬件将 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 置为 1。</li>
<li>置换时，指针开始循环扫描：</li>
<li>若遇到 <span><span>u=0u = 0</span><span><span><span></span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，直接选定淘汰！</li>
<li>若遇到 <span><span>u=1u = 1</span><span><span><span></span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>，将该位的 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 清零（给一次免死机会），指针向前移动继续找。</li>
<li>评价：以极小的硬件代价（仅需 1 个 bit）近似模拟了 LRU 的性能。</li>
</ul>
</li>
</ul>
</li>
<li>改进型 CLOCK 算法（综合考虑【访问位 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span>】与【修改位 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span>】）
<ul>
<li>核心思想：被修改过的页面（<span><span>m=1m=1</span><span><span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>）换出时需要写回磁盘，I/O 开销很大！所以优先淘汰既没被访问、又没被修改过的页面！</li>
<li>扫描四步法（最多转 4 轮）：
<ul>
<li>第 1 轮：找 <span><span>(u=0,m=0)(u=0, m=0)</span><span><span><span></span><span>(</span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span>,</span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span>)</span></span></span></span>。不修改任何标志位，找到即淘汰。</li>
<li>第 2 轮：若第 1 轮未找到，找 <span><span>(u=0,m=1)(u=0, m=1)</span><span><span><span></span><span>(</span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span>,</span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span>。本轮经过的所有页面的访问位 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 必须全部清零！找到即淘汰。</li>
<li>第 3 轮：若仍未找到，重复第 1 轮，找 <span><span>(u=0,m=0)(u=0, m=0)</span><span><span><span></span><span>(</span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span>,</span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span>)</span></span></span></span>。</li>
<li>第 4 轮：若仍未找到，重复第 2 轮，找 <span><span>(u=0,m=1)(u=0, m=1)</span><span><span><span></span><span>(</span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span>,</span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span>，此时必定能命中淘汰项。</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul></section><section><h4>页框回收<a href="#页框回收"><span>#</span></a></h4><p>可以理解为回收页框的时候，将页框置入未被分配页框的末尾队列，然后如果后续还需要这个页，那直接从队尾拿回来就好了。（2012 真题）</p></section><section><h4>内存映射文件<a href="#内存映射文件"><span>#</span></a></h4><p>将物理内存的某个文件映射到不同进程的逻辑地址空间，这个文件是共享的。</p><p>映射之后，读写这段内存就是读写文件，具体的磁盘 I/O 由操作系统在缺页时按需完成，写回由脏位和文件系统的同步策略控制。</p><p>好处是省掉了 read/write 的一次拷贝：普通 read 要经过“磁盘到内核缓冲区、内核缓冲区到用户缓冲区”两次搬运，映射之后用户直接操作页缓存。</p><p>多个进程映射同一个文件，就能共享同一份物理页，这也是共享内存通信的实现方式之一。</p><p>需要注意，映射文件的大小不要求是页的整数倍，最后一页多余的部分补零，写回时也只写文件本身的长度。</p></section></section></section>
<section><h2>文件系统<a href="#文件系统"><span>#</span></a></h2><section><h3>文件系统 - 考纲<a href="#文件系统---考纲"><span>#</span></a></h3><ul>
<li>文件
<ul>
<li>文件的基本概念：文件元数据和索引结点</li>
<li>文件的操作：建立，删除，打开，关闭，读，写</li>
<li>文件的保护：文件的逻辑结构，文件的物理结构</li>
</ul>
</li>
<li>目录
<ul>
<li>目录的基本概念：树形目录；目录的操作；软连接和硬链接</li>
</ul>
</li>
<li>文件系统
<ul>
<li>文件系统全局结构：文件系统在外存中的结构，文件系统在内存中的结构</li>
<li>外存空闲空间管理方法</li>
<li>虚拟文件系统；文件系统挂载</li>
</ul>
</li>
</ul></section><section><h3>文件分类<a href="#文件分类"><span>#</span></a></h3><ul>
<li>无结构文件，例如 txt</li>
<li>有结构文件
<ul>
<li>按记录长度是否可变分类
<ul>
<li>定长记录：可以理解为 mysql 那种固定的表，所有记录长度相同，可以随机访问。</li>
<li>变长记录：比如说存储每个学生的学号以及座右铭，这个座右铭是变长的，所以查找的时候只能顺序存。</li>
</ul>
</li>
<li>按记录组织方式分类
<ul>
<li>顺序文件：串结构（按照存入时间排序，只能顺序查找），顺序结构（可以随机查找）</li>
<li>索引文件：可以理解为一张索引表，表项只存索引号、长度和指针，指针指向对应的逻辑记录，查找方式类似分块查找。</li>
<li>索引顺序文件：即顺序文件和索引文件的结合，存储键和逻辑地址，逻辑地址指向对应的逻辑记录。</li>
<li>直接文件（散列文件）</li>
</ul>
</li>
</ul>
</li>
</ul></section><section><h3>目录与文件<a href="#目录与文件"><span>#</span></a></h3><section><h4>FCB 与索引节点 inode<a href="#fcb-与索引节点-inode"><span>#</span></a></h4><ol>
<li>
<p>FCB 是操作系统中管理文件元信息的通用抽象结构，并非仅属于 FAT 系统；Unix 及 UFS 系统采用 FCB 分解法，将其拆分为目录项与 inode 两部分以减少目录检索时的磁盘读写次数。</p>
</li>
<li>
<p>传统 FCB 中必须包含文件的物理地址以及权限等属性，文件的物理地址由 FCB 直接记录，但文件的具体数据内容存放在磁盘数据块中而非 FCB 中。</p>
</li>
<li>
<p>FAT 系统中的静态链表是 FAT 表即文件分配表，它位于磁盘卷的前端保留区，用于显式记录物理盘块的先后链接关系，其表项数量对应物理盘块数而非文件数。</p>
</li>
<li>
<p>FAT 系统中的 FCB 本质上就是目录项，它们并不集中在磁盘最前端，而是分散保存在各个目录文件的数据块中。</p>
</li>
<li>
<p>在类 Unix 系统中，文件名不保存在 inode 中，而是与 inode 编号一同保存在目录项中；一个目录项就是文件名到 inode 编号的映射。</p>
</li>
<li>
<p>文件的访问权限、文件主、文件大小以及用于寻址磁盘块的直接与间接物理索引指针，全部直接保存在 inode 内部，绝对不占用或保存在普通数据块中。</p>
</li>
<li>
<p>类 Unix 系统在格式化时会预先在磁盘中分配固定数量的 inode 空间，因此磁盘中 inode 的最大数量确实决定了该文件系统能够创建的文件总数上限。</p>
</li>
</ol><p>综上辨析一下 FCB 和 inode，只是说 FAT 系统使用了 FCB 方法，UFS 使用了 inode，并不是说 FCB 是 FAT 独占的。</p></section><section><h4>目录结构<a href="#目录结构"><span>#</span></a></h4><p>现在考纲只剩下树形结构，命令按照 linux 命令理解即可。</p><p>目录项里存的是文件名和 inode 号（或者 FCB），所以按名查找的本质是在目录文件里顺序查找目录项。</p><p>目录的操作有创建、删除、重命名、查找、列出。删除非空目录要先递归删掉里面的内容；重命名只改目录项里的名字，不移动数据。</p><p>需要注意，绝对路径从根目录开始，相对路径从当前目录开始，路径解析每一步都要读一次目录文件，所以路径越深访盘次数越多。</p><p>可以注意“工作区”的概念，即以当前目录为新的根目录。</p></section><section><h4>文件的物理结构<a href="#文件的物理结构"><span>#</span></a></h4><ul>
<li>
<p>连续分配</p>
<ul>
<li>对于单级目录（虽然已经从考纲中移除了），如果不需要对文件进行修改，可以使用。</li>
</ul>
</li>
<li>
<p>链接分配</p>
<ul>
<li>隐式链接分配：每个结点的末尾有一小片区域用于存储下一个磁盘的块号</li>
<li>显示链接分配：额外划分一块空间存储静态链表</li>
</ul>
</li>
<li>
<p>索引分配</p>
<ul>
<li>单级索引分配</li>
<li>多级索引分配</li>
<li>混合索引</li>
</ul>
</li>
</ul><p>三种物理结构的取舍：</p><ul>
<li>连续分配支持顺序访问和随机访问，速度最快，但有外部碎片，文件增长困难；</li>
<li>链接分配没有外部碎片，文件可以随时增长，但只能顺序访问，指针还要占空间；</li>
<li>索引分配支持随机访问，文件可以增长，但索引块本身占空间，大文件需要多级索引。</li>
</ul><p>混合索引（UFS）是折中：inode 里放若干个直接指针，再加一级、二级、三级间接指针。小文件只用直接指针，一次访盘就能取到数据；大文件逐级用间接指针，用空间换容量。</p><p>具体的流程可以见大题分析。</p></section><section><h4>文件的基本操作<a href="#文件的基本操作"><span>#</span></a></h4><ul>
<li>
<p>创建：在外存分配空间并建立 FCB/目录项，完成文件名到初始物理位置的绑定。</p>
</li>
<li>
<p>删除：释放文件占用的外存块，并在目录项中彻底抹去其记录。</p>
</li>
<li>
<p>读：根据读指针把外存/系统缓存里的数据搬运到进程的用户空间缓冲区。</p>
</li>
<li>
<p>写：把进程用户空间的数据写进外存/系统缓存，并更新文件指针与长度属性。</p>
</li>
<li>
<p>打开：把文件的 FCB 调入内存的打开文件表，并向进程返回一个数字代号（文件描述符）。</p>
</li>
<li>
<p>关闭：使文件打开引用计数减一，在进程打开表中注销该项，计数归零时清出系统表。</p>
</li>
<li>
<p>辨析 open 与 read：open 传入的参数是文件名，返回的是文件描述符；read 直接根据这个文件描述符去访问文件即可</p>
</li>
<li>
<p>辨析关闭和写入：关闭只是单纯的把文件（如果是最后一个关闭）从文件打开表删除，而在删除的过程中，文件并没有立刻写回磁盘，而是操作系统另外自行写回的。所以关闭和写回没有必然的强相关性。</p>
</li>
<li>
<p>辨析系统文件打开表和进程文件打开表：系统表全局仅一份、记录所有打开文件的物理信息与共享引用计数；进程表各进程独立持有一份、只记录本进程打开文件的描述符与指向系统表的偏移指针。</p>
</li>
</ul></section><section><h4>硬链接与软链接<a href="#硬链接与软链接"><span>#</span></a></h4><p>属于文件共享相关的。</p><ul>
<li>
<p>硬链接：同一个 Inode 在不同目录项下的镜像别名，共享物理空间与链接计数，计数归零才真正释放数据。</p>
</li>
<li>
<p>软链接（符号链接）：一个独立的全新文件（拥有独立 Inode），内容仅为目标文件的路径字符串，目标失效即变“死链接”。</p>
</li>
</ul><p>以文件 file.txt 为例，cnt = 1，假设硬链接出去，那么连接计数 cnt = 2，如果源文件软连接出去，那么新建一个 inode，该 inode cnt = 1。如果针对该 inode 再硬连接出去，那么该 inode cnt = 2。</p><p>删除源文件，那么源文件计数 cnt = 1，然后延伸出去的软连失效。</p></section><section><h4>文件保护<a href="#文件保护"><span>#</span></a></h4><ul>
<li>口令：文件本身没有加密，输入口令访问</li>
<li>密码：文件本身被加密，输入密码解密</li>
<li>文件访问控制表：需要注意假设有 4 个权限和 3 个用户，那么一定是 12 个，而不是按照二进制那样去存。因为需要存储所有信息，而不是一个。（2017 真题）</li>
</ul><p>用户优先级和文件保护无关。</p></section></section><section><h3>文件系统相关<a href="#文件系统相关"><span>#</span></a></h3><section><h4>文件系统布局<a href="#文件系统布局"><span>#</span></a></h4><p>外存上的布局，从磁盘开头往后依次是：</p><ul>
<li>主引导记录：磁盘第一个扇区，里面是引导代码和分区表；</li>
<li>引导块：分区里的第一个块，存放启动本分区操作系统的引导程序；</li>
<li>超级块：记录文件系统的类型、总块数、空闲块数、inode 数等全局信息，是文件系统的“户口本”；</li>
<li>空闲空间管理信息：位示图或者成组链接的索引块；</li>
<li>inode 区：所有 inode 集中存放，数量在格式化时就已确定；</li>
<li>根目录与数据区：目录文件和数据块。</li>
</ul><p>内存中的结构一般有四块：挂载表（记录每个已挂载文件系统的超级块）、目录缓存、活跃 inode 表（inode 缓存）、系统打开文件表。</p><p>可以结合 UFS 系统的例图来记忆。</p><p>需要注意，超级块和 inode 区的位置是固定的，而数据区里的块是离散的，这就是为什么文件系统需要空闲空间管理。</p></section><section><h4>文件系统空间管理<a href="#文件系统空间管理"><span>#</span></a></h4><ul>
<li>空闲表法：为所有连续的空闲区建立登记表，记录每个空闲分区的起始块号与长度，适合连续分配策略。</li>
<li>空闲链表法：
<ul>
<li>空闲盘块法：把所有未分配的单个盘块通过指针串成一条总链，分配和回收逐块进行，适合离散分配但链条极长。</li>
<li>空闲盘区法：把连续的空闲块作为一个盘区，盘区头记录长度并用链表串联各盘区，兼顾了分配速度与连续性。</li>
</ul>
</li>
<li>位示图法：用连续的二进制比特位（0 与 1）直接映射整块磁盘每个盘块的占用与空闲状态，体积极小可常驻内存且便于快速计算块号。查找高效，但需要空间存储。</li>
<li>成组链接法：把空闲块按固定数量分组成栈并层层链挂，栈顶块记录下一组所有块号，兼具链表的扩展性与栈的批量高速存取性能（UNIX）。注意利用空闲盘块栈存储。</li>
</ul><p>可以注意，文件系统空间这里指的是外存空闲区管理。</p></section><section><h4>虚拟文件系统<a href="#虚拟文件系统"><span>#</span></a></h4><p>即 VFS。内核在内存中建立的面向对象的抽象接口层，用来屏蔽各类异构底层文件系统的物理差异，向上提供统一的系统调用。</p><ul>
<li>超级块对象：代表一个已挂载的具体文件系统，负责记录该文件系统的全局控制信息与挂载元数据。</li>
<li>V 结点对象：代表一个确切的物理文件本身，负责统管文件的访问权限、物理块映射及底层驱动函数指针（不存文件名）。</li>
<li>目录项对象：代表路径上的某一级目录或具体文件名，在内存中把字符串名字与对应的 V 结点绑定并构建路径缓存树。</li>
<li>文件对象：代表某个进程正打开的一个文件交互上下文，负责维护该进程当前独享的读写指针位置、访问模式及引用计数。</li>
</ul></section><section><h4>文件系统挂载<a href="#文件系统挂载"><span>#</span></a></h4><p>可以理解为以某个目录为根目录，然后挂载到另一个目录上。</p><p>比如说 openlist 挂在夸克网盘，以某文件夹为根结点，或者以 webDAV 的形式挂载到本地。</p></section></section></section>
<section><h2>IO<a href="#io"><span>#</span></a></h2><section><h3>IO - 考纲<a href="#io---考纲"><span>#</span></a></h3><ul>
<li>输入/输出管理基础
<ul>
<li>设备：设备的基本概念，设备的分类，I/O 接口</li>
<li>I/O 控制方式：轮询方式，中断方式，DMA 方式</li>
<li>I/O 软件层次结构：中断处理程序，驱动程序，设备独立性软件，用户 I/O 软件</li>
<li>输入/输出应用程序接口：字符设备接口，块设备接口，网络设备接口，阻塞/非阻塞 I/O</li>
</ul>
</li>
<li>设备独立软件
<ul>
<li>缓冲区管理；设备分配与回收，假脱机技术；设备驱动程序接口</li>
</ul>
</li>
<li>外存管理
<ul>
<li>磁盘：磁盘结构，格式化，分区，磁盘调度算法</li>
<li>固态硬盘：读/写性能特效，磨损均衡</li>
</ul>
</li>
</ul><p>本章很多都和计组那块是重叠的。</p></section><section><h3>IO 管理概述<a href="#io-管理概述"><span>#</span></a></h3><section><h4>设备分类<a href="#设备分类"><span>#</span></a></h4><ul>
<li>字符设备：例如鼠标和键盘，不具备存储功能，通过缓冲区输入</li>
<li>块设备：使用 DMA 方式</li>
<li>网络设备：比如网卡</li>
</ul></section><section><h4>I/O 接口与端口<a href="#io-接口与端口"><span>#</span></a></h4><p>I/O 接口指的是设备和主机之间的连接器，端口指的是设备内部的寄存器。</p><p>寄存器最重要的三个：数据寄存器，控制寄存器与状态寄存器。</p><p>编址分为独立编址和统一编址。</p></section><section><h4>I/O 控制方式<a href="#io-控制方式"><span>#</span></a></h4><p>需要注意，I/O 相关全是内核态。</p><p>三种方式：轮询方式，中断方式，DMA 方式。</p><ul>
<li>轮询：CPU 一直查设备状态寄存器，简单但白白占用 CPU；</li>
<li>中断：设备就绪后发中断，CPU 响应后由程序搬数据，适合低速、随机到达的设备；</li>
<li>DMA：DMA 控制器直接在主存和设备之间搬数据块，CPU 只在开始和结束时参与，适合高速、成块的设备。</li>
</ul><p>需要注意，中断方式每传一个字都要中断一次，DMA 是整块传完才中断一次，所以高速设备用 DMA 效率高得多。</p><p>其实还有通道控制，但是考研不考（因为这个级别是要到神威·太湖之光的）。</p></section><section><h4>I/O 层次架构<a href="#io-层次架构"><span>#</span></a></h4><p>用户层软件 - 设备独立性软件 - 设备驱动程序 - 中断处理程序 - 硬件。</p><p>这类题特别爱考选择题辨析，尤其要注意：</p><p>用户层软件是把用户的操作发送给设备独立性软件，设备独立性软件根据是什么设备，翻译成这个设备的指令，发送给设备驱动程序，而设备驱动程序是把设备的指令翻译成控制设备的寄存器硬件指令，设备驱动程序直接向硬件（设备控制器寄存器）写入指令启动硬件，硬件干完活才反向触发中断处理程序。</p><p>也就是很多时候并非是从上至下，例如 scanf，是上到下一会儿，下到上一会儿，然后最后再上。</p></section><section><h4>输入/输出应用程序接口<a href="#输入输出应用程序接口"><span>#</span></a></h4><p>按设备类型分三种接口：</p><ul>
<li>字符设备接口：以字节流为单位，例如键盘、打印机，通常不支持随机访问；</li>
<li>块设备接口：以块为单位，支持随机访问，通常配合内存映射和 DMA；</li>
<li>网络设备接口：以报文或套接字为单位，协议栈在操作系统内部实现。</li>
</ul><p>按调用方式分阻塞与非阻塞：</p><ul>
<li>阻塞 I/O：调用后进程阻塞，直到数据就绪并复制完成才返回，编程简单但并发度低；</li>
<li>非阻塞 I/O：调用后立即返回，数据没就绪就返回一个错误码，进程自己轮询重试。</li>
</ul><p>需要注意，阻塞 I/O 的阻塞点可能在“等数据”和“复制数据”两处，所以后来又有多路复用（select / poll）和异步 I/O。</p></section></section><section><h3>设备独立性软件<a href="#设备独立性软件"><span>#</span></a></h3><section><h4>缓冲区<a href="#缓冲区"><span>#</span></a></h4><ul>
<li>单缓冲</li>
<li>双缓冲</li>
<li>循环缓冲</li>
<li>缓冲池</li>
</ul><p>这个就具体题目具体分析了。</p><p>不过可以注意的是，有时候不需要采用后两者，采用双缓冲就够了</p><p>还可以注意高速缓存和缓冲区是不同的概念，前者是数据副本，目的是提高重复访问效率，后者是真实传输的数据。</p><p>单缓冲的时间要算清楚：设一块数据从磁盘读入缓冲区的时间为 <span><span>TT</span><span><span><span></span><span>T</span></span></span></span>，从缓冲区送到用户区的时间为 <span><span>MM</span><span><span><span></span><span>M</span></span></span></span>，CPU 处理这块数据的时间为 <span><span>CC</span><span><span><span></span><span>C</span></span></span></span>，那么处理一块数据的平均时间为</p><span><span><span>max⁡(T, C)+M\max(T,\ C)+M</span><span><span><span></span><span>max</span><span>(</span><span>T</span><span>,</span><span> </span><span></span><span>C</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>M</span></span></span></span></span><p>双缓冲是两个缓冲区交替使用，一块在装数据、另一块在处理，平均时间变成</p><span><span><span>max⁡(T, C+M)\max(T,\ C+M)</span><span><span><span></span><span>max</span><span>(</span><span>T</span><span>,</span><span> </span><span></span><span>C</span><span></span><span>+</span><span></span></span><span><span></span><span>M</span><span>)</span></span></span></span></span><p>需要注意，双缓冲的前提是 <span><span>TT</span><span><span><span></span><span>T</span></span></span></span> 和 <span><span>C+MC+M</span><span><span><span></span><span>C</span><span></span><span>+</span><span></span></span><span><span></span><span>M</span></span></span></span> 能重叠，如果 CPU 很快而磁盘很慢，瓶颈就在磁盘，加缓冲没有用。</p><p>循环缓冲适合输入输出速度相差不大、需要连续处理的场景；缓冲池把多个缓冲区统一管理，分成空缓冲队列、装满输入数据的队列和装满输出数据的队列。</p></section><section><h4>设备分配与回收<a href="#设备分配与回收"><span>#</span></a></h4><p>几个概念：设备控制表（DCT），控制器控制表（COCT），通道控制表（CHCT），系统设备表（SDT）</p><p>一个系统一个 SDT，简单来说就是先登记系统设备表，然后自下而上地被分配。</p><p>设备属性：独占设备，共享设备，虚拟设备。可以注意共享设备必须是可随机寻址。</p><p>设备分配算法：FCFS，高优先级分配</p><p>逻辑设备 - 物理设备，可以采用两种方式，一个系统一张 / 一个用户一张。</p></section><section><h4>Spooling 技术<a href="#spooling-技术"><span>#</span></a></h4><ul>
<li>
<p>Spooling 技术的基本部件</p>
<p>输入井与输出井：开辟在外存（磁盘）上的两块专用大容量存储区。</p>
<p>输入井：模拟脱机输入的磁带，暂存输入设备传来的海量作业数据。</p>
<p>输出井：模拟脱机输出的磁带，暂存用户作业产生的海量输出数据。</p>
<p>输入缓冲区与输出缓冲区：开辟在内存中的暂存区。负责在“内存”与“外存井”之间进行块级高速中转，抹平系统内部总线与磁盘的速度差。</p>
<ul>
<li>输入进程与输出进程（预设系统级软件）：
<ul>
<li>输入进程：模拟脱机输入时的外围控制机，负责把输入数据打入输入井。</li>
<li>输出进程：模拟脱机输出时的外围控制机，负责把输出井中的数据顺序拉取并喂给慢速物理外设。</li>
</ul>
</li>
<li>井管理程序：负责维护作业表项、排队状态及外存块指针。</li>
</ul>
</li>
<li>
<p>Spooling 技术的基本流程</p>
<ul>
<li>
<p>阶段一：逻辑申请（用户作业发起）</p>
<ul>
<li>用户进程向操作系统申请使用打印机；</li>
<li>系统不分配真实打印机，而是由系统在内存中为该作业分配一个逻辑设备控制块，并在外存输出井中划定专用存储区域；</li>
<li>用户进程通过系统调用，将待打印数据写入内存输出缓冲区。</li>
</ul>
</li>
<li>
<p>阶段二：井内暂存与用户释放</p>
<ul>
<li>
<p>缓冲区数据成块写入外存输出井；</p>
</li>
<li>
<p>数据完全写入外存井后，操作系统直接给用户进程返回“I/O 已完成”信号；</p>
</li>
<li>
<p>用户进程解除阻塞继续前行或正常终止退出，系统将该打印任务挂入“打印请求等待队列”。</p>
</li>
</ul>
</li>
<li>
<p>阶段三：后台守护调度（真正的物理输出）</p>
<ul>
<li>物理打印机空闲时，系统的 SPOOLing 输出进程 从打印队列中取出下一个就绪作业；</li>
<li>输出进程从外存输出井将数据分批调入内存输出缓冲区；</li>
<li>驱动物理打印机，将数据从缓冲区逐字/逐行发送至打印设备；</li>
<li>打印彻底完毕后，输出进程释放该任务在外存井中所占用的所有物理磁盘块。</li>
</ul>
</li>
</ul>
</li>
</ul><p>所以可以发现，用户在申请的时候是用户态，而真正后台守护调度使用的是内核态。</p><ul>
<li>
<p>缓冲区也可以是内存，为什么 Spooling 技术需要外存支持</p>
<p>考虑这样一种情况，假设打印的东西是 GB 级别的，那么内存会直接撑爆。</p>
<p>内存缓冲区（Buffer）：主要用于匹配 CPU 与外设的速度差，生命周期短，容量极小（KB~MB 级），易失性，无法应对海量、长时间的数据积压。</p>
<p>外存支持（井技术）：SPOOLing 面对的是极端慢速的机械/独占设备（如打印机），且多进程并发产生的数据量极其庞大（GB 级），数据滞留时间以“小时”甚至“天”计。</p>
<p>容量瓶颈：若无外存的“输入/输出井”托底，海量输出数据将瞬间挤爆物理内存，导致系统发生内存耗尽（OOM）崩溃。</p>
<p>驻留周期：慢速外设消费数据极慢，若长期霸占物理内存，会严重降低内存利用率与多道程序并发度。</p>
<p>数据安全性：外存具备非易失性，可有效避免突发断电导致排队作业丢失。</p>
</li>
</ul></section><section><h4>设备驱动<a href="#设备驱动"><span>#</span></a></h4><p>将上层命令转换成设备操作参数 - 检查合法性 - 发出 I/O 命令 - 响应中断。</p><p>设备驱动程序接口就是驱动向上层提供的一组标准函数，一般是一张函数表，里面是 open、read、write、ioctl 这类入口。</p><p>设备独立性软件通过这张表调用具体设备，换一块同类型的网卡，只要换驱动，上层的代码不用改，这就是设备独立性的含义。</p></section></section><section><h3>磁盘<a href="#磁盘"><span>#</span></a></h3><section><h4>磁盘管理<a href="#磁盘管理"><span>#</span></a></h4><p>磁盘初始化：低级格式化（建立逻辑块到物理扇区的初始映射，CRC 校验） - 分区（例如分 C 盘，D 盘） - 高级格式化（建立文件系统）。</p><p>通常按簇来给单个文件，簇是一组连续的扇区，所以文件占用的空间是簇的整数倍，最后一簇用不完就产生内部碎片。</p><p>引导块存放启动该分区的引导程序；坏块的处理有两种：在 FAT 里标记为坏，或者把它们集中到保留区，用备用扇区替换。</p><p>需要注意，低级格式化会丢失磁盘上所有数据，出厂时才做；高级格式化只重建文件系统，数据理论上还能恢复，所以真正的清除要覆写。</p></section><section><h4>磁盘调度<a href="#磁盘调度"><span>#</span></a></h4><p>这一块主要就是不要脑子抽想错了。</p><ul>
<li>
<p>减少寻道时间的思路</p>
<ul>
<li>先来先服务</li>
<li>最短寻道</li>
<li>扫描（SCAN）算法：先向一个方向，直到边缘，然后反向，直到边缘。</li>
<li>循环扫描（C-SCAN）算法：先一个方向，然后移动到开始，重复这个方向</li>
</ul>
<p>注意，最后两个都是要移动到边缘（也就是 0 和最大的）</p>
<p>但是，考试的时候得看具体语境，如果很确定没给具体信息，那么可能指的是 LOOK 和 C-LOOK 算法。</p>
<p>先把磁盘的访问时间写清楚：</p>
<span><span><span>T访问=寻道时间+旋转延迟+传输时间T_{\text{访问}}=\text{寻道时间}+\text{旋转延迟}+\text{传输时间}</span><span><span><span></span><span><span>T</span><span><span><span><span><span><span></span><span><span><span><span>访问</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>寻道时间</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>旋转延迟</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>传输时间</span></span></span></span></span></span>
<p>平均旋转延迟是转一圈时间的一半，传输时间等于要读的字节数除以传输率。</p>
<p>四种算法的区别可以这样记：</p>
<ul>
<li>FCFS：按请求顺序服务，公平但寻道距离长；</li>
<li>SSTF：每次选离当前磁头最近的请求，寻道最短，但可能饿死远处的请求；</li>
<li>SCAN（电梯算法）：沿一个方向服务到磁盘边缘再反向；</li>
<li>LOOK：沿一个方向服务到该方向最后一个请求就反向，不走到边缘；</li>
<li>C-SCAN：只在一个方向服务，到头直接快速返回起始端；</li>
<li>C-LOOK：只在一个方向服务，返回时只回到最靠里的请求处。</li>
</ul>
<p>需要注意，SCAN 和 C-SCAN 要走到边缘，LOOK 和 C-LOOK 只走到最后一个请求，题目没说“到边缘”时优先按 LOOK 理解。</p>
</li>
<li>
<p>减少延迟时间的思路：</p>
<ul>
<li>扇区的交替编号</li>
<li>重叠起来上下扇区不一致（盘面相关）</li>
</ul>
</li>
<li>
<p>提高磁盘 IO</p>
<ul>
<li>高速缓存</li>
<li>请求顺序</li>
<li>提前读</li>
<li>延迟写</li>
<li>优化物理块分布</li>
<li>虚拟盘</li>
<li>磁盘阵列 RAID（计组那块知识）</li>
</ul>
</li>
</ul></section><section><h4>SSD<a href="#ssd"><span>#</span></a></h4><p>和计组那块是一样的。</p><p>SSD 的读写以页为单位，擦除以块为单位，所以随机写要先读整块、改完再写回，写放大就是这么来的。</p><p>磨损均衡分动态和静态：动态只在新写入时优先挑擦除次数少的块，静态还会在后台把冷数据搬走，让各块的擦除次数更均匀。静态的代价是有额外的后台 I/O，但寿命更长。</p><p>需要注意，SSD 没有寻道和旋转延迟，所以磁盘调度算法对 SSD 没有意义。</p></section></section></section>
<section><h2>真题与模型概述<a href="#真题与模型概述"><span>#</span></a></h2><section><h3>PV 操作<a href="#pv-操作"><span>#</span></a></h3><p>信号量的使用，但是别忘记有的时候可以用 int 变量控制。</p><section><h4>简单同步互斥问题<a href="#简单同步互斥问题"><span>#</span></a></h4><p>这类题比较简单，但是需要注意进程和线程的区别。</p><p>做题方法是绘制调用关系图，用拓扑排序的方法解，并且为每一个入度都添加一个信号量（注意进程和线程）</p></section><section><h4>生产者消费者问题<a href="#生产者消费者问题"><span>#</span></a></h4><p>利用咸鱼的模板。</p><ol>
<li>找出所有的进程</li>
<li>写出所有进程的动作，并且判断需不需要 while</li>
<li>判断每个动作需要 P 什么，有 P 必然有 V，先 P 后 V</li>
<li>判断是否需要 mutex，并且确认 semaphore 初值</li>
<li>检查连续的 P 操作是否可能导致死锁，如果是，尝试调整顺序</li>
<li>誊写并检查</li>
</ol><p>根据经验，一般小资源申请在前，大资源申请在后可能会导致死锁。</p><p>此外可以注意，对于生产者而言，只有生产出来的东西被放进了缓冲区，才可以说是生产了。</p></section><section><h4>哲学家进餐问题<a href="#哲学家进餐问题"><span>#</span></a></h4><p>对这类题，思想是一次拿走所有的资源，然后一次释放所有的资源。</p><p>以 int 变量记录正在进餐的人数，再用一个信号量 mutex 保护这个变量的访问。</p><p>这么做的原理是破坏请求并保持条件：要么一把拿到左右两只叉子，要么一只都不拿，不存在“拿着一只等另一只”的状态。</p><p>如果改成破坏其他条件：</p><ul>
<li>破坏互斥：叉子只能一个人用，做不到；</li>
<li>破坏不剥夺：要求已经拿到叉子的哲学家在拿不到另一只时主动放下，这其实就是一次性申请；</li>
<li>破坏循环等待：给叉子编号，规定每个哲学家先拿编号小的、再拿编号大的，这样不会形成环。</li>
</ul></section><section><h4>读者写者问题<a href="#读者写者问题"><span>#</span></a></h4><p>主要是注意理解经典模型和非经典模型的差别。</p><ul>
<li>经典模型：多读者一写者读优先</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore rw_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>  // 互斥访问共享数据区</span></div></div><div><div><div>2</div></div><div><span>semaphore mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>     // 互斥修改 read_count</span></div></div><div><div><div>3</div></div><div><span>int</span><span> read_count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>void</span><span> </span><span>reader</span><span>() {</span></div></div><div><div><div>6</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>7</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>mutex);</span></div></div><div><div><div>8</div></div><div><span><span>        </span></span><span>read_count</span><span>++</span><span>;</span></div></div><div><div><div>9</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>1</span><span>) {</span></div></div><div><div><div>10</div></div><div><span>            </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 第一个读者锁住写者</span></div></div><div><div><div>11</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>mutex);</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>        </span><span>// --- 读操作 ---</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>mutex);</span></div></div><div><div><div>17</div></div><div><span><span>        </span></span><span>read_count</span><span>--</span><span>;</span></div></div><div><div><div>18</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>19</div></div><div><span>            </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 最后一个读者释放写者</span></div></div><div><div><div>20</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>21</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>mutex);</span></div></div><div><div><div>22</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div><div><div><div>24</div></div><div>
</div></div><div><div><div>25</div></div><div><span>void</span><span> </span><span>writer</span><span>() {</span></div></div><div><div><div>26</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>27</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span></div></div><div><div><div>28</div></div><div><span>        </span><span>// --- 写操作 ---</span></div></div><div><div><div>29</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span></div></div><div><div><div>30</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>31</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ul>
<li>经典模型：多读者一写者写优先</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore rw_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>  // 互斥访问共享数据区</span></div></div><div><div><div>2</div></div><div><span>semaphore mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>     // 互斥修改 read_count</span></div></div><div><div><div>3</div></div><div><span>semaphore write_gate </span><span>=</span><span> </span><span>1</span><span>;</span><span>// 写者用来封堵后续读者的门禁</span></div></div><div><div><div>4</div></div><div><span>int</span><span> read_count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>void</span><span> </span><span>reader</span><span>() {</span></div></div><div><div><div>7</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>8</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>write_gate);</span><span>  // 检查是否有写者插队封锁</span></div></div><div><div><div>9</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>mutex);</span></div></div><div><div><div>10</div></div><div><span><span>        </span></span><span>read_count</span><span>++</span><span>;</span></div></div><div><div><div>11</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>1</span><span>) {</span></div></div><div><div><div>12</div></div><div><span>            </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 封锁写操作</span></div></div><div><div><div>13</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>14</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>mutex);</span></div></div><div><div><div>15</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>write_gate);</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>        </span><span>// --- 读操作 ---</span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>mutex);</span></div></div><div><div><div>20</div></div><div><span><span>        </span></span><span>read_count</span><span>--</span><span>;</span></div></div><div><div><div>21</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>22</div></div><div><span>            </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span></div></div><div><div><div>23</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>24</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>mutex);</span></div></div><div><div><div>25</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>26</div></div><div><span>}</span></div></div><div><div><div>27</div></div><div>
</div></div><div><div><div>28</div></div><div><span>void</span><span> </span><span>writer</span><span>() {</span></div></div><div><div><div>29</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>30</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>write_gate);</span><span>  // 抢先占住门禁，阻止新的读者进来</span></div></div><div><div><div>31</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span>    // 等待正在读的读者全部退出</span></div></div><div><div><div>32</div></div><div>
</div></div><div><div><div>33</div></div><div><span>        </span><span>// --- 写操作 ---</span></div></div><div><div><div>34</div></div><div>
</div></div><div><div><div>35</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span></div></div><div><div><div>36</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>write_gate);</span><span>  // 释放门禁</span></div></div><div><div><div>37</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>38</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ul>
<li>非经典模型：多读者多写者读优先</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore rw_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>  // 读者与写者、写者与写者之间的共享区互斥锁</span></div></div><div><div><div>2</div></div><div><span>semaphore r_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>   // 互斥修改 read_count</span></div></div><div><div><div>3</div></div><div><span>int</span><span> read_count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>void</span><span> </span><span>reader</span><span>() {</span></div></div><div><div><div>6</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>7</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>8</div></div><div><span><span>        </span></span><span>read_count</span><span>++</span><span>;</span></div></div><div><div><div>9</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>1</span><span>) {</span></div></div><div><div><div>10</div></div><div><span>            </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 第一个读者卡死所有写者</span></div></div><div><div><div>11</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>        </span><span>// --- 读操作 ---</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>17</div></div><div><span><span>        </span></span><span>read_count</span><span>--</span><span>;</span></div></div><div><div><div>18</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>19</div></div><div><span>            </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 最后一个读者放行写者</span></div></div><div><div><div>20</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>21</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>22</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div><div><div><div>24</div></div><div>
</div></div><div><div><div>25</div></div><div><span>void</span><span> </span><span>writer</span><span>() {</span></div></div><div><div><div>26</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>27</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 多个写者互相竞争这把唯一的大锁</span></div></div><div><div><div>28</div></div><div>
</div></div><div><div><div>29</div></div><div><span>        </span><span>// --- 写操作 ---</span></div></div><div><div><div>30</div></div><div>
</div></div><div><div><div>31</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span></div></div><div><div><div>32</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>33</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ul>
<li>非经典模型：多读者多写者写优先</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore rw_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>   // 真正的数据区访问互斥</span></div></div><div><div><div>2</div></div><div><span>semaphore read_lock </span><span>=</span><span> </span><span>1</span><span>;</span><span>  // 阻止读者进来的大门</span></div></div><div><div><div>3</div></div><div><span>semaphore r_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>    // 互斥修改 read_count</span></div></div><div><div><div>4</div></div><div><span>semaphore w_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>    // 互斥修改 write_count</span></div></div><div><div><div>5</div></div><div><span>int</span><span> read_count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>6</div></div><div><span>int</span><span> write_count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>void</span><span> </span><span>reader</span><span>() {</span></div></div><div><div><div>9</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>10</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>read_lock);</span><span>   // 检查是否有写者封门</span></div></div><div><div><div>11</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>12</div></div><div><span><span>        </span></span><span>read_count</span><span>++</span><span>;</span></div></div><div><div><div>13</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>1</span><span>) {</span></div></div><div><div><div>14</div></div><div><span>            </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 读者卡死数据区</span></div></div><div><div><div>15</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>16</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>17</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>read_lock);</span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span>        </span><span>// --- 读操作 ---</span></div></div><div><div><div>20</div></div><div>
</div></div><div><div><div>21</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>22</div></div><div><span><span>        </span></span><span>read_count</span><span>--</span><span>;</span></div></div><div><div><div>23</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>24</div></div><div><span>            </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span></div></div><div><div><div>25</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>26</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>27</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>28</div></div><div><span>}</span></div></div><div><div><div>29</div></div><div>
</div></div><div><div><div>30</div></div><div><span>void</span><span> </span><span>writer</span><span>() {</span></div></div><div><div><div>31</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>32</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>w_mutex);</span></div></div><div><div><div>33</div></div><div><span><span>        </span></span><span>write_count</span><span>++</span><span>;</span></div></div><div><div><div>34</div></div><div><span>        </span><span>if</span><span> (write_count </span><span>==</span><span> </span><span>1</span><span>) {</span></div></div><div><div><div>35</div></div><div><span>            </span><span>P</span><span>(</span><span>&amp;</span><span>read_lock);</span><span> // 第一个写者立刻把读者的大门锁死！</span></div></div><div><div><div>36</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>37</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>w_mutex);</span></div></div><div><div><div>38</div></div><div>
</div></div><div><div><div>39</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span>      // 获取数据操作权（等待读完或写完）</span></div></div><div><div><div>40</div></div><div><span>        </span><span>// --- 写操作 ---</span></div></div><div><div><div>41</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span></div></div><div><div><div>42</div></div><div>
</div></div><div><div><div>43</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>w_mutex);</span></div></div><div><div><div>44</div></div><div><span><span>        </span></span><span>write_count</span><span>--</span><span>;</span></div></div><div><div><div>45</div></div><div><span>        </span><span>if</span><span> (write_count </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>46</div></div><div><span>            </span><span>V</span><span>(</span><span>&amp;</span><span>read_lock);</span><span> // 所有写者都退出了，才给读者开门</span></div></div><div><div><div>47</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>48</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>w_mutex);</span></div></div><div><div><div>49</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>50</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ul>
<li>非经典模型：多读者多写者公平</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>semaphore rw_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>  // 数据区互斥</span></div></div><div><div><div>2</div></div><div><span>semaphore queue </span><span>=</span><span> </span><span>1</span><span>;</span><span>     // 排队锁，保证先来后到</span></div></div><div><div><div>3</div></div><div><span>semaphore r_mutex </span><span>=</span><span> </span><span>1</span><span>;</span><span>   // 互斥修改 read_count</span></div></div><div><div><div>4</div></div><div><span>int</span><span> read_count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>void</span><span> </span><span>reader</span><span>() {</span></div></div><div><div><div>7</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>8</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>queue);</span><span>       // 进入先来先服务队列</span></div></div><div><div><div>9</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>10</div></div><div><span><span>        </span></span><span>read_count</span><span>++</span><span>;</span></div></div><div><div><div>11</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>1</span><span>) {</span></div></div><div><div><div>12</div></div><div><span>            </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 第一个读者锁定写者</span></div></div><div><div><div>13</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>14</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>15</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>queue);</span><span>       // 释放排队锁，允许下一个（读者或写者）排队</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>        </span><span>// --- 读操作 ---</span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>20</div></div><div><span><span>        </span></span><span>read_count</span><span>--</span><span>;</span></div></div><div><div><div>21</div></div><div><span>        </span><span>if</span><span> (read_count </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>22</div></div><div><span>            </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span> // 最后一个读者退出</span></div></div><div><div><div>23</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>24</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>r_mutex);</span></div></div><div><div><div>25</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>26</div></div><div><span>}</span></div></div><div><div><div>27</div></div><div>
</div></div><div><div><div>28</div></div><div><span>void</span><span> </span><span>writer</span><span>() {</span></div></div><div><div><div>29</div></div><div><span>    </span><span>while</span><span> (</span><span>1</span><span>) {</span></div></div><div><div><div>30</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>queue);</span><span>       // 拿到排队号</span></div></div><div><div><div>31</div></div><div><span>        </span><span>P</span><span>(</span><span>&amp;</span><span>rw_mutex);</span><span>    // 等待当前读者/写者完成</span></div></div><div><div><div>32</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>queue);</span><span>       // 释放排队锁</span></div></div><div><div><div>33</div></div><div>
</div></div><div><div><div>34</div></div><div><span>        </span><span>// --- 写操作 ---</span></div></div><div><div><div>35</div></div><div>
</div></div><div><div><div>36</div></div><div><span>        </span><span>V</span><span>(</span><span>&amp;</span><span>rw_mutex);</span></div></div><div><div><div>37</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>38</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section></section><section><h3>二级分页 + TLB 模型<a href="#二级分页--tlb-模型"><span>#</span></a></h3><p>系统参数设定</p><ul>
<li>逻辑地址空间：4GB，按字节编址，逻辑地址长度为 32 位。</li>
<li>页面大小：4KB。</li>
<li>二级分页划分：高 10 位为一级页号（页目录号 P1），中间 10 位为二级页号（P2），低 12 位为页内偏移量（D）。</li>
<li>TLB：全相联映射，初始状态全空。</li>
<li>访存策略：CPU 给出虚地址后，先查 TLB。TLB 缺失时，才去查内存中的页表。若发生缺页，由操作系统调入页面并更新页表，中断返回后重新执行该指令。</li>
</ul><p>某时刻，CPU 执行一条访存指令（比如 LOAD 寄存器，[0x0040312C]），尝试读取该逻辑地址处的数据。</p><p>此时：</p><ol>
<li>目标页面在外存（磁盘 Swap 区），尚未调入主存。</li>
<li>TLB 处于清空状态。</li>
<li>页目录表已在物理内存中，其基地址寄存器指明了页目录的物理地址。</li>
</ol><section><h4>阶段一：第一次执行指令与虚地址切分<a href="#阶段一第一次执行指令与虚地址切分"><span>#</span></a></h4><ol>
<li>CPU 解析逻辑地址 0x0040312C，将其转换为 32 位二进制：
0000 0000 0100 0000 0011 0001 0010 1100</li>
<li>硬件自动将其拆解为三部分：
<ul>
<li>一级页号 P1（前 10 位）：0000 0000 01，即十进制 1 号目录项。</li>
<li>二级页号 P2（中 10 位）：00 0000 0011，即十进制 3 号页表项。</li>
<li>页内偏移 D（后 12 位）：0001 0010 1100，即十六进制 0x12C。</li>
</ul>
</li>
<li>虚页号 VPN 为前 20 位组合：0000 0000 0100 0000 0011，即十六进制 0x00403。</li>
</ol></section><section><h4>阶段二：查询 TLB（发生 Miss）<a href="#阶段二查询-tlb发生-miss"><span>#</span></a></h4><ol>
<li>CPU 硬件拿着 20 位虚页号 0x00403 去和 TLB 中所有条目的 Tag 进行全相联并行匹配。</li>
<li>判定：由于 TLB 初始为空，Tag 匹配失败（TLB Miss）。</li>
<li>动作：按照设定，硬件转向内存开始查询二级页表。</li>
</ol></section><section><h4>阶段三：两级页表漫游与触发缺页<a href="#阶段三两级页表漫游与触发缺页"><span>#</span></a></h4><ol>
<li>查一级页目录表：
<ul>
<li>硬件根据页表基址寄存器 + (P1 × 4B)，找到 1 号页目录项。</li>
<li>检查该项有效位为 1，从中读出对应的二级页表所在的物理页框号。</li>
</ul>
</li>
<li>查二级页表：
<ul>
<li>硬件根据二级页表基地址 + (P2 × 4B)，找到 3 号页表项。</li>
<li>检查该页表项：发现其有效位（Valid Bit）为 0！说明该目标数据页不在内存中。</li>
</ul>
</li>
<li>触发异常：
<ul>
<li>硬件立即终止当前地址变换，产生【缺页异常（Page Fault）】，CPU 进入核心态。</li>
</ul>
</li>
</ol></section><section><h4>阶段四：操作系统介入（缺页中断服务程序）<a href="#阶段四操作系统介入缺页中断服务程序"><span>#</span></a></h4><ol>
<li>操作系统挂起当前触发缺页的进程，保存当前指令的上下文（PC 依然指向这条引发缺页的 LOAD 指令）。</li>
<li>从空闲物理页框列表中分配一个空闲页框（假设分配到的物理页框号为 0x5A88）。</li>
<li>根据页表项中记录的外存地址，发出磁盘 I/O 请求，把外存中的数据页面读入到 0x5A88 页框中。</li>
<li>页面调入完成后，操作系统修改该二级页表项的内容：
<ul>
<li>将物理页框号写入 0x5A88。</li>
<li>将有效位从 0 改为 1。</li>
</ul>
</li>
<li>中断处理结束，CPU 退出核心态。</li>
</ol></section><section><h4>阶段五：异常返回与“重读重执”<a href="#阶段五异常返回与重读重执"><span>#</span></a></h4><ol>
<li>重点特性：与普通的外部 I/O 中断不同，缺页异常处理完成后，CPU 恢复现场，返回到【刚刚发生缺页的那条原指令】重新开始执行，而不是执行下一条指令。</li>
<li>CPU 再次发射这条 LOAD [0x0040312C] 指令。</li>
</ol></section><section><h4>阶段六：第二次执行指令与 TLB 更新<a href="#阶段六第二次执行指令与-tlb-更新"><span>#</span></a></h4><ol>
<li>CPU 再次切分地址，得到虚页号 0x00403。</li>
<li>先查 TLB：因为操作系统刚刚调页并不会直接主动写 TLB，此时 TLB 里仍然没有这个项，再次发生 TLB Miss。</li>
<li>再次查两级页表：
<ul>
<li>查页目录项（有效）。</li>
<li>查二级页表项：这次读取时，有效位已经是 1 了！顺利读出物理页框号 0x5A88。</li>
</ul>
</li>
<li>写入快表：硬件（或软故障处理）将映射关系【Tag = 0x00403, 物理页框号 = 0x5A88】写入全相联 TLB 中，以便下次极速访问。</li>
</ol></section><section><h4>阶段七：最终物理地址拼接与访存<a href="#阶段七最终物理地址拼接与访存"><span>#</span></a></h4><ol>
<li>物理地址生成：
<ul>
<li>高位取物理页框号：0x5A88（二进制占对应物理位宽）。</li>
<li>低 12 位直接复制逻辑地址的页内偏移：0x12C。</li>
<li>最终物理地址合成完毕：0x5A8812C。</li>
</ul>
</li>
<li>CPU 将该物理地址送上地址总线，从主存中正确读出数据，装入寄存器，整条指令顺利执行完毕！</li>
</ol></section></section><section><h3>页表项大小与页表的虚拟地址<a href="#页表项大小与页表的虚拟地址"><span>#</span></a></h3><p>页表也有虚拟地址，正如前面讨论的，页表的虚拟地址在高地址的内核区域，并且每个进程都被映射到同一份。</p><p>假设页表项为 <span><span>4 B4\text{ B}</span><span><span><span></span><span>4</span><span><span> B</span></span></span></span></span>，页表逻辑起始地址为 <span><span>0x1000\mathtt{0x1000}</span><span><span><span></span><span><span>0x1000</span></span></span></span></span>，那么逻辑页号 1 对应的页表项虚拟地址为</p><span><span><span>0x1000+1×4=0x1004\mathtt{0x1000}+1\times 4=\mathtt{0x1004}</span><span><span><span></span><span><span>0x1000</span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span></span><span>=</span><span></span></span><span><span></span><span><span>0x1004</span></span></span></span></span></span><p>页表的物理起始地址为 <span><span>0x2000\mathtt{0x2000}</span><span><span><span></span><span><span>0x2000</span></span></span></span></span>，那么该页表项的物理地址为</p><span><span><span>0x2000+1×4=0x2004\mathtt{0x2000}+1\times 4=\mathtt{0x2004}</span><span><span><span></span><span><span>0x2000</span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>×</span><span></span></span><span><span></span><span>4</span><span></span><span>=</span><span></span></span><span><span></span><span><span>0x2004</span></span></span></span></span></span><p>需要注意，页表项的下标是页号，字节偏移是“页号 × 页表项大小”，这里最容易把页号和字节偏移搞混。</p></section><section><h3>页表、cache、TLB 相关的辨析<a href="#页表cachetlb-相关的辨析"><span>#</span></a></h3><section><h4>页表项的长度<a href="#页表项的长度"><span>#</span></a></h4><p>页表项至少要能存下物理页框号，所以最少需要 <span><span>⌈log⁡2(页框数)⌉\lceil\log_2(\text{页框数})\rceil</span><span><span><span></span><span>⌈</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span><span>页框数</span></span><span>)⌉</span></span></span></span> 位，再按字节向上取整。</p><p>例如物理内存 <span><span>4 GB4\text{ GB}</span><span><span><span></span><span>4</span><span><span> GB</span></span></span></span></span>、页大小 <span><span>4 KB4\text{ KB}</span><span><span><span></span><span>4</span><span><span> KB</span></span></span></span></span>，页框数为 <span><span>2202^{20}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>20</span></span></span></span></span></span></span></span></span></span></span></span>，页框号需要 20 位，向上取整到 3 字节，实际一般做成 4 字节，方便对齐和访问。</p><p>需要注意，页表项里还要放状态位、保护位、脏位等，所以实际长度通常比理论最小值大；题目如果说“页表项占 4B”，那这些额外的位就都算在这 4B 里。</p></section><section><h4>辨析要访问主存多少次<a href="#辨析要访问主存多少次"><span>#</span></a></h4><p>需要分析 TLB / cache 是否存在，如果 TLB 不命中（或者不存在），那么肯定要访问一次主存即访问页表；</p><p>如果 cache 存在，那么就不需要去访问主存（得到指令）。</p><p>所以，总共最少可以访问 0 次主存，但是其他时候要具体情况具体分析，尤其是不要忽略了 cache 可能不命中导致的访问主存。</p></section></section><section><h3>连续分配、隐式链接添加和删除文件需要访问多少次磁盘<a href="#连续分配隐式链接添加和删除文件需要访问多少次磁盘"><span>#</span></a></h3><p>假设文件长度为 100 块，现在要在第 29 块之后插入一个新的第 30 块。</p><ul>
<li>连续分配：插入点之后的数据整体后移。第 30 到第 100 块共 71 块要读一次、写一次，再加写入新块 1 次，共 <span><span>71×2+171\times 2+1</span><span><span><span></span><span>71</span><span></span><span>×</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 次。前提是后面还有空闲空间，否则要先做碎片整理或者整体搬迁，代价更高</li>
<li>隐式链接：要读出前 29 块才能拿到原来第 30 块的地址，然后写入新块、修改第 29 块的末尾指针，共 <span><span>29+1+129+1+1</span><span><span><span></span><span>29</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 次</li>
<li>显式链接：FAT 表在内存里，找块号不用读盘，只有写数据块和改 FAT 要访盘，比隐式链接省掉 29 次读</li>
<li>索引分配：只要在索引块里插入一个表项，把后面的表项后移，访问次数等于读索引块加写索引块加写数据块</li>
</ul><p>需要注意，这里的次数按“读一块算一次、写一块算一次”来算，如果题目里还有目录块要读，也要一起算进去。</p><p>对于显式链接分配和索引分配，具体可以套 FAT 系统和 UFS 系统的模型。</p></section><section><h3>FAT 系统与 UFS 系统<a href="#fat-系统与-ufs-系统"><span>#</span></a></h3><p>假设根目录内容已经被读入了（即 A 的 FCB / inode 已经在内存里了）。</p><p>要读取文件 C 的第 1048 块</p><section><h4>以 FAT 系统为例，访问 ./A/B/C<a href="#以-fat-系统为例访问-abc"><span>#</span></a></h4><p>在 FAT 系统中，FAT 表开机即载入并常驻内存，目录也是文件，FCB 即目录项。</p><ul>
<li>open 阶段：获取 C 的元数据，在内存中登记并返回文件描述符 fd
<ul>
<li>读取 A：根据块号，读磁盘将目录文件 A 的盘块读入内存。在 A 中遍历查找目录项 B，获得 B 的起始物理块号。</li>
<li>读取 B：根据块号，读磁盘将目录文件 B 的盘块读入内存。在 B 中遍历查找目录项 C</li>
</ul>
</li>
<li>read 阶段：从 C 的 FCB 中拿到起始块号。因为 FAT 表完全在内存中，系统在内存的 FAT 表中顺着指针链条追踪（做 1047 次链表跳转），即可在内存中瞬间计算出第 1048 块的真实物理块号。根据算出的物理块号，读磁盘 1 次，将第 1048 块的数据内容送入用户缓冲区。</li>
</ul><p>open 访问磁盘：2 次。</p><p>read 访问磁盘：1 次。</p></section><section><h4>以 UFS 系统为例，访问 ./A/B/C<a href="#以-ufs-系统为例访问-abc"><span>#</span></a></h4><ul>
<li>open 阶段
<ul>
<li>读 A 的 inode：根据 inode 编号去磁盘的 inode 区读出 A 的 inode。</li>
<li>读 A 的目录项：根据 A 的 inode 里的直接指针，读出 A 的目录数据块。在其中匹配得到 B 的 inode 编号。</li>
<li>读 B 的 inode：根据 B 的 inode 编号去磁盘的 inode 区读出 B 的 inode。</li>
<li>读 B 的目录项：根据 B 的 inode 里的直接指针，读出 B 的目录数据块。在其中匹配得到 C 的 inode 编号。</li>
<li>读 C 的 inode：根据 C 的 inode 编号去磁盘的 inode 区读出 C 的 inode。</li>
</ul>
</li>
<li>read 阶段
<ul>
<li>此时 C 的 inode 已经在内存中。我们需要判断第 1048 块（逻辑块号 1047，若按 1-based 算则是第 1048 块）落在哪里：
<ul>
<li>直接索引：第 <span><span>0∼110 \sim 11</span><span><span><span></span><span>0</span><span></span><span>∼</span><span></span></span><span><span></span><span>11</span></span></span></span> 块（共 12 块）。</li>
<li>一级间接索引：第 <span><span>12∼12+1024−1=103512 \sim 12 + 1024 - 1 = 1035</span><span><span><span></span><span>12</span><span></span><span>∼</span><span></span></span><span><span></span><span>12</span><span></span><span>+</span><span></span></span><span><span></span><span>1024</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>1035</span></span></span></span> 块（共 1024 块）。</li>
<li>二级间接索引：第 <span><span>1036∼1036+1024×1024−11036 \sim 1036 + 1024 \times 1024 - 1</span><span><span><span></span><span>1036</span><span></span><span>∼</span><span></span></span><span><span></span><span>1036</span><span></span><span>+</span><span></span></span><span><span></span><span>1024</span><span></span><span>×</span><span></span></span><span><span></span><span>1024</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 块。</li>
<li>因此，第 1048 块必定落在二级（双重）间接索引中</li>
</ul>
</li>
<li>读入第一层索引块</li>
<li>读入第二层索引块</li>
<li>读入数据</li>
</ul>
</li>
</ul><p>open：5 次。
read：至少 1 次，按照本题设置的情景为 3 次。</p></section></section><section><h3>以 scanf 分析设备管理<a href="#以-scanf-分析设备管理"><span>#</span></a></h3><p>当程序执行到 <code>scanf</code> 时，库函数先检查 <code>stdio</code> 缓冲区；只有缓冲区中没有满足格式要求的数据时，才会通过 <code>read</code> 等系统调用进入内核。若输入尚未就绪，该系统调用会使进程阻塞。</p><p>键盘输入通常由设备中断交给驱动和终端行规程处理，再进入内核缓冲区。当缓冲区中已有满足本次读取的数据时，内核将数据复制到用户缓冲区并唤醒等待进程；具体的缓冲、回显、行结束和调度时机取决于操作系统与终端配置。</p><p>系统调用返回后，<code>scanf</code> 在用户态缓冲区中解析数据并返回。</p><p>简单来讲，就是执行 scanf 后，如果没有数据，那么使进程阻塞，等待用户输入数据。当用户输入数据的时候，数据首先进入键盘缓冲区，然后中断服务条例结束。</p><p>随后数据进入内核缓冲区，复制到用户缓冲区，然后使进程变为就绪态，等待进程唤醒。</p><p>进程被唤醒后，完成该函数，然后进入下一条函数（所以函数返回是最后做的）。</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/alas/android-host/</id>
      <title type="text">树莓派 5 安卓端 + PC 端 ALAS 挂机方案</title>
      <published>2026-09-04T00:00:00.000Z</published>
      <updated>2026-09-04T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/alas/android-host/"/>
      <summary type="text">一种基于树莓派 5 运行 AOSP16、由局域网 PC 部署 ALAS 实施自动化控制的挂机方案。树莓派只负责跑游戏，ALAS 跑在 x86 真机上，彻底绕开 arm64 依赖兼容问题；过图速度从 Waydroid 方案的约 10s 压缩到约 3s，配合采集卡与 scrcpy 无画面控制，实现低负载、长时间的《碧蓝航线》稳定托管。</summary>
      <content type="html"><![CDATA[<section><h2>更新日志<a href="#更新日志"><span>#</span></a></h2><ul>
<li>2026.09.04：本文初版发布，整理「树莓派跑安卓 + PC 跑 ALAS」的最终方案，废弃 USB 采集卡截图路线</li>
<li>2026.05.04：受 nnieie 启发转向「pipi5 刷安卓 + 局域网 ALAS」，完整踩坑过程见<a href="/posts/alas/debian-waydroid/">前作</a>第八章（该文及其混乱，已封存加密，仅供参考），密码为 2004122120070130</li>
</ul></section>
<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>笔者的主力设备是一台 2019 年的联想小新 13，16G 内存。因为要学 Golang，常驻一个 WSL2；而 ALAS 是个 7x24h 运行的碧蓝航线脚本，和主流的 Hyper-V 模拟器（蓝叠、MuMu）在低配机上互相挤占——电脑一旦干点别的（下资料、看网课），模拟器和 ALAS 就可能一起崩溃。</p><p>此前的思路是「把一切都塞进树莓派」：pipi5 上刷 Debian 13，用 Waydroid 跑安卓，再靠 LD_PRELOAD 注入旧版依赖、修改 ALAS 源码解决 arm64 上的识别问题。这套方案能跑，但 pipi5 长期超频，进图要 10s 左右，维护成本极高。</p><p>直到考研周期电脑闲置下来，和 <a href="https://github.com/nnieie" target="_blank">nnieie</a> 闲聊时他说：可以试试刷一个安卓系统。参考<a href="https://www.perfare.net/archives/1804" target="_blank">传统云手机文档</a>验证截图与点击的可行性后，路线就此确定：</p><p><strong>树莓派只当「安卓游戏机」，ALAS 搬回 PC。</strong></p><p>这个拆分有两个直接收益：</p><ul>
<li><strong>ALAS 运行在 x86 真机上</strong>，照官方文档安装即可，前作里那些 <code>.so</code> 软链接、LD_PRELOAD 注入、OpenCV 版本错配的坑一条都不会遇到；</li>
<li><strong>安卓跑在 arm64 原生环境</strong>，没有模拟器的指令集转译开销。</li>
</ul><p>实测三种方案的过图速度：</p>

<table><thead><tr><th>方案</th><th>进图时长</th></tr></thead><tbody><tr><td>pipi5 + Debian 13 + Waydroid + ALAS（前作方案）</td><td>~10s</td></tr><tr><td>小新 13 + MuMu 模拟器 + ALAS</td><td>~5s（内存紧张时退化到 ~10s）</td></tr><tr><td>小新 13 + pipi5 + AOSP16 + 局域网 ADB（本方案）</td><td><strong>~3s</strong></td></tr></tbody></table><p>本文即该方案的完整部署记录。</p></section>
<section><h2>硬件清单<a href="#硬件清单"><span>#</span></a></h2>

<table><thead><tr><th>物料</th><th>规格 / 型号</th><th>用途</th><th>备注</th></tr></thead><tbody><tr><td>树莓派 5</td><td><strong>4GB</strong> 内存</td><td>运行 AOSP16 + 碧蓝航线</td><td>必须 5V/5A 供电，详见「供电：一切奇怪现象的源头」</td></tr><tr><td>电源</td><td>5V/5A</td><td>给树莓派供电</td><td>不要用电脑 USB 口凑合</td></tr><tr><td>存储卡</td><td>32GB 以上</td><td>系统 + 游戏资源</td><td>碧蓝航线资源包不小</td></tr><tr><td>采集卡</td><td>MS2131 级 USB 采集卡</td><td>PC 端实时看画面</td><td>几十块钱，mini HDMI 输入</td></tr><tr><td>mini HDMI 线</td><td>—</td><td>树莓派 → 采集卡</td><td>首次配置也可能需要接显示器</td></tr><tr><td>PC</td><td>x86，Windows / Linux 均可</td><td>部署 ALAS + scrcpy</td><td>本方案的「控制主机」</td></tr></tbody></table><div><div><div></div><div>Note</div></div><div><p>4GB 内存跑碧蓝航线主线足够，但 3D 宿舍、岛屿计划这类吃 GPU 的功能跑不动，详见「已知缺点」。</p></div></div></section>
<section><h2>方案架构<a href="#方案架构"><span>#</span></a></h2><p>全链路只有三条数据通路：</p><div><div><div><div><span><p>局域网 ADB · IP:5555 · 截图 + 控制</p></span></div><div><span><p>mini HDMI</p></span></div><div><span><p>USB</p></span></div><div><span><p>scrcpy --mouse=uhid · 键鼠注入（不传输画面）</p></span></div><div><span><p>PC · ALAS（x86 真机）</p></span></div><div><span><p>树莓派 5 · AOSP16 + 碧蓝航线（4GB）</p></span></div><div><span><p>USB 采集卡（MS2131 级）</p></span></div><div><span><p>PC · PotPlayer / OBS（仅看画面）</p></span></div>
</div><div><div><span><p>局域网 ADB · IP:5555 · 截图 + 控制</p></span></div><div><span><p>mini HDMI</p></span></div><div><span><p>USB</p></span></div><div><span><p>scrcpy --mouse=uhid · 键鼠注入（不传输画面）</p></span></div><div><span><p>PC · ALAS（x86 真机）</p></span></div><div><span><p>树莓派 5 · AOSP16 + 碧蓝航线（4GB）</p></span></div><div><span><p>USB 采集卡（MS2131 级）</p></span></div><div><span><p>PC · PotPlayer / OBS（仅看画面）</p></span></div>
</div></div></div><ul>
<li><strong>ADB 链路</strong>：ALAS 通过局域网连到树莓派的 5555 端口，完成截图（ADB_nc）与点击（MaaTouch），这是自动化的主链路；</li>
<li><strong>HDMI 链路</strong>：树莓派的画面经采集卡送到 PC，用 PotPlayer / OBS 观看，供人工介入时观察；</li>
<li><strong>scrcpy 链路</strong>：需要手动操作时，用 scrcpy 以 uhid 模式把键鼠注入为树莓派的真实输入设备，且不传输画面，几乎不消耗树莓派性能。</li>
</ul></section>
<section><h2>刷安卓系统<a href="#刷安卓系统"><span>#</span></a></h2><section><h3>系统选择<a href="#系统选择"><span>#</span></a></h3><p>刷的是 <a href="https://konstakang.com/devices/rpi5/AOSP16/" target="_blank">konstakang</a> 提供的 AOSP16 构建，用 Raspberry Pi Imager 或 balenaEtcher 烧录到存储卡即可。</p><p>首次启动建议先用 mini HDMI 接一台显示器，在图形界面里完成网络连接和开发者选项配置，配好后再搬到采集卡方案。</p></section><section><h3>供电：一切奇怪现象的源头<a href="#供电一切奇怪现象的源头"><span>#</span></a></h3><div><div><div></div><div>Warning</div></div><div><p>树莓派 5 对供电的要求比较苛刻，<strong>请使用 5V/5A 的独立电源</strong>。</p></div></div><p>如果暂时没有合适电源、想拿电脑 USB 口过渡，实测普通操作可以运行，但一旦进行复杂的网络握手（比如连接一个新的 Wi-Fi），就可能直接崩溃。规避方法是：<strong>先在树莓派上把该网络添加好，再连接</strong>，跳过握手过程。</p><p>这也是本文坚持走网络 ADB、而不是 USB 数据线连接的原因之一。</p></section><section><h3>关闭网络连通性检测<a href="#关闭网络连通性检测"><span>#</span></a></h3><p>AOSP 默认连接 Google 服务器检测网络连通性，国内网络下该检测必然失败，系统会误判为「断网」，进而导致游戏无法下载资源、无法登录。</p><p>前作在 Waydroid 上的做法是把检测地址换成国内的 <code>connect.rom.miui.com</code>；在 AOSP 上更直接——关掉检测：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>adb shell </span><span>"settings put global captive_portal_mode 0"</span></div></div><div><div><div>2</div></div><div><span>adb shell </span><span>"settings put global captive_portal_detection_enabled 0"</span></div></div><div><div><div>3</div></div><div><span>adb shell </span><span>"settings put global network_avoid_bad_wifi 0"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><div><div></div><div>Note</div></div><div><p>网络检测问题通常在<strong>登录阶段</strong>才暴露。刷完系统先别急着部署 ALAS，确认游戏能正常登录再说。</p></div></div></section><section><h3>开启网络 ADB<a href="#开启网络-adb"><span>#</span></a></h3><p>在「开发者选项」中打开有线和无线 ADB 控制权限。部分构建的无线调试默认关闭，配好后确认 5555 端口能被局域网访问即可。</p></section><section><h3>固定分辨率<a href="#固定分辨率"><span>#</span></a></h3><p>ALAS 的模板匹配基于 1280x720，建议在「设置 → 显示」中把分辨率固定为 1280x720，或执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>adb shell wm size 1280x720</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>修改分辨率后需要重启游戏，否则模板会错位。</p></section></section>
<section><h2>安装碧蓝航线<a href="#安装碧蓝航线"><span>#</span></a></h2><p>在树莓派上用浏览器访问碧蓝航线官网，直接下载 APK 安装即可，不需要任何额外工具。</p><p>几个实测经验：</p><ul>
<li>资源包下载耗时较长，建议在网络好的环境下先完成下载和登录，再开始挂机；</li>
<li>游戏大版本更新后需要重新下载资源，届时挂机会中断，属于预期行为；</li>
<li>4GB 内存跑主线完全够用，但不要指望它跑 3D 宿舍。</li>
</ul></section>
<section><h2>网络 ADB 连接<a href="#网络-adb-连接"><span>#</span></a></h2><p>因为树莓派的供电要求苛刻、且不想让它长期占用显示器，本文全程使用网络 ADB。</p><p>在路由器后台找到树莓派的局域网 IP，在 PC 上执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>adb connect IP:</span><span>5555</span><span>   </span><span># 替换为实际 IP</span></div></div><div><div><div>2</div></div><div><span><span>adb devices </span><span>-</span><span>l</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>看到 <code>IP:5555</code> 状态为 <code>device</code> 即连接成功。首次连接时树莓派会弹出调试授权弹窗，勾选「一律允许」并确认。</p><div><div><div></div><div>Tip</div></div><div><p><strong>务必在路由器里给树莓派做 DHCP 静态绑定</strong>（或在 AOSP 里配置静态 IP）。否则树莓派重启后 IP 变化，ALAS 会静默断连，而你不会第一时间注意到——这和「已知缺点」中 ADB_nc 偶发断连属于同一类隐患，提前掐掉。</p></div></div></section>
<section><h2>部署 ALAS<a href="#部署-alas"><span>#</span></a></h2><section><h3>安装<a href="#安装"><span>#</span></a></h3><p>ALAS 部署在 PC 上，照 <a href="https://ALAS-wiki.saarcenter.com/zh-CN/manual/install/linux.html" target="_blank">ALAS 官方 Linux 安装文档</a> 准备 git、python、虚拟环境即可。</p><p>需要特别强调的是：<strong>本方案下 ALAS 运行在 x86 真机上，不存在任何 arm64 兼容问题</strong>。前作里那些软链接、LD_PRELOAD、opencv-python 版本错配的坑，在这个方案里一条都不会遇到——这是「拆分」最大的隐性收益。</p></section><section><h3>连接配置<a href="#连接配置"><span>#</span></a></h3><p>在 ALAS 的设备配置中：</p><ul>
<li>设备 Serial 填 <code>IP:5555</code>；</li>
<li>截图方式选择 <code>ADB_nc</code>；</li>
<li>控制方式选择 <code>MaaTouch</code>。</li>
</ul><p>各环节实测延迟：</p>

<table><thead><tr><th>环节</th><th>方案</th><th>延迟</th></tr></thead><tbody><tr><td>截图</td><td>ADB_nc（默认，快）</td><td>~400ms</td></tr><tr><td>截图</td><td>ADB（备选，更稳）</td><td>高于 400ms</td></tr><tr><td>点击</td><td>MaaTouch</td><td>~50ms</td></tr><tr><td>看画面</td><td>采集卡 + PotPlayer / OBS</td><td>~100ms</td></tr></tbody></table><div><div><div></div><div>Note</div></div><div><p>ADB_nc 截图快，但存在偶发的莫名断连。如果日常使用中遇到 ALAS 突然连不上，把截图方式切换为 <code>ADB</code> 通常能解决。</p></div></div></section></section>
<section><h2>手动介入<a href="#手动介入"><span>#</span></a></h2><p>ALAS 是半自动脚本，换队、处理突发弹窗都需要人工介入。本节提供三套可按需取用的手段。</p><section><h3>scrcpy 无画面控制<a href="#scrcpy-无画面控制"><span>#</span></a></h3><p><a href="https://github.com/Genymobile/scrcpy" target="_blank">scrcpy</a> 的常规用法会实时传输画面，实测对树莓派的性能消耗极大（延迟大、占用高），与挂机目标冲突。</p><p>解法是<strong>只控制、不传画面</strong>：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>adb connect IP:</span><span>5555</span><span>   </span><span># 需要替换为实际 IP</span></div></div><div><div><div>2</div></div><div><span><span>scrcpy </span><span>--</span><span>no</span><span>-</span><span>video </span><span>--</span><span>no</span><span>-</span><span>audio </span><span>--</span><span>mouse</span><span>=</span><span>uhid</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>逐参数解释：</p><ul>
<li><code>--no-video --no-audio</code>：不传输画面和声音，这是不拖累树莓派性能的关键；</li>
<li><code>--mouse=uhid</code>：把键鼠通过 UHID 注入为真实的 HID 设备，游戏会认为你接了物理键鼠，比模拟坐标点击的兼容性更好。</li>
</ul><p>如果 PC 上同时连着多台 ADB 设备，先用 <code>adb devices</code> 拿到目标设备的序列号，再用 <code>-s</code> 指定：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>adb devices</span></div></div><div><div><div>2</div></div><div><span><span>scrcpy </span><span>-</span><span>s IP:</span></span><span>5555</span><span><span> </span><span>--</span><span>no</span><span>-</span><span>video </span><span>--</span><span>no</span><span>-</span><span>audio </span><span>--</span><span>mouse</span><span>=</span><span>uhid</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>至此，游戏内的手动操作全部通过 scrcpy 完成，画面观察交给下一节的采集卡。</p></section><section><h3>采集卡看画面<a href="#采集卡看画面"><span>#</span></a></h3><p>scrcpy 关了画面，总得有地方观察游戏状态。方案是买一块 MS2131 级的廉价 USB 采集卡，用 mini HDMI 线接到树莓派上，在 PC 端用 PotPlayer 或 OBS 打开对应的摄像头设备即可看到实时画面，延迟约 100ms，且完全不消耗树莓派性能。</p><p>实测踩坑：采集卡画面出现撕裂、黑屏时，换一个 mini HDMI 接口通常就能解决，原因不明，但有效。</p><p><strong>为什么不让采集卡顺便给 ALAS 截图？</strong></p><p>前作试过：修改 ALAS 让采集卡画面直接作为截图来源，把 400ms 的 ADB_nc 压到 100ms。但廉价采集卡存在<strong>人眼不可辨、OpenCV 可辨的色差</strong>。例如委托成功页面，模板期望的关键颜色约为 <code>(233, 241, 127)</code>，而采集卡对应区域实测接近 <code>(245.6, 255.0, 134.2)</code>，差值超出模板阈值，直接导致识别失败。</p><p>为此先后尝试过 RGB 线性变换拟合（MAE 从 11.28 降到 6.79）、LUT / 3D LUT 乃至 C 加速应用，仍有漏网场景（军火商店的 YellowBookT3、3D 宿舍误识别），而 ADB 兜底策略又过于敏感、拖慢整体节奏。</p><p>结论：为了省 300ms 引入一套不可控的色差修正，不划算。最终退回 <strong>ADB_nc 截图 + 采集卡只看不截</strong>，普适性优先于极致延迟。</p></section><section><h3>键鼠直插树莓派<a href="#键鼠直插树莓派"><span>#</span></a></h3><p>嫌 scrcpy 麻烦的话，还有更懒的办法：把 USB 鼠标（和键盘）直接插在树莓派上，画面照旧走采集卡，用 PotPlayer 或 OBS 观看（延迟约 100ms），PC 上不用开任何控制软件，插上就能动。</p><ul>
<li>优点：零配置、零软件开销，且实体键盘可以正常调出树莓派的输入法，<strong>能打中文</strong>——正好补上 scrcpy 方案的短板；</li>
<li>缺点：占用树莓派的 USB 口，线缆长度决定了你得坐在树莓派旁边。</li>
</ul><p>日常托管交给 ALAS，偶发需要精细操作时把键鼠插上，几套手段按需取用。</p></section></section>
<section><h2>已知缺点<a href="#已知缺点"><span>#</span></a></h2><ol>
<li><strong>无法输入中文</strong>。scrcpy 的 uhid 注入只能发送英文字符，调不出树莓派的输入法。规避：界面语言设为英文，或干脆把键鼠直接插到树莓派上（见「键鼠直插树莓派」）。</li>
<li><strong>点击速度受限</strong>。uhid 鼠标注入的点击存在节流，手动介入时体感明显不如 ALAS 自己的 MaaTouch（50ms）。只影响手动操作，不影响自动化效率。</li>
<li><strong>无法运行岛屿计划</strong>。4GB 的树莓派 5 撑不住 3D 宿舍、岛屿计划这类吃 GPU 的功能，请在该场景回到 PC 端处理，或放弃该功能。</li>
<li><strong>ADB_nc 偶发断连</strong>。表现为不可预知的突然断开，把截图方式切换为 <code>ADB</code> 即可缓解；配合路由器的静态 IP 绑定，可以显著减少断连面。</li>
<li><strong>游戏更新会中断挂机</strong>。大版本更新需要重新下载资源，期间无法托管，属预期行为。</li>
</ol></section>
<section><h2>结语<a href="#结语"><span>#</span></a></h2><p>本方案的完整闭环是：<strong>树莓派 5（4GB）跑 AOSP16 当安卓游戏机，PC 跑 ALAS 做控制端，中间靠局域网 ADB 串联，辅以采集卡观察画面、scrcpy 无画面模式手动介入</strong>。过图 3s，PC 不再被模拟器绑架，树莓派也不再超频呻吟。</p><p>后续如果 arm64 的依赖生态继续完善，可能会尝试把 ALAS 也搬上树莓派，彻底单机化——但前作的血泪史证明，那是一场硬仗。</p><p>适合复刻的人群：手里有闲置树莓派、主力 PC 配置吃紧的玩家。如果只有 PC，直接上 MuMu 模拟器更简单，没必要折腾。</p></section>
<section><h2>致谢<a href="#致谢"><span>#</span></a></h2><p>感谢 <a href="https://github.com/nnieie" target="_blank">nnieie</a>，「可以试试刷一个安卓系统」这一句话，省掉了后面所有的麻烦；前作里那些通宵的排错与源码修改，也全部由他完成。</p><p>值得一提的是，本方案最终没有修改任何 ALAS 源码，算是给前作那部血泪史提供了一个干净的收尾。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/ai/how-to-use/</id>
      <title type="text">如何使用 AI</title>
      <published>2026-09-03T00:00:00.000Z</published>
      <updated>2026-09-03T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/ai/how-to-use/"/>
      <summary type="text">面向计算机专业学生的 AI 上手指南：从官方 APP / WEB、API 与中转站，到 AI IDE 与 CLI Agent 的完整使用路径。</summary>
      <content type="html"><![CDATA[<blockquote><p><strong>太长不看</strong></p><ul>
<li>只想日常问答：用官方 APP / WEB，下文附各厂商下载入口。</li>
<li>想自己控制模型参数、接入自动化工具：申请官方 API，或使用中转站 API。</li>
<li>想用 AI 编程：VS Code 装插件，或直接用 Claude Code、Codex 等 CLI Agent。</li>
<li>学习阶段：别让 AI 代替你思考，古法编程仍然必要。</li>
</ul></blockquote>
<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>AI 时代，相信大家对 AI 都不陌生。</p><p>那么如何使用 AI 呢？</p><p>在非理工科专业的人眼里，AI 或许是使用官方 APP / WEB 聊天的搜索引擎，但 AI 的强大远不止如此。</p><p>在数学界，核弹爆炸从 2026 年 5 月开始，<a href="https://www.bilibili.com/video/BV11gGt6pEBg/?share_source=copy_web&amp;vd_source=6166398577cee473a9a08ef285e4dcee" target="_blank">AI 独立攻克单位距离猜想，做出准菲奖级成果</a>。</p><p>而到了 2026 年 8 月，核弹爆炸就变成了光粒子打击，<a href="https://www.bilibili.com/video/BV19b8v6NEtX/?share_source=copy_web&amp;vd_source=6166398577cee473a9a08ef285e4dcee" target="_blank">人结合 AI 的菲奖级成果？6 维球面上的复结构！</a></p><p>那么对于计算机界呢？</p><p>从历史来讲，AI 的思想可以追溯到上世纪 60 年代。但直到 2023 年，由于硬件的发展，才让原本从理论的 AI 走向现实。</p><p>典型的代表是 2022 年 11 月 GPT-3.5 的问世，但实质上的改变是 24 年 5 月的 GPT-4o，再到 25 年年初的 DeepSeek，再到 25 年 4 月的 Gemini 2.5 Pro。</p><p>自此之后，AI 的 coding 能力如脱缰的野马般飞驰，直到 26 年年初，Claude Code 的出现犹如一道惊雷，至此，AI 进入了 Agent 时代，Harness 思想野蛮地扩张，整个 AI 界迎来了前所未有的繁荣。</p><p>那么对于计算机相关专业的学生来讲，应该如何使用 AI？</p></section>
<section><h2>官方 APP / WEB<a href="#官方-app--web"><span>#</span></a></h2><p>最显而易见的方式是使用官方 APP / WEB 进行网页聊天，这是最传统的方式，但也是最简单的方式。</p><p>以访问 deepseek web 端为例，进入 <a href="https://chat.deepseek.com/" target="_blank">deepseek 官网</a>，登陆后进入这样的界面：</p><p></p><figure><img alt="deepseek web 端界面" loading="lazy" width="1108" height="906" src="/_astro/deepseek-web.gNtIHDyE_Z22aGYw.webp" /><figcaption>deepseek web 端界面</figcaption></figure><p></p><p>直接在输入框内输入问题，等待 AI 的回答即可。</p><p>下面列出常见的 AI 官方 APP / WEB 端。</p>

<table><thead><tr><th>厂商</th><th>官网</th><th>iOS</th><th>Android</th></tr></thead><tbody><tr><td>DeepSeek</td><td><a href="https://chat.deepseek.com/" target="_blank">chat.deepseek.com</a></td><td><a href="https://apps.apple.com/app/deepseek-ai-assistant/id6737597349" target="_blank">App Store</a></td><td><a href="https://download.deepseek.com/app/" target="_blank">官网</a> / <a href="https://play.google.com/store/apps/details?id=com.deepseek.chat" target="_blank">Google Play</a></td></tr><tr><td>GLM</td><td><a href="https://chatglm.cn/" target="_blank">chatglm.cn</a></td><td><a href="https://apps.apple.com/app/id6450893458" target="_blank">App Store</a></td><td><a href="https://chatglm.cn/download" target="_blank">官网</a></td></tr><tr><td>Qwen</td><td><a href="https://chat.qwen.ai/" target="_blank">chat.qwen.ai</a></td><td><a href="https://qwen.ai/download" target="_blank">官网下载</a></td><td><a href="https://qwen.ai/download" target="_blank">官网</a> / <a href="https://play.google.com/store/apps/details?id=com.tongyi.intl" target="_blank">Google Play</a></td></tr><tr><td>Kimi</td><td><a href="https://www.kimi.com/" target="_blank">kimi.com</a></td><td><a href="https://apps.apple.com/app/kimi/id6474233312" target="_blank">App Store</a></td><td><a href="https://www.kimi.com/en/products/download" target="_blank">官网</a> / <a href="https://play.google.com/store/apps/details?id=com.moonshot.kimichat" target="_blank">Google Play</a></td></tr><tr><td>Gemini</td><td><a href="https://gemini.google.com/" target="_blank">gemini.google.com</a></td><td><a href="https://apps.apple.com/app/google-gemini/id6477489729" target="_blank">App Store</a></td><td><a href="https://play.google.com/store/apps/details?id=com.google.android.apps.bard" target="_blank">Google Play</a></td></tr><tr><td>Claude</td><td><a href="https://claude.ai/" target="_blank">claude.ai</a></td><td><a href="https://apps.apple.com/app/claude-by-anthropic/id6473753684" target="_blank">App Store</a></td><td><a href="https://play.google.com/store/apps/details?id=com.anthropic.claude" target="_blank">Google Play</a></td></tr><tr><td>GPT</td><td><a href="https://chatgpt.com/" target="_blank">chatgpt.com</a></td><td><a href="https://apps.apple.com/app/chatgpt/id6448311069" target="_blank">App Store</a></td><td><a href="https://play.google.com/store/apps/details?id=com.openai.chatgpt" target="_blank">Google Play</a></td></tr><tr><td>Grok</td><td><a href="https://grok.com/" target="_blank">grok.com</a>（或通过 <a href="https://x.com/" target="_blank">X</a> 访问）</td><td><a href="https://apps.apple.com/app/x/id333903271" target="_blank">X（App Store）</a></td><td><a href="https://play.google.com/store/apps/details?id=com.twitter.android" target="_blank">X（Google Play）</a></td></tr></tbody></table><section><h3>不推荐<a href="#不推荐"><span>#</span></a></h3><p>豆包、文心一言、mimo、minimax（海螺 AI）、腾讯元宝。</p></section></section>
<section><h2>认识 API 与中转站<a href="#认识-api-与中转站"><span>#</span></a></h2><section><h3>为什么要使用 API<a href="#为什么要使用-api"><span>#</span></a></h3><p>你可能用官方 APP / WEB 问过问题，但是可能某段时间，你发现官方 APP / WEB 没以前那么聪明了。这本质是负载过大，导致官方 APP / WEB 暗改，降低回答质量。</p><p>那么我们有没有什么办法，自己控制模型输出的长度、质量呢？</p><p>你可能用官方 APP / WEB 写过代码，例如在 DeepSeek 网页端，把自己的 PTA 作业发给他，等待他回答，然后把代码复制粘贴到 PTA 上，完成作业。</p><p>但是你有没有想过，既然人的作用只是复制粘贴，那么有没有办法让 AI 自己控制浏览器，自己完成作业呢？</p><p>显然，APP / WEB 的 AI 你不能准确调整，而且大部分不具备控制浏览器的能力。</p><p>因为其环境被网页限制了。</p><p>但是 API 可以。</p><p>拿到 AI 的 API 之后，你可以自己设置参数，或者导入到一些自动化工具中，从而达到上面的目的。</p><p>官方往往提供了 API 以供调用，但是价格往往比较昂贵，所以可以使用第三方的中转站来使用 API。</p></section><section><h3>中转站是什么<a href="#中转站是什么"><span>#</span></a></h3><p>中转站，顾名思义是中转的站点，其作用是聚合了多家大模型官方接口的第三方分发平台。</p><p>它将不同厂商的 API 统一封装为兼容标准（如 OpenAI 格式）的接口，支持国内便捷支付充值，让用户无需绑定海外信用卡和搭建复杂网络环境，即可直接按量计费（按 Token 或按次）调用海内外顶级大模型。</p><p>然而，中转站的质量参差不齐，十家里面至少有八家的模型或多或少掺了水，因此需要谨慎选择。</p><p>至于中转站的价格为何会比官方便宜，有几个主要的原因：</p><ul>
<li>号池模式：对于轻度用户而言，买一个 GPT Plus 的账号是 20$，折合 150￥，将之用至上限较难。而号池模式就是多个用户公用一个账号来分摊成本</li>
<li>企业优惠：中转站可以通过企业的方式购买大量额度，获得优惠，从而降低成本</li>
<li>注册机：gpt、gemini 等模型有第一个月的免费 pro 模型体验，中转站可以利用注册机批量注册这些账号</li>
<li>贩卖数据：中转站可以贩卖用户的数据给其他厂商训练模型，从而获得收益</li>
<li>掺水：标注为 GPT-5.5，实质上背后给你偶尔切成其他模型</li>
</ul><p>需要注意，一般而言那些标注为“福利”、“超低价”的模型，或多或少都掺了水。</p><section><h4>NewAPI<a href="#newapi"><span>#</span></a></h4><p>NewAPI 是一款开源的大模型 API 中转分发与管理系统（面板）。市面上绝大多数中转站的后台系统和 UI 界面，本质上都是基于 NewAPI 搭建或二次开发的。</p><p>它支持将 OpenAI、Claude、Gemini、国内各大厂商的原生接口统一转换为标准的 OpenAI 兼容格式，并具备用户管理、额度充值、按量/按次计费、渠道轮询与负载均衡等完整功能。</p><ul>
<li>官网地址：<a href="https://www.newapi.ai/" target="_blank">https://www.newapi.ai/</a></li>
<li>GitHub 仓库：<a href="https://github.com/QuantumNous/new-api" target="_blank">https://github.com/QuantumNous/new-api</a></li>
</ul></section></section><section><h3>使用官方的 API<a href="#使用官方的-api"><span>#</span></a></h3><p>使用官方 API 通常需要先注册开发者账号、创建 API Key，再按照官方文档配置请求地址、模型名称和认证方式。下面列出本文提到的厂商中较常用的官方入口；具体价格、模型名称和调用限制请以官方文档为准。</p><ul>
<li>OpenAI 开发者平台：<a href="https://platform.openai.com/" target="_blank">https://platform.openai.com/</a></li>
<li>OpenAI API 文档：<a href="https://platform.openai.com/docs" target="_blank">https://platform.openai.com/docs</a></li>
<li>Gemini API 文档：<a href="https://ai.google.dev/gemini-api/docs" target="_blank">https://ai.google.dev/gemini-api/docs</a></li>
<li>Gemini API 参考：<a href="https://ai.google.dev/api" target="_blank">https://ai.google.dev/api</a></li>
<li>Claude API 文档：<a href="https://platform.claude.com/docs/en/api/overview" target="_blank">https://platform.claude.com/docs/en/api/overview</a></li>
<li>DeepSeek 开放平台：<a href="https://platform.deepseek.com/" target="_blank">https://platform.deepseek.com/</a></li>
<li>DeepSeek API 文档：<a href="https://api-docs.deepseek.com/" target="_blank">https://api-docs.deepseek.com/</a></li>
<li>Qwen API 文档：<a href="https://help.aliyun.com/zh/model-studio/first-api-call-to-qwen" target="_blank">https://help.aliyun.com/zh/model-studio/first-api-call-to-qwen</a></li>
<li>Qwen OpenAI 兼容接口：<a href="https://help.aliyun.com/zh/model-studio/qwen-api-via-openai-chat-completions" target="_blank">https://help.aliyun.com/zh/model-studio/qwen-api-via-openai-chat-completions</a></li>
<li>GLM API 文档：<a href="https://docs.bigmodel.cn/cn/api/introduction" target="_blank">https://docs.bigmodel.cn/cn/api/introduction</a></li>
<li>Kimi API 开放平台：<a href="https://platform.kimi.com/" target="_blank">https://platform.kimi.com/</a></li>
<li>Kimi API 文档：<a href="https://platform.kimi.com/docs/overview" target="_blank">https://platform.kimi.com/docs/overview</a></li>
<li>腾讯混元 API 文档：<a href="https://cloud.tencent.com/document/product/1729/101832" target="_blank">https://cloud.tencent.com/document/product/1729/101832</a></li>
<li>腾讯混元 API 概览：<a href="https://cloud.tencent.com/document/product/1729/101848" target="_blank">https://cloud.tencent.com/document/product/1729/101848</a></li>
<li>xAI API 文档：<a href="https://api.x.ai/docs/" target="_blank">https://api.x.ai/docs/</a></li>
</ul></section><section><h3>使用中转站<a href="#使用中转站"><span>#</span></a></h3><p>中转站比较杂，市面上有非常多的中转站，这里就不进行列举了。</p><p>需要注意中转站有“跑路”的风险，所以需要谨慎选择。</p><section><h4>中转站计费方式<a href="#中转站计费方式"><span>#</span></a></h4><ul>
<li>
<p>按次计费</p>
<p>按次算钱通常用来问答，即问 AI 问题然后 AI 给你解答。</p>
<p>一般来讲，API 的能力会比网站的能力强，乃至强很多。</p>
<ul>
<li>哈基米中转站：<a href="https://api.gemai.cc/sign-up?aff=BsVFUJmB" target="_blank">https://api.gemai.cc/sign-up?aff=BsVFUJmB</a>（一分钱一次 gemini3.7f）</li>
<li>玖时 API：<a href="https://api.jiushi.xin/register?aff=JDw1" target="_blank">https://api.jiushi.xin/register?aff=JDw1</a>（五分钱一次 gemini3.7f，作为备用站使用）</li>
</ul>
<blockquote><p>声明：以上两条为邀请链接，通过它们注册我会获得少量返利，价格与你自行注册相同；如介意，可直接搜索站名注册。</p></blockquote>
<p>对于大部分的中转站，是按照其自己的货币计费，以哈基米中转站为例，1RMB = 200 积分，2 积分可以使用 1 次 gemini3.7 flash。</p>
<p>需要注意，一定不要把按次算钱的 API 导入 Agent，否则额度会消耗的非常快。</p>
</li>
<li>
<p>按量计费</p>
<p>按量计费通常按照输入和输出的 Token 数量结算，适合代码生成、长文本处理和 Agent 等调用量不固定的场景。使用前应查看输入、输出、缓存和工具调用分别如何计费，并设置预算或限额。</p>
<p>由于按量计费的中转站非常多，这里不做推荐。</p>
</li>
</ul></section></section><section><h3>使用公益站<a href="#使用公益站"><span>#</span></a></h3><p>什么是公益站，简单来说，就是免费提供给用户使用的中转站，但是得通过“拉人头”的方式来获得额度，并且会有比较大的限制，例如并发限制以及某些时间段不得使用。</p><p>公益站的主要收入为贩卖数据，或者单纯是免费提供给用户使用。</p></section><section><h3>API 格式<a href="#api-格式"><span>#</span></a></h3><section><h4>御三家格式<a href="#御三家格式"><span>#</span></a></h4><p>不同厂商的 API 请求格式并不完全相同，但目前最常见的是 OpenAI 兼容格式、Gemini 格式和 Claude 格式。许多中转站会把其他模型包装成 OpenAI 兼容接口，具体字段仍应以服务商文档为准。</p><ul>
<li>OpenAI API 格式：目前 AI 界的“世界通用语言”（业内事实标准）。以 <code>/v1/chat/completions</code> 为典型路径，采用 <code>messages: [{"role": "user", "content": "..."}]</code> 结构。绝大多数第三方客户端（如 Cherry Studio）和中转站默认均采用此格式。</li>
<li>Gemini API 格式：Google 专有的通信协议，通常使用 <code>/v1beta/models/...:generateContent</code> 路径，消息体采用 <code>contents: [{"parts": [{"text": "..."}]}]</code> 结构，原生支持超大上下文与多模态文件直传。</li>
<li>Claude API 格式：Anthropic 官方的原生接口规范，以 <code>/v1/messages</code> 为核心，将 <code>system</code> 提示词独立于消息列表之外，原生支持 Tools/Artifacts 深度调用，格式严谨、吞吐控制优秀。</li>
</ul><p>国内绝大多数 AI 厂商都采用的是 OpenAI 格式。</p><p>三种格式的最小请求体分别如下，实际字段以服务商文档为准。</p><p>OpenAI 兼容格式（<code>POST /v1/chat/completions</code>）：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>{</span></div></div><div><div><div>2</div></div><div><span>  </span><span>"model"</span><span>: </span><span>"gpt-4o"</span><span>,</span></div></div><div><div><div>3</div></div><div><span>  </span><span>"messages"</span><span>: [</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>{ </span><span>"role"</span><span>: </span><span>"user"</span><span>, </span><span>"content"</span><span>: </span><span>"你好"</span><span> }</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>]</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>Gemini 格式（<code>POST /v1beta/models/gemini-2.5-pro:generateContent</code>）：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>{</span></div></div><div><div><div>2</div></div><div><span>  </span><span>"contents"</span><span>: [</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>{ </span><span>"parts"</span><span>: [{ </span><span>"text"</span><span>: </span><span>"你好"</span><span> }] }</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>]</span></div></div><div><div><div>5</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>Claude 格式（<code>POST /v1/messages</code>）：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>{</span></div></div><div><div><div>2</div></div><div><span>  </span><span>"model"</span><span>: </span><span>"claude-3-5-sonnet-latest"</span><span>,</span></div></div><div><div><div>3</div></div><div><span>  </span><span>"system"</span><span>: </span><span>"你是一个助手"</span><span>,</span></div></div><div><div><div>4</div></div><div><span>  </span><span>"messages"</span><span>: [</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>{ </span><span>"role"</span><span>: </span><span>"user"</span><span>, </span><span>"content"</span><span>: </span><span>"你好"</span><span> }</span></div></div><div><div><div>6</div></div><div><span><span>  </span></span><span>]</span></div></div><div><div><div>7</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>Agent 格式<a href="#agent-格式"><span>#</span></a></h4><ul>
<li>
<p>Response 格式：Response 格式是专门用于 Agent 的格式，它需要额外设置 response 的 base url。</p>
</li>
<li>
<p>Claude Agent 格式：Claude 本身就是和它自己的对话 API 兼容。</p>
</li>
</ul></section><section><h4>API 的获取方式<a href="#api-的获取方式"><span>#</span></a></h4><p>进入官方文档或者中转站文档，一般可以看到诸如这样的 <a href="https://api.terraria.ink/model/v1" target="_blank">https://api.terraria.ink/model/v1</a> 请求链接，该请求链接可以复制备用。</p><p>依据文档指引申请密钥，一般而言，密钥只会出现一次。这里拿 <a href="https://github.com/ACaiCat" target="_blank">ACaiCat</a> 做的奶龙 api（假 api）来举例，你会得到形如这样的串：</p><p>sk-4fG8kLmN2pQr5tUvW7xYzA3bCdEfGhIjKlMnOp</p><p>这就是你的 API 密钥。</p><p>需要注意，这个密钥不能泄露，否则可能会被他人滥用。</p></section></section></section>
<section><h2>桌面客户端日常使用、问答与娱乐<a href="#桌面客户端日常使用问答与娱乐"><span>#</span></a></h2><p>现在我们已经知道了 AI API 是什么，以及可以从哪获取，那么如何使用这些 API 呢？</p><p>一般而言有两类场景，一类是日常使用，问答和娱乐，另一类是干活。</p><p>下面先讲讲如何在日常使用中使用 AI API。</p><section><h3>使用 rikkahub<a href="#使用-rikkahub"><span>#</span></a></h3><p>rikkahub 是专门针对手机端的 AI 工具，可以让你在手机上使用 AI API。</p><ul>
<li>官网地址：<a href="https://rikka-ai.com/" target="_blank">https://rikka-ai.com/</a></li>
<li>GitHub 仓库：<a href="https://github.com/rikkahub/rikkahub" target="_blank">https://github.com/rikkahub/rikkahub</a></li>
</ul><p></p><figure><img alt="rikkahub 设置" loading="lazy" width="1040" height="1090" src="/_astro/rikkahub-set.DlPnx6mT_Z3nqbH.webp" /><figcaption>rikkahub 设置</figcaption></figure><p></p><p>图中只是示例使用了 response 模式。</p><p></p><figure><img alt="rikkahub 对话" loading="lazy" width="1079" height="1755" src="/_astro/rikkahub-use.DqU153-3_2pwKog.webp" /><figcaption>rikkahub 对话</figcaption></figure><p></p><p>通过默认助手，或者你配置的助手，和它进行聊天。</p><p>需要注意的是，如果模型不支持图的识别，你需要额外在 rikkahub 中配置图的识别。</p></section><section><h3>使用 kelivo<a href="#使用-kelivo"><span>#</span></a></h3><p>kelivo 是跨平台的 AI 工具，可以让你在手机、电脑上使用 AI。</p><ul>
<li>项目主页：<a href="https://github.com/chevey339/kelivo" target="_blank">https://github.com/chevey339/kelivo</a></li>
</ul><p>配置过程和 rikkahub 类似，在这里不再赘述。</p></section><section><h3>使用 cherry studio<a href="#使用-cherry-studio"><span>#</span></a></h3><p>cherry studio 专门给 PC 使用，尤其适用于知识库的检索。</p><ul>
<li>官方网站：<a href="https://www.cherryai.com/" target="_blank">https://www.cherryai.com/</a></li>
<li>GitHub 仓库：<a href="https://github.com/CherryHQ/cherry-studio" target="_blank">https://github.com/CherryHQ/cherry-studio</a></li>
</ul><p></p><figure><img alt="cherry studio 设置" loading="lazy" width="636" height="825" src="/_astro/cherry-set.C--IVKbv_Z7wvyK.webp" /><figcaption>cherry studio 设置</figcaption></figure><p></p><blockquote><p>你需要在设置，更多里添加 response 模式的 base url，一般而言，对话模型不需要开 response，直接在当前界面添加即可。</p></blockquote><p>此外，cherry studio 也支持 agent 模式。</p></section><section><h3>使用酒馆 SillyTavern<a href="#使用酒馆-sillytavern"><span>#</span></a></h3><ul>
<li>SillyTavern（酒馆）GitHub：<a href="https://github.com/SillyTavern/SillyTavern" target="_blank">https://github.com/SillyTavern/SillyTavern</a></li>
</ul><p>SillyTavern 的特点是可以导入角色卡，从而让 AI 扮演某个角色。</p><p>通常和 NSFW 场景相关，这里不进行展开。</p></section></section>
<section><h2>使用 AI IDE / API 编程<a href="#使用-ai-ide--api-编程"><span>#</span></a></h2><p>随便找一个略懂开发的学长 / 学姐，他们的开发界面一定是类似这样的：</p><p></p><figure><img src="https://img.attilio.cc/api/cfile/AgACAgUAAyEGAAMBBU78tQACB_pq01PSAAFtc9fWkcD7hBzUzY9P18EAAv0Zaxvga5hWicw5LsavJ90BAAMCAAN3AAM9BA" alt="本人的开发环境" /><figcaption>本人的开发环境</figcaption></figure><p></p><p>无论是使用什么 IDE，右侧的 CODEX / CLAUDE CODE 肯定是必不可少的。</p><p>为什么要配备这些工具呢？</p><p>答案很简单，可以方便编程。</p><p>通过这些工具，可以让 AI 自己调用自己，并且自己决定什么时候停止自己，直到它认为完成了某项任务为止。</p><p>关于使用 AI 进行编程，又分为两种，一种是绑定 IDE，另一种是基于 CLI 的。</p><section><h3>对话式问答编程<a href="#对话式问答编程"><span>#</span></a></h3><p>现阶段比较少，主要是学习的时候问答。</p><p>如果只是学习语法、定位报错或理解一段代码，直接在官方网页中提问通常已经够用。需要注意的是，应提供最小可复现代码、完整报错和运行环境，并自行验证 AI 给出的修改。</p></section><section><h3>专门的 AI IDE<a href="#专门的-ai-ide"><span>#</span></a></h3><p>事实上这类 IDE 在 25 年 09 月的时候还非常流行，但现在逐渐被淘汰了。</p><p>不如直接用 VS Code 的插件来使用 Agent。</p><p>AI IDE 唯一的好处就是可以使用内联建议，即 AI 在你写代码的时候给你建议。</p><p>初学者可能会沉迷于内联建议的使用，但是这对你在学习的时候帮助甚微，甚至在开发的时候会打断思路。</p><p>目前唯一好用的内敛建议只有 Cursor。</p><section><h4>trae<a href="#trae"><span>#</span></a></h4><p>字节跳动开发的 AI IDE，接入 seed 模型使用。</p><ul>
<li>官方网站：<a href="https://www.trae.ai/" target="_blank">https://www.trae.ai/</a></li>
<li>客户端下载：<a href="https://www.trae.ai/download" target="_blank">https://www.trae.ai/download</a></li>
</ul></section><section><h4>qodo<a href="#qodo"><span>#</span></a></h4><p>阿里云开发的 AI IDE，接入 qwen 模型使用。</p><ul>
<li>官方网站：<a href="https://www.qodo.ai/" target="_blank">https://www.qodo.ai/</a></li>
<li>VS Code 插件市场：<a href="https://marketplace.visualstudio.com/items?itemName=Codium.codium" target="_blank">https://marketplace.visualstudio.com/items?itemName=Codium.codium</a></li>
</ul></section><section><h4>copilot<a href="#copilot"><span>#</span></a></h4><p>copilot 是 GitHub 开发的 AI 编程助手，可以说它是 VS Code 的官方插件。</p><ul>
<li>官方主页：<a href="https://github.com/features/copilot" target="_blank">https://github.com/features/copilot</a></li>
<li>官方文档：<a href="https://docs.github.com/copilot" target="_blank">https://docs.github.com/copilot</a></li>
<li>VS Code 插件市场：<a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot" target="_blank">https://marketplace.visualstudio.com/items?itemName=GitHub.copilot</a></li>
</ul></section><section><h4>antigravity<a href="#antigravity"><span>#</span></a></h4><p>antigravity 是 Google 开发的 AI 编程助手，但是效果非常差。</p><p>甚至谷歌自己的模型在 antigravity 里发挥都不如 WEB 直接对话。</p><ul>
<li>Google AI Studio：<a href="https://aistudio.google.com/" target="_blank">https://aistudio.google.com/</a></li>
<li>Gemini Code Assist 官网：<a href="https://cloud.google.com/products/gemini/code-assist" target="_blank">https://cloud.google.com/products/gemini/code-assist</a></li>
</ul></section><section><h4>cursor<a href="#cursor"><span>#</span></a></h4><p>Cursor 被 Grok 收购，是比较推荐的 AI IDE，但其价格昂贵，依旧不如直接使用 VS Code 的插件。</p><ul>
<li>官方网站：<a href="https://www.cursor.com/" target="_blank">https://www.cursor.com/</a></li>
<li>客户端下载：<a href="https://www.cursor.com/download" target="_blank">https://www.cursor.com/download</a></li>
<li>官方文档：<a href="https://docs.cursor.com/" target="_blank">https://docs.cursor.com/</a></li>
</ul></section><section><h4>CodeBuddy &amp; WorkBuddy<a href="#codebuddy--workbuddy"><span>#</span></a></h4><p>如果说哪个 IDE 让我眼前一亮，那么一定是 CodeBuddy，推荐级别达到最高。</p><p>腾讯为数不多干的人事，确实厉害。</p><ul>
<li><a href="https://www.codebuddy.cn/home/" target="_blank">CodeBuddy</a></li>
</ul></section></section><section><h3>基于 cli 的官方 agent<a href="#基于-cli-的官方-agent"><span>#</span></a></h3><p>除了基于 IDE 的，现在更常见的是基于 cli 的 Agent，即直接通过终端操控你的工作区文件。</p><section><h4>ds + dsh<a href="#ds--dsh"><span>#</span></a></h4><ul>
<li>DeepSeek 开放平台：<a href="https://platform.deepseek.com/" target="_blank">https://platform.deepseek.com/</a></li>
<li>接口文档地址：<a href="https://api-docs.deepseek.com/" target="_blank">https://api-docs.deepseek.com/</a></li>
<li>DeepSeek Harness：<a href="https://github.com/deepseek-ai/deepseek-harness" target="_blank">https://github.com/deepseek-ai/deepseek-harness</a></li>
</ul><p>需要注意的是，dsh 的效果可能还不如用 ds 接入其他 agent 好。</p></section><section><h4>hunyuan4 + codebuddy<a href="#hunyuan4--codebuddy"><span>#</span></a></h4><ul>
<li>腾讯混元开放平台：<a href="https://console.cloud.tencent.com/hunyuan" target="_blank">https://console.cloud.tencent.com/hunyuan</a></li>
<li>腾讯 CodeBuddy 官网：<a href="https://codebuddy.tencent.com/" target="_blank">https://codebuddy.tencent.com/</a></li>
</ul></section><section><h4>kimi + kimicode<a href="#kimi--kimicode"><span>#</span></a></h4><ul>
<li>Moonshot 开放平台：<a href="https://platform.kimi.com/" target="_blank">https://platform.kimi.com/</a></li>
<li>接口文档地址：<a href="https://platform.kimi.com/docs/overview" target="_blank">https://platform.kimi.com/docs/overview</a></li>
<li>Kimi 官网入口：<a href="https://www.kimi.com/" target="_blank">https://www.kimi.com/</a></li>
<li>Kimi Code：<a href="https://github.com/MoonshotAI/kimi-code" target="_blank">https://github.com/MoonshotAI/kimi-code</a></li>
</ul></section><section><h4>codex<a href="#codex"><span>#</span></a></h4><ul>
<li>OpenAI 开发者平台：<a href="https://platform.openai.com/" target="_blank">https://platform.openai.com/</a></li>
<li>OpenAI 接口文档：<a href="https://platform.openai.com/docs" target="_blank">https://platform.openai.com/docs</a></li>
</ul></section><section><h4>gemini-cli<a href="#gemini-cli"><span>#</span></a></h4><ul>
<li>Gemini Cli:<a href="https://github.com/google-gemini/gemini-cli" target="_blank">https://github.com/google-gemini/gemini-cli</a></li>
</ul></section><section><h4>claude-code<a href="#claude-code"><span>#</span></a></h4><ul>
<li>Claude Code 官方文档：<a href="https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview" target="_blank">https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview</a></li>
<li>Claude Platform 控制台：<a href="https://platform.claude.com/" target="_blank">https://platform.claude.com/</a></li>
</ul></section><section><h4>grok + cursor<a href="#grok--cursor"><span>#</span></a></h4><p>实际上只用下载 cursor 即可，grok 有专门为 cursor 适配一套模型，编号为 composer。</p><ul>
<li>xAI 开放平台：<a href="https://console.x.ai/" target="_blank">https://console.x.ai/</a></li>
<li>Cursor 官方网站：<a href="https://www.cursor.com/" target="_blank">https://www.cursor.com/</a></li>
<li>Cursor 下载地址：<a href="https://www.cursor.com/download" target="_blank">https://www.cursor.com/download</a></li>
</ul></section><section><h4>VS Code + 插件<a href="#vs-code--插件"><span>#</span></a></h4><p>实际上上述的所有方式都不如 VS Code 直接装插件来的方便，在 VS Code 的应用商店下载对应 AI 的插件即可，例如在 VS Code 里下载 codex 插件。</p><ul>
<li>VS Code 官网：<a href="https://code.visualstudio.com/" target="_blank">https://code.visualstudio.com/</a></li>
</ul></section></section><section><h3>基于第三方 api 使用 agent<a href="#基于第三方-api-使用-agent"><span>#</span></a></h3><p>然而，正如前面所说的，官方的价格是昂贵的，所以可以使用第三方的中转站来使用 API。</p><p>但是由于格式的不兼容，所以会出现一些奇怪的问题。</p><p>可以使用以下工具来解决。</p><section><h4>使用 cc switch<a href="#使用-cc-switch"><span>#</span></a></h4><p>如果需要在 Claude Code、Codex、OpenCode 等 CLI Agent 之间切换，可以使用 CC Switch 统一管理不同的供应商、模型和配置。下载时建议只使用下面列出的官方渠道。</p><ul>
<li>官网地址：<a href="https://ccswitch.io/" target="_blank">https://ccswitch.io/</a></li>
<li>GitHub 仓库：<a href="https://github.com/farion1231/cc-switch" target="_blank">https://github.com/farion1231/cc-switch</a></li>
</ul></section><section><h4>使用 opencode<a href="#使用-opencode"><span>#</span></a></h4><ul>
<li>官网地址：<a href="https://opencode.ai/" target="_blank">https://opencode.ai/</a></li>
<li>GitHub 仓库：<a href="https://github.com/anomalyco/opencode" target="_blank">https://github.com/anomalyco/opencode</a></li>
</ul></section></section></section>
<section><h2>AI 不是万能的<a href="#ai-不是万能的"><span>#</span></a></h2><p>诚然，AI 的编程能力已经非常强大了，但是 AI 对架构的理解远不如人类深刻。</p><p>AI 不是万能的，时刻保持警惕，不要让 AI 代替思考。</p></section>
<section><h2>总结<a href="#总结"><span>#</span></a></h2><p>如果你是为了打比赛，干工作 / 科研中的脏活，那么我全权支持你大量的使用 AI，因为这些对你自己的提升有限。</p><p>然而，对于学习以及提升自我而言，古法编程是必要的。</p><p>无论如何，AI 只是工具。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/npee/ds/</id>
      <title type="text">考研冲刺前的总结 —— 数据结构</title>
      <published>2026-09-01T00:00:00.000Z</published>
      <updated>2026-09-01T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/npee/ds/"/>
      <summary type="text">考研冲刺前的总结 —— 数据结构</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>数据结构应该是相对来说比较轻松的一门了，毕竟有计算机基础。但是还是有比较多的小细节问题，以及一些其他需要注意的问题。</p></section>
<section><h2>第 1 章 - 绪论<a href="#第-1-章---绪论"><span>#</span></a></h2><section><h3>考纲 - 绪论<a href="#考纲---绪论"><span>#</span></a></h3><ul>
<li>数据结构的基本概念</li>
<li>算法的基本概念</li>
<li>算法的时间复杂度和空间复杂度</li>
</ul></section><section><h3>数据结构的基本概念<a href="#数据结构的基本概念"><span>#</span></a></h3><p>首先辨析几个概念：数据，数据项，数据元素，数据对象，数据类型，数据结构。</p><p>数据是信息的载体，数据元素是数据的基本单位，数据元素由数据项组成。</p><p>例如一个喵娘结构体：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>typedef</span><span> </span><span>struct</span><span> {</span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> id;</span><span> // 数据项</span></div></div><div><div><div>3</div></div><div><span>    </span><span>char</span><span> </span><span>name</span><span>[</span><span>20</span><span>];</span><span> // 数据项</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> age;</span><span> // 数据项</span></div></div><div><div><div>5</div></div><div><span>} CatGirl;</span><span> // 数据元素</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>数据对象是具有相同性质数据元素的集合，例如：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>CatGirl </span><span>catGirls</span><span>[</span><span>100</span><span>];</span><span> // 数据对象</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>数据类型指的是一个值的集合以及定义在此集合上的操作的总称。</p><p>而数据结构，是相互之间存在的一种或者多种的关系，必须存在逻辑结构，存储结构以及数据的运算。</p><p>算法的设计取决于逻辑结构，算法的实现取决于存储结构。（例如简单选择排序）</p></section><section><h3>数据结构三要素<a href="#数据结构三要素"><span>#</span></a></h3><section><h4>逻辑结构<a href="#逻辑结构"><span>#</span></a></h4><p>线性结构：线性表，栈，队列，串，数组，这其中很多都是相互包含的关系，不可混淆对应的概念。</p><p>非线性结构：集合，树，图。</p></section><section><h4>存储结构<a href="#存储结构"><span>#</span></a></h4><p>顺序存储：顺序表，顺序队列，顺序栈。</p><p>链式存储：链表，链队列，链栈。</p><p>索引存储：在存储元素的同时建立附加的索引表，索引项一般存关键字和地址。</p><p>散列存储：根据关键字直接算出存储地址，散列表就是这种。</p></section><section><h4>数据运算<a href="#数据运算"><span>#</span></a></h4><p>定义与实现。</p></section></section><section><h3>算法的基本概念<a href="#算法的基本概念"><span>#</span></a></h3><p>算法具有五个基本特性：有穷性，确定性，可行性，输入，输出。</p><p>算法设计的要求：正确性，可读性，健壮性，高效率与低存储量需求。</p><p>算法效率的度量：时间复杂度，空间复杂度。</p></section><section><h3>算法的时间复杂度<a href="#算法的时间复杂度"><span>#</span></a></h3><p>时间复杂度是指算法执行时间与问题规模之间的关系，需要辨析。</p><p>算法的时间复杂度并不代表问题规模。例如求邻接矩阵的出度和入度，时间复杂度为 <span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span>，但问题规模为 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>。</p><p>空间复杂度是指算法执行空间与问题规模之间的关系。</p><p>简单的算时间复杂度和空间复杂度就不写了，主要要注意如何计算难的，例如：</p><div><figure><figcaption><span>2022 真题</span></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> sum </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>2</div></div><div><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>1</span><span>; i </span><span>&lt;</span><span> n; i </span><span>*=</span><span> </span><span>2</span><span>){</span></div></div><div><div><div>3</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> j </span><span>=</span><span> </span><span>0</span><span>; j </span><span>&lt;</span><span> i; j</span><span>++</span><span>){</span></div></div><div><div><div>4</div></div><div><span><span>        </span></span><span>sum</span><span>++</span><span>;</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>执行时间为 <span><span>1+2+4+8+⋯+2t1+2+4+8+\cdots+2^t</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>4</span><span></span><span>+</span><span></span></span><span><span></span><span>8</span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>t</span></span></span></span></span></span></span></span></span></span></span>，其中 <span><span>2t&lt;n2^t&lt;n</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>t</span></span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>n</span></span></span></span>。由等比数列求和公式可得
<span><span>∑i=0t2i=2t+1−1&lt;2n\sum_{i=0}^{t}2^i=2^{t+1}-1&lt;2n</span><span><span><span></span><span><span>∑</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>0</span></span></span></span><span><span></span><span><span><span>t</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>t</span><span>+</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>2</span><span>n</span></span></span></span>，所以时间复杂度为 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>。</p><div><figure><figcaption><span>2025 真题</span></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>2</div></div><div><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>1</span><span>; i</span><span>*</span><span>i </span><span>&lt;=</span><span>n; i</span><span>++</span><span>){</span></div></div><div><div><div>3</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> j </span><span>=</span><span> </span><span>1</span><span>;j</span><span>&lt;=</span><span>i;j</span><span>++</span><span>){</span></div></div><div><div><div>4</div></div><div><span><span>        </span></span><span>count</span><span>++</span><span>;</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>显然，执行时间为 <span><span>1+2+3+⋯+t1+2+3+\cdots+t</span><span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>2</span><span></span><span>+</span><span></span></span><span><span></span><span>3</span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span>t</span></span></span></span>，其中 <span><span>t2≤nt^2\le n</span><span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>≤</span><span></span></span><span><span></span><span>n</span></span></span></span>。由数列求和公式可得
<span><span>∑i=1ti=t(t+1)2\sum_{i=1}^{t}i=\frac{t(t+1)}{2}</span><span><span><span></span><span><span>∑</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span><span>t</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>i</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>t</span><span>(</span><span>t</span><span>+</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。由于 <span><span>t=⌊n⌋t=\lfloor\sqrt{n}\rfloor</span><span><span><span></span><span>t</span><span></span><span>=</span><span></span></span><span><span></span><span>⌊</span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span>⌋</span></span></span></span>，所以时间复杂度为 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>。</p></section></section>
<section><h2>第 2 章 - 线性表<a href="#第-2-章---线性表"><span>#</span></a></h2><section><h3>考纲 - 线性表<a href="#考纲---线性表"><span>#</span></a></h3><ul>
<li>线性表的基本概念</li>
<li>线性表的实现</li>
<li>顺序存储；链式存储</li>
<li>线性表的应用</li>
</ul></section><section><h3>线性表的定义与基本操作<a href="#线性表的定义与基本操作"><span>#</span></a></h3><p>定义指的是逻辑上的，无须考虑存储方式。</p><p>对于一个数据结构，需要考虑其操作方式，最简单的方式是：增、删、改、查、创、销。</p><p>而对于代码的具体实现，则需要考虑存储方式，例如顺序存储和链式存储。</p></section><section><h3>线性表的顺序存储<a href="#线性表的顺序存储"><span>#</span></a></h3><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>#define</span><span> </span><span>MAXSIZE</span><span> </span><span>100</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>/* 顺序表的结构体定义 */</span></div></div><div><div><div>4</div></div><div><span>typedef</span><span> </span><span>struct</span><span> ArrayList {</span></div></div><div><div><div>5</div></div><div><span>    </span><span>int</span><span> </span><span>data</span><span>[MAXSIZE];</span></div></div><div><div><div>6</div></div><div><span>    </span><span>int</span><span> length;</span></div></div><div><div><div>7</div></div><div><span>} ArrayList;</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>/* 初始化顺序表 */</span></div></div><div><div><div>10</div></div><div><span>bool</span><span> </span><span>InitList</span><span><span>(</span><span>ArrayList </span></span><span>*</span><span><span>L</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>length</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>12</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>13</div></div><div><span>}</span></div></div><div><div><div>14</div></div><div>
</div></div><div><div><div>15</div></div><div><span>/* 销毁顺序表 */</span></div></div><div><div><div>16</div></div><div><span>bool</span><span> </span><span>DestroyList</span><span><span>(</span><span>ArrayList </span></span><span>*</span><span><span>L</span><span>) {</span></span></div></div><div><div><div>17</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>length</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>18</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>19</div></div><div><span>}</span></div></div><div><div><div>20</div></div><div>
</div></div><div><div><div>21</div></div><div><span>/* 清空顺序表 */</span></div></div><div><div><div>22</div></div><div><span>bool</span><span> </span><span>ClearList</span><span><span>(</span><span>ArrayList </span></span><span>*</span><span><span>L</span><span>) {</span></span></div></div><div><div><div>23</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>length</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>24</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>25</div></div><div><span>}</span></div></div><div><div><div>26</div></div><div>
</div></div><div><div><div>27</div></div><div><span>/* 插入元素 */</span></div></div><div><div><div>28</div></div><div><span>bool</span><span> </span><span>ListInsert</span><span><span>(</span><span>ArrayList </span></span><span>*</span><span><span>L</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>i</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>e</span><span>) {</span></span></div></div><div><div><div>29</div></div><div><span>    </span><span>if</span><span>(i </span><span>&lt;</span><span> </span><span>1</span><span> </span><span>||</span><span> i </span><span>&gt;</span><span> </span><span>L</span><span>-&gt;</span><span>length</span><span> </span><span>+</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>30</div></div><div><span>    </span><span>if</span><span>(</span><span>L</span><span>-&gt;</span><span>length</span><span> </span><span>&gt;=</span><span> MAXSIZE) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>31</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> j </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>length</span><span>; j </span><span>&gt;=</span><span> i; j</span><span>--</span><span>) {</span></div></div><div><div><div>32</div></div><div><span>        </span><span>L</span><span>-&gt;</span><span>data</span><span>[j] </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>data</span><span>[j </span><span>-</span><span> </span><span>1</span><span>];</span></div></div><div><div><div>33</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>34</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>data</span><span>[i </span><span>-</span><span> </span><span>1</span><span>] </span><span>=</span><span> e;</span></div></div><div><div><div>35</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>length</span><span>++</span><span>;</span></div></div><div><div><div>36</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>37</div></div><div><span>}</span></div></div><div><div><div>38</div></div><div>
</div></div><div><div><div>39</div></div><div><span>/* 删除元素 */</span></div></div><div><div><div>40</div></div><div><span>bool</span><span> </span><span>ListDelete</span><span><span>(</span><span>ArrayList </span></span><span>*</span><span><span>L</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>i</span><span>,</span><span> </span></span><span>int</span><span> </span><span>*</span><span><span>e</span><span>) {</span></span></div></div><div><div><div>41</div></div><div><span>    </span><span>if</span><span>(i </span><span>&lt;</span><span> </span><span>1</span><span> </span><span>||</span><span> i </span><span>&gt;</span><span> </span><span>L</span><span>-&gt;</span><span>length</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>42</div></div><div><span>    </span><span>*</span><span>e </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>data</span><span>[i </span><span>-</span><span> </span><span>1</span><span>];</span></div></div><div><div><div>43</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> j </span><span>=</span><span> i; j </span><span>&lt;</span><span> </span><span>L</span><span>-&gt;</span><span>length</span><span>; j</span><span>++</span><span>) {</span></div></div><div><div><div>44</div></div><div><span>        </span><span>L</span><span>-&gt;</span><span>data</span><span>[j </span><span>-</span><span> </span><span>1</span><span>] </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>data</span><span>[j];</span></div></div><div><div><div>45</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>46</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>length</span><span>--</span><span>;</span></div></div><div><div><div>47</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>48</div></div><div><span>}</span></div></div><div><div><div>49</div></div><div>
</div></div><div><div><div>50</div></div><div><span>/* 获取元素 */</span></div></div><div><div><div>51</div></div><div><span>bool</span><span> </span><span>GetElem</span><span>(</span><span>const</span><span> ArrayList </span><span>*</span><span><span>L</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>i</span><span>,</span><span> </span></span><span>int</span><span> </span><span>*</span><span><span>e</span><span>) {</span></span></div></div><div><div><div>52</div></div><div><span>    </span><span>if</span><span>(i </span><span>&lt;</span><span> </span><span>1</span><span> </span><span>||</span><span> i </span><span>&gt;</span><span> </span><span>L</span><span>-&gt;</span><span>length</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>53</div></div><div><span>    </span><span>*</span><span>e </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>data</span><span>[i </span><span>-</span><span> </span><span>1</span><span>];</span></div></div><div><div><div>54</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>55</div></div><div><span>}</span></div></div><div><div><div>56</div></div><div>
</div></div><div><div><div>57</div></div><div><span>/* 查找元素 */</span></div></div><div><div><div>58</div></div><div><span>int</span><span> </span><span>LocateElem</span><span>(</span><span>const</span><span> ArrayList </span><span>*</span><span><span>L</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>e</span><span>) {</span></span></div></div><div><div><div>59</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> </span><span>L</span><span>-&gt;</span><span>length</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>60</div></div><div><span>        </span><span>if</span><span>(</span><span>L</span><span>-&gt;</span><span>data</span><span>[i] </span><span>==</span><span> e) </span><span>return</span><span> i </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>61</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>62</div></div><div><span>    </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>63</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>上述思路都非常清晰了其实，可以略过了。</p></section><section><h3>线性表的链式存储<a href="#线性表的链式存储"><span>#</span></a></h3><section><h4>带头节点的单链表<a href="#带头节点的单链表"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>/* 带头节点的单链表的结构体定义 */</span></div></div><div><div><div>2</div></div><div><span>struct</span><span> </span><span>LNode</span><span> {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>struct</span><span> </span><span>LNode</span><span> </span><span>*</span><span>next</span><span>;</span></div></div><div><div><div>5</div></div><div><span>};</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>using</span><span> </span><span>LinkList</span><span> </span><span>=</span><span> </span><span>LNode</span><span> </span><span>*</span><span>;</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>/* 初始化带头节点的单链表 */</span></div></div><div><div><div>10</div></div><div><span>bool</span><span> </span><span>InitList</span><span>(</span><span>LinkList</span><span> </span><span>&amp;</span><span><span>L</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>L</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>LNode</span><span>{</span><span>0</span><span>, </span><span>nullptr</span><span>};</span></div></div><div><div><div>12</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>13</div></div><div><span>}</span></div></div><div><div><div>14</div></div><div>
</div></div><div><div><div>15</div></div><div><span>/* 销毁带头节点的单链表 */</span></div></div><div><div><div>16</div></div><div><span>bool</span><span> </span><span>DestroyList</span><span>(</span><span>LinkList</span><span> </span><span>&amp;</span><span><span>L</span><span>) {</span></span></div></div><div><div><div>17</div></div><div><span>    </span><span>while</span><span> (</span><span>L</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>) {</span></div></div><div><div><div>18</div></div><div><span>        </span><span>LNode</span><span> </span><span>*</span><span>next</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>19</div></div><div><span>        </span><span>delete</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>20</div></div><div><span>        </span><span>L</span><span> </span><span>=</span><span> </span><span>next</span><span>;</span></div></div><div><div><div>21</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>22</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div><div><div><div>24</div></div><div>
</div></div><div><div><div>25</div></div><div><span>/* 清空带头节点的单链表 */</span></div></div><div><div><div>26</div></div><div><span>bool</span><span> </span><span>ClearList</span><span>(</span><span>LinkList</span><span><span> </span><span>L</span><span>) {</span></span></div></div><div><div><div>27</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>28</div></div><div><span>    </span><span>while</span><span> (</span><span>L</span><span>-&gt;</span><span>next</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>) {</span></div></div><div><div><div>29</div></div><div><span>        </span><span>LNode</span><span> </span><span>*</span><span>node</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>30</div></div><div><span>        </span><span>L</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>node</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>31</div></div><div><span>        </span><span>delete</span><span> </span><span>node</span><span>;</span></div></div><div><div><div>32</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>33</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>34</div></div><div><span>}</span></div></div><div><div><div>35</div></div><div>
</div></div><div><div><div>36</div></div><div><span>/* 插入元素 */</span></div></div><div><div><div>37</div></div><div><span>bool</span><span> </span><span>ListInsert</span><span>(</span><span>LinkList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span><span> </span><span>e</span><span>) {</span></span></div></div><div><div><div>38</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>39</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>40</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>41</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>42</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>43</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>44</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>s</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>LNode</span><span>;</span></div></div><div><div><div>45</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>data</span><span> </span><span>=</span><span> </span><span>e</span><span>;</span></div></div><div><div><div>46</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>47</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>48</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>49</div></div><div><span>}</span></div></div><div><div><div>50</div></div><div>
</div></div><div><div><div>51</div></div><div><span>/* 删除元素 */</span></div></div><div><div><div>52</div></div><div><span>bool</span><span> </span><span>ListDelete</span><span>(</span><span>LinkList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span> </span><span>*</span><span><span>e</span><span>) {</span></span></div></div><div><div><div>53</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>e</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>54</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>55</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>56</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>57</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>58</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>59</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>q</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>60</div></div><div><span>    </span><span>if</span><span> (</span><span>q</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>61</div></div><div><span>    </span><span>*</span><span>e</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>data</span><span>;</span></div></div><div><div><div>62</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>63</div></div><div><span>    </span><span>delete</span><span> </span><span>q</span><span>;</span></div></div><div><div><div>64</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>65</div></div><div><span>}</span></div></div><div><div><div>66</div></div><div>
</div></div><div><div><div>67</div></div><div><span>/* 获取元素 */</span></div></div><div><div><div>68</div></div><div><span>bool</span><span> </span><span>GetElem</span><span>(</span><span>LinkList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span> </span><span>*</span><span><span>e</span><span>) {</span></span></div></div><div><div><div>69</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>e</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>70</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>71</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;=</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>72</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>73</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>74</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>75</div></div><div><span>    </span><span>*</span><span>e</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>data</span><span>;</span></div></div><div><div><div>76</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>77</div></div><div><span>}</span></div></div><div><div><div>78</div></div><div>
</div></div><div><div><div>79</div></div><div><span>/* 查找元素 */</span></div></div><div><div><div>80</div></div><div><span>int</span><span> </span><span>LocateElem</span><span>(</span><span>LinkList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>e</span><span>) {</span></span></div></div><div><div><div>81</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>82</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>83</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>i</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>p</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>; </span><span>i</span><span>++</span><span>) {</span></div></div><div><div><div>84</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span>-&gt;</span><span>data</span><span> </span><span>==</span><span> </span><span>e</span><span>) </span><span>return</span><span> </span><span>i</span><span>;</span></div></div><div><div><div>85</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>86</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>87</div></div><div><span>    </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>88</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>可以在操作系统中充当队列使用。</p></section><section><h4>带头结点的循环单链表<a href="#带头结点的循环单链表"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>/* 带头结点的循环单链表的结构体定义 */</span></div></div><div><div><div>2</div></div><div><span>struct</span><span> </span><span>LNode</span><span> {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>struct</span><span> </span><span>LNode</span><span> </span><span>*</span><span>next</span><span>;</span></div></div><div><div><div>5</div></div><div><span>};</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>using</span><span> </span><span>LinkList</span><span> </span><span>=</span><span> </span><span>LNode</span><span> </span><span>*</span><span>;</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>/* 头插法创建带头结点的循环单链表，可用于逆序 */</span></div></div><div><div><div>10</div></div><div><span>bool</span><span> </span><span>CreateList_H</span><span>(</span><span>LinkList</span><span> </span><span>&amp;</span><span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>L</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>LNode</span><span>{</span><span>0</span><span>, </span><span>nullptr</span><span>};</span></div></div><div><div><div>12</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>13</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>i</span><span> </span><span>=</span><span> </span><span>0</span><span>; </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>n</span><span>; </span><span>i</span><span>++</span><span>) {</span></div></div><div><div><div>14</div></div><div><span>        </span><span>LNode</span><span> </span><span>*</span><span>s</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>LNode</span><span>;</span></div></div><div><div><div>15</div></div><div><span>        </span><span>s</span><span>-&gt;</span><span>data</span><span> </span><span>=</span><span> </span><span>i</span><span>;</span></div></div><div><div><div>16</div></div><div><span>        </span><span>s</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>L</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>17</div></div><div><span>        </span><span>L</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>19</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>20</div></div><div><span>}</span></div></div><div><div><div>21</div></div><div>
</div></div><div><div><div>22</div></div><div><span>/* 尾插法创建带头结点的循环单链表，可用于正序 */</span></div></div><div><div><div>23</div></div><div><span>bool</span><span> </span><span>CreateList_R</span><span>(</span><span>LinkList</span><span> </span><span>&amp;</span><span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>24</div></div><div><span>    </span><span>L</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>LNode</span><span>{</span><span>0</span><span>, </span><span>nullptr</span><span>};</span></div></div><div><div><div>25</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>26</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>r</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>27</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>i</span><span> </span><span>=</span><span> </span><span>0</span><span>; </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>n</span><span>; </span><span>i</span><span>++</span><span>) {</span></div></div><div><div><div>28</div></div><div><span>        </span><span>LNode</span><span> </span><span>*</span><span>s</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>LNode</span><span>;</span></div></div><div><div><div>29</div></div><div><span>        </span><span>s</span><span>-&gt;</span><span>data</span><span> </span><span>=</span><span> </span><span>i</span><span>;</span></div></div><div><div><div>30</div></div><div><span>        </span><span>s</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>31</div></div><div><span>        </span><span>r</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>32</div></div><div><span>        </span><span>r</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>33</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>34</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>35</div></div><div><span>}</span></div></div><div><div><div>36</div></div><div>
</div></div><div><div><div>37</div></div><div><span>/* 插入元素 */</span></div></div><div><div><div>38</div></div><div><span>bool</span><span> </span><span>ListInsert</span><span>(</span><span>LinkList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span><span> </span><span>e</span><span>) {</span></span></div></div><div><div><div>39</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>40</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>41</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>42</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>43</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span> </span><span>==</span><span> </span><span>L</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>44</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>45</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>s</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>LNode</span><span>;</span></div></div><div><div><div>46</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>data</span><span> </span><span>=</span><span> </span><span>e</span><span>;</span></div></div><div><div><div>47</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>48</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>49</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>50</div></div><div><span>}</span></div></div><div><div><div>51</div></div><div>
</div></div><div><div><div>52</div></div><div><span>/* 删除元素 */</span></div></div><div><div><div>53</div></div><div><span>bool</span><span> </span><span>ListDelete</span><span>(</span><span>LinkList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span> </span><span>*</span><span><span>e</span><span>) {</span></span></div></div><div><div><div>54</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>e</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>55</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>56</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>57</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>58</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span> </span><span>==</span><span> </span><span>L</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>59</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>60</div></div><div><span>    </span><span>LNode</span><span> </span><span>*</span><span>q</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>61</div></div><div><span>    </span><span>if</span><span> (</span><span>q</span><span> </span><span>==</span><span> </span><span>L</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>62</div></div><div><span>    </span><span>*</span><span>e</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>data</span><span>;</span></div></div><div><div><div>63</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>64</div></div><div><span>    </span><span>delete</span><span> </span><span>q</span><span>;</span></div></div><div><div><div>65</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>66</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section></section><section><h3>带头节点的双链表<a href="#带头节点的双链表"><span>#</span></a></h3><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>/* 双链表的结构体定义 */</span></div></div><div><div><div>2</div></div><div><span>struct</span><span> </span><span>DNode</span><span> {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>struct</span><span> </span><span>DNode</span><span> </span><span>*</span><span>next</span><span>;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>struct</span><span> </span><span>DNode</span><span> </span><span>*</span><span>prev</span><span>;</span></div></div><div><div><div>6</div></div><div><span>};</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>using</span><span> </span><span>DList</span><span> </span><span>=</span><span> </span><span>DNode</span><span> </span><span>*</span><span>;</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>/* 插入元素 */</span></div></div><div><div><div>11</div></div><div><span>bool</span><span> </span><span>ListInsert</span><span>(</span><span>DList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span><span> </span><span>e</span><span>) {</span></span></div></div><div><div><div>12</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>13</div></div><div><span>    </span><span>DNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>14</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>15</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>16</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>17</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>18</div></div><div><span>    </span><span>DNode</span><span> </span><span>*</span><span>s</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>DNode</span><span>;</span></div></div><div><div><div>19</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>data</span><span> </span><span>=</span><span> </span><span>e</span><span>;</span></div></div><div><div><div>20</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>21</div></div><div><span>    </span><span>if</span><span> (</span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>) </span><span>p</span><span>-&gt;</span><span>next</span><span>-&gt;</span><span>prev</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>22</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>23</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>prev</span><span> </span><span>=</span><span> </span><span>p</span><span>;</span></div></div><div><div><div>24</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>25</div></div><div><span>}</span></div></div><div><div><div>26</div></div><div>
</div></div><div><div><div>27</div></div><div><span>/* 删除元素 */</span></div></div><div><div><div>28</div></div><div><span>bool</span><span> </span><span>ListDelete</span><span>(</span><span>DList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span> </span><span>*</span><span><span>e</span><span>) {</span></span></div></div><div><div><div>29</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>e</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>30</div></div><div><span>    </span><span>DNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>31</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>32</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>33</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>34</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>35</div></div><div><span>    </span><span>DNode</span><span> </span><span>*</span><span>q</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>36</div></div><div><span>    </span><span>if</span><span> (</span><span>q</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>37</div></div><div><span>    </span><span>*</span><span>e</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>data</span><span>;</span></div></div><div><div><div>38</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>39</div></div><div><span>    </span><span>if</span><span> (</span><span>q</span><span>-&gt;</span><span>next</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>) </span><span>q</span><span>-&gt;</span><span>next</span><span>-&gt;</span><span>prev</span><span> </span><span>=</span><span> </span><span>p</span><span>;</span></div></div><div><div><div>40</div></div><div><span>    </span><span>delete</span><span> </span><span>q</span><span>;</span></div></div><div><div><div>41</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>42</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h3>带头节点的循环双链表<a href="#带头节点的循环双链表"><span>#</span></a></h3><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>/* 带头节点的循环双链表的结构体定义 */</span></div></div><div><div><div>2</div></div><div><span>struct</span><span> </span><span>DNode</span><span> {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>struct</span><span> </span><span>DNode</span><span> </span><span>*</span><span>next</span><span>;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>struct</span><span> </span><span>DNode</span><span> </span><span>*</span><span>prev</span><span>;</span></div></div><div><div><div>6</div></div><div><span>};</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>/* 初始化带头节点的循环双链表 */</span></div></div><div><div><div>9</div></div><div><span>bool</span><span> </span><span>InitList</span><span>(</span><span>DList</span><span> </span><span>&amp;</span><span><span>L</span><span>) {</span></span></div></div><div><div><div>10</div></div><div><span>    </span><span>L</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>DNode</span><span>;</span></div></div><div><div><div>11</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>12</div></div><div><span>    </span><span>L</span><span>-&gt;</span><span>prev</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>13</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>14</div></div><div><span>}</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>/* 插入元素 */</span></div></div><div><div><div>17</div></div><div><span>bool</span><span> </span><span>ListInsert</span><span>(</span><span>DList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span><span> </span><span>e</span><span>) {</span></span></div></div><div><div><div>18</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>19</div></div><div><span>    </span><span>DNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>20</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>21</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>22</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span> </span><span>==</span><span> </span><span>L</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>23</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>24</div></div><div><span>    </span><span>DNode</span><span> </span><span>*</span><span>s</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>DNode</span><span>;</span></div></div><div><div><div>25</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>data</span><span> </span><span>=</span><span> </span><span>e</span><span>;</span></div></div><div><div><div>26</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>27</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span>-&gt;</span><span>prev</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>28</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>s</span><span>;</span></div></div><div><div><div>29</div></div><div><span>    </span><span>s</span><span>-&gt;</span><span>prev</span><span> </span><span>=</span><span> </span><span>p</span><span>;</span></div></div><div><div><div>30</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>31</div></div><div><span>}</span></div></div><div><div><div>32</div></div><div>
</div></div><div><div><div>33</div></div><div><span>/* 删除元素 */</span></div></div><div><div><div>34</div></div><div><span>bool</span><span> </span><span>ListDelete</span><span>(</span><span>DList</span><span><span> </span><span>L</span><span>, </span></span><span>int</span><span><span> </span><span>i</span><span>, </span></span><span>int</span><span> </span><span>*</span><span><span>e</span><span>) {</span></span></div></div><div><div><div>35</div></div><div><span>    </span><span>if</span><span> (</span><span>L</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>e</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>36</div></div><div><span>    </span><span>DNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>L</span><span>;</span></div></div><div><div><div>37</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> </span><span>j</span><span> </span><span>=</span><span> </span><span>1</span><span>; </span><span>j</span><span> </span><span>&lt;</span><span> </span><span>i</span><span>; </span><span>j</span><span>++</span><span>) {</span></div></div><div><div><div>38</div></div><div><span>        </span><span>p</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>39</div></div><div><span>        </span><span>if</span><span> (</span><span>p</span><span> </span><span>==</span><span> </span><span>L</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>40</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>41</div></div><div><span>    </span><span>DNode</span><span> </span><span>*</span><span>q</span><span> </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>42</div></div><div><span>    </span><span>if</span><span> (</span><span>q</span><span> </span><span>==</span><span> </span><span>L</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>43</div></div><div><span>    </span><span>*</span><span>e</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>data</span><span>;</span></div></div><div><div><div>44</div></div><div><span>    </span><span>q</span><span>-&gt;</span><span>next</span><span>-&gt;</span><span>prev</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>prev</span><span>;</span></div></div><div><div><div>45</div></div><div><span>    </span><span>q</span><span>-&gt;</span><span>prev</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>q</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>46</div></div><div><span>    </span><span>delete</span><span> </span><span>q</span><span>;</span></div></div><div><div><div>47</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>48</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h3>静态链表<a href="#静态链表"><span>#</span></a></h3><p>不需要非常掌握，不过操作系统中，显式链接法采用的是静态链表。</p><p>静态链表用数组模拟链表：每个结点存数据和 next 下标，0 号位置当头部，next 为 -1 表示结束。</p><p>插入删除只改下标，不移动元素，所以和动态链表一样是 <span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span>；但空间要预先分配好，不能动态增长，容量固定。</p><p>需要注意，静态链表的“指针”是数组下标而不是地址，所以 0 号结点通常空着或者当哨兵，真正的数据从 1 号开始。</p></section><section><h3>性能比较<a href="#性能比较"><span>#</span></a></h3>

<table><thead><tr><th>操作</th><th>顺序表</th><th>链表</th></tr></thead><tbody><tr><td>插入</td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td></tr><tr><td>删除</td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td></tr><tr><td>查找</td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td></tr><tr><td>访问</td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td></tr></tbody></table><p>注意，这里链表的插入和删除的前提是设置了特定的指针。</p></section></section>
<section><h2>第 3 章 - 栈与队列<a href="#第-3-章---栈与队列"><span>#</span></a></h2><section><h3>考纲 - 栈与队列<a href="#考纲---栈与队列"><span>#</span></a></h3><ul>
<li>栈与队列的基本概念</li>
<li>栈和队列的顺序存储结构</li>
<li>栈和队列的链式存储结构</li>
<li>多维数组存储</li>
<li>特殊矩阵的压缩存储</li>
<li>栈、队列和数组的应用</li>
</ul></section><section><h3>栈与队列的基本概念<a href="#栈与队列的基本概念"><span>#</span></a></h3><p>栈是先进后出，队列是先进先出。</p></section><section><h3>栈的顺序存储<a href="#栈的顺序存储"><span>#</span></a></h3><p>需要注意对于栈顶指针，初始化时，可以采用均指向第一个元素的方法，然后栈顶指针回退一格，就是初始状态。</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 无须封装，直接采用一个固定长度的数组进行模拟</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>stack</span><span>[</span><span>MAXSIZE</span><span>];</span></div></div><div><div><div>3</div></div><div><span>int</span><span> </span><span>top</span><span> </span><span>=</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>// 入栈</span></div></div><div><div><div>6</div></div><div><span>bool</span><span> </span><span>Push</span><span>(</span><span>int</span><span><span> </span><span>x</span><span>) {</span></span></div></div><div><div><div>7</div></div><div><span>    </span><span>if</span><span>(</span><span>top</span><span> </span><span>==</span><span> </span><span>MAXSIZE</span><span>-</span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>8</div></div><div><span>    </span><span>stack</span><span>[</span><span>++</span><span>top</span><span>] </span><span>=</span><span> </span><span>x</span><span>;</span></div></div><div><div><div>9</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>10</div></div><div><span>}</span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span>// 出栈</span></div></div><div><div><div>13</div></div><div><span>bool</span><span> </span><span>Pop</span><span>(</span><span>int</span><span> </span><span>*</span><span><span>x</span><span>) {</span></span></div></div><div><div><div>14</div></div><div><span>    </span><span>if</span><span>(</span><span>top</span><span> </span><span>==</span><span> </span><span>-</span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>15</div></div><div><span>    </span><span>*</span><span>x</span><span> </span><span>=</span><span> </span><span>stack</span><span>[</span><span>top</span><span>--</span><span>];</span></div></div><div><div><div>16</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>17</div></div><div><span>}</span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span>// 获取栈顶元素</span></div></div><div><div><div>20</div></div><div><span>bool</span><span> </span><span>GetTop</span><span>(</span><span>int</span><span> </span><span>*</span><span><span>x</span><span>) {</span></span></div></div><div><div><div>21</div></div><div><span>    </span><span>if</span><span>(</span><span>top</span><span> </span><span>==</span><span> </span><span>-</span><span>1</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>22</div></div><div><span>    </span><span>*</span><span>x</span><span> </span><span>=</span><span> </span><span>stack</span><span>[</span><span>top</span><span>];</span></div></div><div><div><div>23</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>24</div></div><div><span>}</span></div></div><div><div><div>25</div></div><div>
</div></div><div><div><div>26</div></div><div><span>// 判断栈是否为空</span></div></div><div><div><div>27</div></div><div><span>bool</span><span> </span><span>IsEmpty</span><span>() {</span></div></div><div><div><div>28</div></div><div><span>    </span><span>return</span><span> </span><span>top</span><span> </span><span>==</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>29</div></div><div><span>}</span></div></div><div><div><div>30</div></div><div>
</div></div><div><div><div>31</div></div><div><span>// 判断栈是否满</span></div></div><div><div><div>32</div></div><div><span>bool</span><span> </span><span>IsFull</span><span>() {</span></div></div><div><div><div>33</div></div><div><span>    </span><span>return</span><span> </span><span>top</span><span> </span><span>==</span><span> </span><span>MAXSIZE</span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>34</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><section><h4>共享栈<a href="#共享栈"><span>#</span></a></h4><p>两个栈共享一段数组，栈底分别放在两端，栈顶向中间生长，栈满的条件是两个栈顶指针相邻，即 <code>top1 + 1 == top2</code>。</p><p>好处是空间利用率高，只有在整个数组都占满时才溢出；缺点是只能在两端操作，应用场景有限。</p></section></section><section><h3>栈的链式存储<a href="#栈的链式存储"><span>#</span></a></h3><p>采用带头结点的单链表，头插法模拟栈。</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>/* 栈的链式存储的结构体定义 */</span></div></div><div><div><div>2</div></div><div><span>struct</span><span> </span><span>StackNode</span><span> {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>data</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>struct</span><span> </span><span>StackNode</span><span> </span><span>*</span><span>next</span><span>;</span></div></div><div><div><div>5</div></div><div><span>};</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>using</span><span> </span><span>Stack</span><span> </span><span>=</span><span> </span><span>StackNode</span><span> </span><span>*</span><span>;</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>/* 初始化栈 */</span></div></div><div><div><div>10</div></div><div><span>bool</span><span> </span><span>InitStack</span><span>(</span><span>Stack</span><span> </span><span>&amp;</span><span><span>S</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>S</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>StackNode</span><span>{</span><span>0</span><span>, </span><span>nullptr</span><span>};</span></div></div><div><div><div>12</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>13</div></div><div><span>}</span></div></div><div><div><div>14</div></div><div>
</div></div><div><div><div>15</div></div><div><span>/* 入栈 */</span></div></div><div><div><div>16</div></div><div><span>bool</span><span> </span><span>Push</span><span>(</span><span>Stack</span><span><span> </span><span>S</span><span>, </span></span><span>int</span><span><span> </span><span>x</span><span>) {</span></span></div></div><div><div><div>17</div></div><div><span>    </span><span>if</span><span> (</span><span>S</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>18</div></div><div><span>    </span><span>StackNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>StackNode</span><span>;</span></div></div><div><div><div>19</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>data</span><span> </span><span>=</span><span> </span><span>x</span><span>;</span></div></div><div><div><div>20</div></div><div><span>    </span><span>p</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>S</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>21</div></div><div><span>    </span><span>S</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>p</span><span>;</span></div></div><div><div><div>22</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div><div><div><div>24</div></div><div>
</div></div><div><div><div>25</div></div><div><span>/* 出栈 */</span></div></div><div><div><div>26</div></div><div><span>bool</span><span> </span><span>Pop</span><span>(</span><span>Stack</span><span><span> </span><span>S</span><span>, </span></span><span>int</span><span> </span><span>*</span><span><span>x</span><span>) {</span></span></div></div><div><div><div>27</div></div><div><span>    </span><span>if</span><span> (</span><span>S</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>x</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>S</span><span>-&gt;</span><span>next</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>28</div></div><div><span>    </span><span>*</span><span>x</span><span> </span><span>=</span><span> </span><span>S</span><span>-&gt;</span><span>next</span><span>-&gt;</span><span>data</span><span>;</span></div></div><div><div><div>29</div></div><div><span>    </span><span>StackNode</span><span> </span><span>*</span><span>p</span><span> </span><span>=</span><span> </span><span>S</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>30</div></div><div><span>    </span><span>S</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>S</span><span>-&gt;</span><span>next</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>31</div></div><div><span>    </span><span>delete</span><span> </span><span>p</span><span>;</span></div></div><div><div><div>32</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>33</div></div><div><span>}</span></div></div><div><div><div>34</div></div><div>
</div></div><div><div><div>35</div></div><div><span>/* 获取栈顶元素 */</span></div></div><div><div><div>36</div></div><div><span>bool</span><span> </span><span>GetTop</span><span>(</span><span>Stack</span><span><span> </span><span>S</span><span>, </span></span><span>int</span><span> </span><span>*</span><span><span>x</span><span>) {</span></span></div></div><div><div><div>37</div></div><div><span>    </span><span>if</span><span> (</span><span>S</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>x</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>S</span><span>-&gt;</span><span>next</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>38</div></div><div><span>    </span><span>*</span><span>x</span><span> </span><span>=</span><span> </span><span>S</span><span>-&gt;</span><span>next</span><span>-&gt;</span><span>data</span><span>;</span></div></div><div><div><div>39</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>40</div></div><div><span>}</span></div></div><div><div><div>41</div></div><div>
</div></div><div><div><div>42</div></div><div><span>/* 判断栈是否为空 */</span></div></div><div><div><div>43</div></div><div><span>bool</span><span> </span><span>IsEmpty</span><span>(</span><span>Stack</span><span><span> </span><span>S</span><span>) {</span></span></div></div><div><div><div>44</div></div><div><span>    </span><span>return</span><span> </span><span>S</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>S</span><span>-&gt;</span><span>next</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>;</span></div></div><div><div><div>45</div></div><div><span>}</span></div></div><div><div><div>46</div></div><div>
</div></div><div><div><div>47</div></div><div><span>/* 判断栈是否满 */</span></div></div><div><div><div>48</div></div><div><span>bool</span><span> </span><span>IsFull</span><span>(</span><span>Stack</span><span>) {</span></div></div><div><div><div>49</div></div><div><span>    </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>50</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h3>队列的顺序存储<a href="#队列的顺序存储"><span>#</span></a></h3><p>采用循环队列模拟队列，<code>front</code> 指向队头元素，<code>rear</code> 指向下一个入队位置；
初始化时令二者相等。</p><p>对于下面的代码，front 指向当前元素，rear 指向当前元素的下一个元素。</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 无须封装，直接采用一个固定长度的数组进行模拟</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>queue</span><span>[</span><span>MAXSIZE</span><span>];</span></div></div><div><div><div>3</div></div><div><span>int</span><span> </span><span>front</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div><span>int</span><span> </span><span>rear</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>// 入队</span></div></div><div><div><div>7</div></div><div><span>bool</span><span> </span><span>EnQueue</span><span>(</span><span>int</span><span><span> </span><span>x</span><span>) {</span></span></div></div><div><div><div>8</div></div><div><span>    </span><span>if</span><span> ((</span><span>rear</span><span> </span><span>+</span><span> </span><span>1</span><span>) </span><span>%</span><span> </span><span>MAXSIZE</span><span> </span><span>==</span><span> </span><span>front</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>9</div></div><div><span>    </span><span>queue</span><span>[</span><span>rear</span><span>] </span><span>=</span><span> </span><span>x</span><span>;</span></div></div><div><div><div>10</div></div><div><span>    </span><span>rear</span><span> </span><span>=</span><span> (</span><span>rear</span><span> </span><span>+</span><span> </span><span>1</span><span>) </span><span>%</span><span> </span><span>MAXSIZE</span><span>;</span></div></div><div><div><div>11</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>12</div></div><div><span>}</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>// 出队</span></div></div><div><div><div>15</div></div><div><span>bool</span><span> </span><span>DeQueue</span><span>(</span><span>int</span><span> </span><span>*</span><span><span>x</span><span>) {</span></span></div></div><div><div><div>16</div></div><div><span>    </span><span>if</span><span> (</span><span>x</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>front</span><span> </span><span>==</span><span> </span><span>rear</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>17</div></div><div><span>    </span><span>*</span><span>x</span><span> </span><span>=</span><span> </span><span>queue</span><span>[</span><span>front</span><span>];</span></div></div><div><div><div>18</div></div><div><span>    </span><span>front</span><span> </span><span>=</span><span> (</span><span>front</span><span> </span><span>+</span><span> </span><span>1</span><span>) </span><span>%</span><span> </span><span>MAXSIZE</span><span>;</span></div></div><div><div><div>19</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>20</div></div><div><span>}</span></div></div><div><div><div>21</div></div><div>
</div></div><div><div><div>22</div></div><div><span>// 获取队头元素</span></div></div><div><div><div>23</div></div><div><span>bool</span><span> </span><span>GetFront</span><span>(</span><span>int</span><span> </span><span>*</span><span><span>x</span><span>) {</span></span></div></div><div><div><div>24</div></div><div><span>    </span><span>if</span><span> (</span><span>x</span><span> </span><span>==</span><span> </span><span>nullptr</span><span> </span><span>||</span><span> </span><span>front</span><span> </span><span>==</span><span> </span><span>rear</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>25</div></div><div><span>    </span><span>*</span><span>x</span><span> </span><span>=</span><span> </span><span>queue</span><span>[</span><span>front</span><span>];</span></div></div><div><div><div>26</div></div><div><span>    </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>27</div></div><div><span>}</span></div></div><div><div><div>28</div></div><div>
</div></div><div><div><div>29</div></div><div><span>// 判断队列是否为空</span></div></div><div><div><div>30</div></div><div><span>bool</span><span> </span><span>IsEmpty</span><span>() {</span></div></div><div><div><div>31</div></div><div><span>    </span><span>return</span><span> </span><span>front</span><span> </span><span>==</span><span> </span><span>rear</span><span>;</span></div></div><div><div><div>32</div></div><div><span>}</span></div></div><div><div><div>33</div></div><div>
</div></div><div><div><div>34</div></div><div><span>// 判断队列是否满</span></div></div><div><div><div>35</div></div><div><span>bool</span><span> </span><span>IsFull</span><span>() {</span></div></div><div><div><div>36</div></div><div><span>    </span><span>return</span><span> (</span><span>rear</span><span> </span><span>+</span><span> </span><span>1</span><span>) </span><span>%</span><span> </span><span>MAXSIZE</span><span> </span><span>==</span><span> </span><span>front</span><span>;</span></div></div><div><div><div>37</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>这种写法牺牲了一个单元，队列最多存 MAXSIZE - 1 个元素。</p><p>循环队列判空判满有三种常用方案：</p><ul>
<li>牺牲一个单元：<code>(rear + 1) % MAXSIZE == front</code> 为满，<code>front == rear</code> 为空，最常用；</li>
<li>增设 size 变量：记录当前元素个数，<code>size == 0</code> 为空，<code>size == MAXSIZE</code> 为满；</li>
<li>增设 tag 标志：入队成功置 <code>tag = 1</code>，出队成功置 <code>tag = 0</code>，当 <code>front == rear</code> 时看 tag，tag 为 0 是空、为 1 是满。</li>
</ul><p>需要注意，如果不牺牲单元又只用 <code>front == rear</code> 判断，空和满就分不清，这是选择题的经典陷阱。</p><p>还有一点，队头指针指向队头元素还是队头元素的前一个、队尾指针指向队尾元素还是下一个位置，不同教材写法不同，做题先看题目给的初始条件和操作结果。</p></section><section><h3>队列的链式存储<a href="#队列的链式存储"><span>#</span></a></h3><p>采用带头结点的单链表，尾插法 / 头插法模拟队列。</p><p>这里不展开讲了，这里得细分为很多种情况：</p><p>单链表、循环单链表、双链表、循环双链表。</p><p>每种情况都有各的优势，需要具体情况具体分析。</p></section><section><h3>受限队列 / 双端队列<a href="#受限队列--双端队列"><span>#</span></a></h3><p>受限队列指的是队列的插入和删除操作受到限制，例如只能从一端插入，但是从两端删除，或者只能从两端插入，但是从一端删除。</p><p>双端队列指的是双端均可以插入和删除。</p></section><section><h3>括号匹配<a href="#括号匹配"><span>#</span></a></h3><p>使用栈来实现括号匹配，具体思路是：</p><ol>
<li>遍历字符串，遇到左括号入栈。</li>
<li>遇到右括号时，若栈为空则匹配失败；否则出栈并判断类型是否匹配。</li>
<li>遍历结束后，只有栈为空才表示匹配成功。</li>
</ol><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>bool</span><span> </span><span>isMatch</span><span>(</span><span>string</span><span><span> </span><span>s</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>stack</span><span>&lt;</span><span>char</span><span>&gt; </span><span>st</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>for</span><span> (</span><span>char</span><span> </span><span>c</span><span> : </span><span>s</span><span>) {</span></div></div><div><div><div>4</div></div><div><span>        </span><span>if</span><span> (</span><span>c</span><span> </span><span>==</span><span> </span><span>'('</span><span> </span><span>||</span><span> </span><span>c</span><span> </span><span>==</span><span> </span><span>'['</span><span> </span><span>||</span><span> </span><span>c</span><span> </span><span>==</span><span> </span><span>'{'</span><span>) {</span></div></div><div><div><div>5</div></div><div><span>            </span><span>st</span><span>.</span><span>push</span><span>(</span><span>c</span><span>);</span></div></div><div><div><div>6</div></div><div><span><span>        </span></span><span>} </span><span>else</span><span> </span><span>if</span><span> (</span><span>c</span><span> </span><span>==</span><span> </span><span>')'</span><span> </span><span>||</span><span> </span><span>c</span><span> </span><span>==</span><span> </span><span>']'</span><span> </span><span>||</span><span> </span><span>c</span><span> </span><span>==</span><span> </span><span>'}'</span><span>) {</span></div></div><div><div><div>7</div></div><div><span>            </span><span>if</span><span> (</span><span>st</span><span>.</span><span>empty</span><span>()) </span><span>return</span><span> </span><span>false</span><span>;</span><span> // 栈空了却没有左括号来配对</span></div></div><div><div><div>8</div></div><div><span>            </span><span>char</span><span> </span><span>top</span><span> </span><span>=</span><span> </span><span>st</span><span>.</span><span>top</span><span>();</span></div></div><div><div><div>9</div></div><div><span>            </span><span>st</span><span>.</span><span>pop</span><span>();</span></div></div><div><div><div>10</div></div><div><span>            </span><span>if</span><span> ((</span><span>c</span><span> </span><span>==</span><span> </span><span>')'</span><span> </span><span>&amp;&amp;</span><span> </span><span>top</span><span> </span><span>!=</span><span> </span><span>'('</span><span>) </span><span>||</span></div></div><div><div><div>11</div></div><div><span><span>                </span></span><span>(</span><span>c</span><span> </span><span>==</span><span> </span><span>']'</span><span> </span><span>&amp;&amp;</span><span> </span><span>top</span><span> </span><span>!=</span><span> </span><span>'['</span><span>) </span><span>||</span></div></div><div><div><div>12</div></div><div><span><span>                </span></span><span>(</span><span>c</span><span> </span><span>==</span><span> </span><span>'}'</span><span> </span><span>&amp;&amp;</span><span> </span><span>top</span><span> </span><span>!=</span><span> </span><span>'{'</span><span>)) {</span></div></div><div><div><div>13</div></div><div><span>                </span><span>return</span><span> </span><span>false</span><span>;</span><span> // 类型不匹配</span></div></div><div><div><div>14</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>16</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>17</div></div><div><span>    </span><span>return</span><span> </span><span>st</span><span>.</span><span>empty</span><span>();</span><span> // 遍历完后栈必须为空才算完全匹配</span></div></div><div><div><div>18</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h3>中缀表达式转后缀表达式<a href="#中缀表达式转后缀表达式"><span>#</span></a></h3><p>中缀表达式转后缀表达式，具体思路是：</p><ol>
<li>遍历中缀表达式，遇到数字直接输出，遇到符号入栈。</li>
<li>如果遇到左括号，则入栈。</li>
<li>如果遇到右括号，则出栈，直到遇到左括号。</li>
<li>如果栈顶元素优先级 &gt;= 当前元素，则出栈，直到栈顶元素优先级 &lt; 当前元素。</li>
<li>最后将栈里的元素依次出栈，即为后缀表达式。</li>
</ol><p>转前缀需要把 ( 和 ) 的处理逻辑对调，且运算符优先级的出栈条件（&gt;= / &gt;）有细微差别。</p></section><section><h3>后缀表达式求值<a href="#后缀表达式求值"><span>#</span></a></h3><p>使用栈来实现表达式求值，具体思路是：</p><ol>
<li>遍历字符串，遇到数字入栈。</li>
<li>遇到运算符，出栈两个元素，进行运算，将结果入栈。</li>
<li>如果栈里恰好有一个元素，则该元素就是结果。</li>
</ol><p>需要注意，先出栈的是右操作数，后出栈的是左操作数。</p><p>如果是前缀表达式求值，那么需要从后往前遍历，其他步骤相同。</p></section><section><h3>栈在递归中的应用<a href="#栈在递归中的应用"><span>#</span></a></h3><p>递归的本质是栈，例如斐波那契数列：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>fib</span><span>(</span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span>(</span><span>n</span><span> </span><span>&lt;=</span><span> </span><span>1</span><span>) </span><span>return</span><span> </span><span>n</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>return</span><span> </span><span>fib</span><span>(</span><span>n</span><span>-</span><span>1</span><span>) </span><span>+</span><span> </span><span>fib</span><span>(</span><span>n</span><span>-</span><span>2</span><span>);</span></div></div><div><div><div>4</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>队列与层次遍历<a href="#队列与层次遍历"><span>#</span></a></h3><p>层次遍历的本质是队列，例如二叉树的层次遍历：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>levelOrder</span><span>(</span><span>TreeNode</span><span> </span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span> (</span><span>root</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>queue</span><span>&lt;</span><span>TreeNode</span><span> </span><span>*</span><span>&gt; </span><span>q</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>q</span><span>.</span><span>push</span><span>(</span><span>root</span><span>);</span></div></div><div><div><div>5</div></div><div><span>    </span><span>while</span><span>(</span><span>!</span><span>q</span><span>.</span><span>empty</span><span>()) {</span></div></div><div><div><div>6</div></div><div><span>        </span><span>TreeNode</span><span> </span><span>*</span><span>node</span><span> </span><span>=</span><span> </span><span>q</span><span>.</span><span>front</span><span>();</span></div></div><div><div><div>7</div></div><div><span>        </span><span>q</span><span>.</span><span>pop</span><span>();</span></div></div><div><div><div>8</div></div><div><span>        </span><span>cout</span><span> </span><span>&lt;&lt;</span><span> </span><span>node</span><span>-&gt;</span><span>val</span><span> </span><span>&lt;&lt;</span><span> </span><span>" "</span><span>;</span></div></div><div><div><div>9</div></div><div><span>        </span><span>if</span><span>(</span><span>node</span><span>-&gt;</span><span>left</span><span>) </span><span>q</span><span>.</span><span>push</span><span>(</span><span>node</span><span>-&gt;</span><span>left</span><span>);</span></div></div><div><div><div>10</div></div><div><span>        </span><span>if</span><span>(</span><span>node</span><span>-&gt;</span><span>right</span><span>) </span><span>q</span><span>.</span><span>push</span><span>(</span><span>node</span><span>-&gt;</span><span>right</span><span>);</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>特殊队列（以 2019 真题为例）<a href="#特殊队列以-2019-真题为例"><span>#</span></a></h3><p>请设计一个队列，要求满足：</p><ul>
<li>①初始时队列为空；</li>
<li>②入队时，允许增加队列占用空间；</li>
<li>③出队后，出队元素所占用的空间可重复使用，即整个队列所占用的空间只增不减；</li>
<li>④入队操作和出队操作的时间复杂度始终保持为 O(1)。</li>
</ul><p>这道题刚上手的时候就完全没看懂题目是什么意思，其实核心在于理解什么是“只增不减”。意思是当链表满了的时候，可以通过加一个结点的方式扩充，而当链表不满的时候，则不需要，当链表元素减少的时候，也不需要减少结点，只是逻辑删除。</p><p>捋清楚了这一点之后，其实这道题就不难了。</p></section><section><h3>数组<a href="#数组"><span>#</span></a></h3><section><h4>多维数组的存储<a href="#多维数组的存储"><span>#</span></a></h4><p>二维数组 <span><span>A[m][n]A[m][n]</span><span><span><span></span><span>A</span><span>[</span><span>m</span><span>]</span><span>[</span><span>n</span><span>]</span></span></span></span> 有两种存储顺序：</p><ul>
<li>行优先：先存第 0 行，再存第 1 行，C 语言就是这种；</li>
<li>列优先：先存第 0 列，再存第 1 列，Fortran 是这种。</li>
</ul><p>设每个元素占 <span><span>LL</span><span><span><span></span><span>L</span></span></span></span> 个字节，起始地址为 <span><span>LOC(A[0][0])\text{LOC}(A[0][0])</span><span><span><span></span><span><span>LOC</span></span><span>(</span><span>A</span><span>[</span><span>0</span><span>]</span><span>[</span><span>0</span><span>])</span></span></span></span>，按行优先存储时</p><span><span><span>LOC(A[i][j])=LOC(A[0][0])+(i×n+j)×L\text{LOC}(A[i][j])=\text{LOC}(A[0][0])+(i\times n+j)\times L</span><span><span><span></span><span><span>LOC</span></span><span>(</span><span>A</span><span>[</span><span>i</span><span>]</span><span>[</span><span>j</span><span>])</span><span></span><span>=</span><span></span></span><span><span></span><span><span>LOC</span></span><span>(</span><span>A</span><span>[</span><span>0</span><span>]</span><span>[</span><span>0</span><span>])</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>i</span><span></span><span>×</span><span></span></span><span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>j</span><span>)</span><span></span><span>×</span><span></span></span><span><span></span><span>L</span></span></span></span></span><p>列优先只把 <span><span>ii</span><span><span><span></span><span>i</span></span></span></span> 和 <span><span>jj</span><span><span><span></span><span>j</span></span></span></span> 的位置换一下：</p><span><span><span>LOC(A[i][j])=LOC(A[0][0])+(j×m+i)×L\text{LOC}(A[i][j])=\text{LOC}(A[0][0])+(j\times m+i)\times L</span><span><span><span></span><span><span>LOC</span></span><span>(</span><span>A</span><span>[</span><span>i</span><span>]</span><span>[</span><span>j</span><span>])</span><span></span><span>=</span><span></span></span><span><span></span><span><span>LOC</span></span><span>(</span><span>A</span><span>[</span><span>0</span><span>]</span><span>[</span><span>0</span><span>])</span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>j</span><span></span><span>×</span><span></span></span><span><span></span><span>m</span><span></span><span>+</span><span></span></span><span><span></span><span>i</span><span>)</span><span></span><span>×</span><span></span></span><span><span></span><span>L</span></span></span></span></span><p>需要注意，行优先还是列优先，下标从 0 还是从 1 开始，是这类题的两个坑，题目一定会明确给，看清楚再套。</p></section><section><h4>特殊矩阵的存储<a href="#特殊矩阵的存储"><span>#</span></a></h4><p>对称矩阵，三角矩阵，三对角矩阵，可以采用一维数组存储。核心是把二维下标映射成一维下标。</p><p>下面统一按 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶、行优先、下标从 1 开始、一维数组也从 1 开始编号。</p><p>对称矩阵只存下三角（含对角线）：前 <span><span>i−1i-1</span><span><span><span></span><span>i</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 行共有 <span><span>i(i−1)2\frac{i(i-1)}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>i</span><span>(</span><span>i</span><span>−</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 个元素，所以</p><span><span><span>k=i(i−1)2+j(i≥j)k=\frac{i(i-1)}{2}+j\quad (i\ge j)</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>i</span><span>(</span><span>i</span><span></span><span>−</span><span></span><span>1</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>j</span><span></span><span>(</span><span>i</span><span></span><span>≥</span><span></span></span><span><span></span><span>j</span><span>)</span></span></span></span></span><p>上三角元素直接按 <span><span>aij=ajia_{ij}=a_{ji}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>ij</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>j</span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 换到下三角的位置上算。</p><p>上三角矩阵只存上三角时，前 <span><span>i−1i-1</span><span><span><span></span><span>i</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 行共有 <span><span>(i−1)n−(i−1)(i−2)2(i-1)n-\frac{(i-1)(i-2)}{2}</span><span><span><span></span><span>(</span><span>i</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span>i</span><span>−</span><span>1</span><span>)</span><span>(</span><span>i</span><span>−</span><span>2</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 个元素，所以</p><span><span><span>k=(i−1)n−(i−1)(i−2)2+(j−i+1)(i≤j)k=(i-1)n-\frac{(i-1)(i-2)}{2}+(j-i+1)\quad (i\le j)</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>i</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>(</span><span>i</span><span></span><span>−</span><span></span><span>1</span><span>)</span><span>(</span><span>i</span><span></span><span>−</span><span></span><span>2</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>(</span><span>j</span><span></span><span>−</span><span></span></span><span><span></span><span>i</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span>(</span><span>i</span><span></span><span>≤</span><span></span></span><span><span></span><span>j</span><span>)</span></span></span></span></span><p>三对角矩阵只有主对角线和上下两条次对角线非零，第 <span><span>ii</span><span><span><span></span><span>i</span></span></span></span> 行最多 3 个元素，所以</p><span><span><span>k=2i+j−2k=2i+j-2</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>i</span><span></span><span>+</span><span></span></span><span><span></span><span>j</span><span></span><span>−</span><span></span></span><span><span></span><span>2</span></span></span></span></span><p>需要注意，具体题目只要抓住“前面整行有多少个”加“本行前面有几个”这个思路，公式忘了也能现推，比死记安全。</p></section><section><h4>稀疏矩阵的存储<a href="#稀疏矩阵的存储"><span>#</span></a></h4><p>稀疏矩阵的存储方式：三元组、十字链表。</p><p>三元组法使用一个三元组来存储矩阵的非零元素，包括行号、列号和元素值。</p><p>十字链表法通过行、列两个方向的链接存储非零元素，适用于稀疏矩阵。</p></section></section></section>
<section><h2>第 4 章 - 串<a href="#第-4-章---串"><span>#</span></a></h2><section><h3>考纲 - 串<a href="#考纲---串"><span>#</span></a></h3><ul>
<li>串的定义和实现
<ul>
<li>串的存储结构：定长顺序存储、堆分配存储、块链存储</li>
</ul>
</li>
<li>串的模式匹配
<ul>
<li>朴素模式匹配算法</li>
<li>KMP 算法</li>
</ul>
</li>
</ul></section><section><h3>串的存储结构<a href="#串的存储结构"><span>#</span></a></h3><p>定长顺序存储：用一个定长数组加一个长度字段，超出长度的部分会被截断。</p><p>堆分配存储：用 malloc 动态申请空间，长度可变，C 语言的字符串常量就类似这种。</p><p>块链存储：每个结点存若干个字符，最后一个结点可能不满，为了处理方便通常会补特殊字符。</p><p>需要注意，链式存储时每个结点存几个字符会影响存储密度：存得越多密度越高，但插入删除越不灵活。</p></section><section><h3>字符串的模式匹配<a href="#字符串的模式匹配"><span>#</span></a></h3><section><h4>朴素模式匹配算法<a href="#朴素模式匹配算法"><span>#</span></a></h4><p>时间复杂度：<span><span>O(n∗m)O(n*m)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>∗</span><span></span></span><span><span></span><span>m</span><span>)</span></span></span></span>，其中 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 是主串长度，<span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 是模式串长度。</p></section><section><h4>KMP 算法及其改进<a href="#kmp-算法及其改进"><span>#</span></a></h4><p>以 a b a b a a 为例，按下标从 1 开始、<code>next[1] = 0</code> 的考研约定：</p>

<table><thead><tr><th>下标 <span><span>jj</span><span><span><span></span><span>j</span></span></span></span></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th></tr></thead><tbody><tr><td>字符 <span><span>P[j]P[j]</span><span><span><span></span><span>P</span><span>[</span><span>j</span><span>]</span></span></span></span></td><td><code>a</code></td><td><code>b</code></td><td><code>a</code></td><td><code>b</code></td><td><code>a</code></td><td><code>a</code></td></tr><tr><td>已匹配部分 <span><span>P[1…j−1]P[1\dots j-1]</span><span><span><span></span><span>P</span><span>[</span><span>1</span><span></span><span>…</span><span></span><span>j</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>]</span></span></span></span></td><td>空</td><td><code>a</code></td><td><code>ab</code></td><td><code>aba</code></td><td><code>abab</code></td><td><code>ababa</code></td></tr><tr><td>最长相等前后缀长度</td><td>0</td><td>0</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td><code>next</code></td><td>0</td><td>1</td><td>1</td><td>2</td><td>3</td><td>4</td></tr><tr><td><code>nextval</code></td><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td><td>4</td></tr></tbody></table><p>手算 next 的方法是：<code>next[1] = 0</code>；对 <span><span>j≥2j\ge 2</span><span><span><span></span><span>j</span><span></span><span>≥</span><span></span></span><span><span></span><span>2</span></span></span></span>，取前 <span><span>j−1j-1</span><span><span><span></span><span>j</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 个字符组成的前缀串 <span><span>P[1…j−1]P[1\dots j-1]</span><span><span><span></span><span>P</span><span>[</span><span>1</span><span></span><span>…</span><span></span><span>j</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>]</span></span></span></span>，求它最长相等前后缀的长度 <span><span>len\mathrm{len}</span><span><span><span></span><span><span>len</span></span></span></span></span>，则 <code>next[j] = len + 1</code>。</p><p>nextval 是在 next 上再优化一层：如果 <span><span>P[j]P[j]</span><span><span><span></span><span>P</span><span>[</span><span>j</span><span>]</span></span></span></span> 和 <span><span>P[next[j]]P[\mathrm{next}[j]]</span><span><span><span></span><span>P</span><span>[</span><span><span>next</span></span><span>[</span><span>j</span><span>]]</span></span></span></span> 相同，说明失配后按 next 跳过去还是同一个字符、还会失配，所以 <code>nextval[j] = nextval[next[j]]</code>；否则 <code>nextval[j] = next[j]</code>。</p><p>需要注意，有些题解用下标从 0 开始、<code>next[0] = 0</code> 的写法，这时 next 就是“最长相等前后缀长度”本身，本题为 <span><span>0,0,1,2,3,10,0,1,2,3,1</span><span><span><span></span><span>0</span><span>,</span><span></span><span>0</span><span>,</span><span></span><span>1</span><span>,</span><span></span><span>2</span><span>,</span><span></span><span>3</span><span>,</span><span></span><span>1</span></span></span></span>。两种写法只差一个偏移，不能混着用，做题先看题目给出的数组长什么样。</p><p>这类题需要注意移动距离和下标不要搞混淆：失配后模式串右移的位数等于 <span><span>j−next[j]j-\mathrm{next}[j]</span><span><span><span></span><span>j</span><span></span><span>−</span><span></span></span><span><span></span><span><span>next</span></span><span>[</span><span>j</span><span>]</span></span></span></span>（<span><span>jj</span><span><span><span></span><span>j</span></span></span></span> 从 1 开始）。</p><p>KMP 算法主要是遗忘，需要经常来看（因为考也是考选择题）。</p><p>此外要看清楚是“移动到”还是“移动了”，这俩也有区别。</p></section></section></section>
<section><h2>第 5 章 - 树<a href="#第-5-章---树"><span>#</span></a></h2><section><h3>考纲 - 树<a href="#考纲---树"><span>#</span></a></h3><ul>
<li>树的基本概念</li>
<li>二叉树
<ul>
<li>二叉树的定义及其主要特征</li>
<li>二叉树的顺序存储结构和链式存储结构</li>
<li>二叉树的遍历</li>
<li>线索二叉树的基本概念和构造</li>
</ul>
</li>
<li>树、森林
<ul>
<li>树的存储结构</li>
<li>森林与二叉树的转换</li>
<li>树和森林的遍历</li>
</ul>
</li>
<li>哈夫曼树和哈夫曼编码</li>
<li>并查集及其应用</li>
</ul></section><section><h3>树的基本概念<a href="#树的基本概念"><span>#</span></a></h3><ul>
<li>树高：树的根节点到叶子节点的最大路径长度，需要注意定义，一般来讲是根节点也算，但是具体题目得看要求</li>
<li>度：树的结点的子结点数</li>
<li>空树：没有结点的树</li>
<li>森林：多棵树的集合</li>
<li>满二叉树：高度为 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span> 且有 <span><span>2h−12^h-1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 个结点，也就是每一层都排满，叶子全在最后一层</li>
<li>完全二叉树：除了最后一层，其他层都是满的，最后一层从左到右填充</li>
<li>二叉树：每个结点最多有两个子结点</li>
<li>m 叉树：每个结点最多有 m 个子结点</li>
</ul><p>几个必须记住的性质：</p><ul>
<li>树的结点数等于所有结点的度数之和加 1，因为除了根，每个结点都有一条边连向双亲；</li>
<li>对任意一棵二叉树，叶子数 <span><span>n0n_0</span><span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和度为 2 的结点数 <span><span>n2n_2</span><span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 满足 <span><span>n0=n2+1n_0=n_2+1</span><span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>；</li>
<li>结点总数为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 的二叉树，边数为 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>；</li>
<li>第 <span><span>ii</span><span><span><span></span><span>i</span></span></span></span> 层最多有 <span><span>2i−12^{i-1}</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span><span>i</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 个结点（根为第 1 层），高度为 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span> 的二叉树最多有 <span><span>2h−12^h-1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 个结点；</li>
<li><span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个结点的完全二叉树高度为 <span><span>⌈log⁡2(n+1)⌉\lceil\log_2(n+1)\rceil</span><span><span><span></span><span>⌈</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span>)⌉</span></span></span></span>，也等于 <span><span>⌊log⁡2n⌋+1\lfloor\log_2 n\rfloor+1</span><span><span><span></span><span>⌊</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>⌋</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>；</li>
<li>完全二叉树按层序从 1 开始编号，结点 <span><span>ii</span><span><span><span></span><span>i</span></span></span></span> 的左孩子是 <span><span>2i2i</span><span><span><span></span><span>2</span><span>i</span></span></span></span>、右孩子是 <span><span>2i+12i+1</span><span><span><span></span><span>2</span><span>i</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>、双亲是 <span><span>⌊i/2⌋\lfloor i/2\rfloor</span><span><span><span></span><span>⌊</span><span>i</span><span>/2</span><span>⌋</span></span></span></span>。</li>
</ul><p>需要注意，度为 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 的树和 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 叉树不是一回事：前者要求至少有一个结点的度正好是 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span>，后者只限制上限，可以一个都没有。</p></section><section><h3>二叉树的存储结构<a href="#二叉树的存储结构"><span>#</span></a></h3><p>顺序存储：把结点按完全二叉树的编号存进数组，空结点留空。适合完全二叉树，普通二叉树会浪费大量空间，最坏要 <span><span>2h−12^h-1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 个位置。</p><p>链式存储：每个结点存数据域和左右孩子指针。<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个结点共 <span><span>2n2n</span><span><span><span></span><span>2</span><span>n</span></span></span></span> 个指针域，其中只有 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 个指向孩子，所以空指针域有 <span><span>n+1n+1</span><span><span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 个。</p><p>需要注意，<span><span>n+1n+1</span><span><span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 这个结论的选择题考法通常就是“二叉链表有多少个空指针”，推导是 <span><span>2n−(n−1)=n+12n-(n-1)=n+1</span><span><span><span></span><span>2</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>。线索二叉树就是把这些空指针利用起来。</p><p>还有三叉链表，多一个指向双亲的指针，方便向上回溯，代价是每个结点多一个指针。</p></section><section><h3>树的遍历与线索二叉树<a href="#树的遍历与线索二叉树"><span>#</span></a></h3><section><h4>树的遍历<a href="#树的遍历"><span>#</span></a></h4><p>前序遍历：根节点 -&gt; 左子树 -&gt; 右子树</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>preOrder</span><span>(</span><span>TreeNode</span><span> </span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span>(</span><span>root</span><span> </span><span>==</span><span> </span><span>NULL</span><span>) </span><span>return</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>cout</span><span> </span><span>&lt;&lt;</span><span> </span><span>root</span><span>-&gt;</span><span>val</span><span> </span><span>&lt;&lt;</span><span> </span><span>" "</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>preOrder</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>);</span></div></div><div><div><div>5</div></div><div><span>    </span><span>preOrder</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>);</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>中序遍历：左子树 -&gt; 根节点 -&gt; 右子树</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>inOrder</span><span>(</span><span>TreeNode</span><span> </span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span>(</span><span>root</span><span> </span><span>==</span><span> </span><span>NULL</span><span>) </span><span>return</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>inOrder</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>);</span></div></div><div><div><div>4</div></div><div><span>    </span><span>cout</span><span> </span><span>&lt;&lt;</span><span> </span><span>root</span><span>-&gt;</span><span>val</span><span> </span><span>&lt;&lt;</span><span> </span><span>" "</span><span>;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>inOrder</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>);</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>后序遍历：左子树 -&gt; 右子树 -&gt; 根节点</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>postOrder</span><span>(</span><span>TreeNode</span><span> </span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span>(</span><span>root</span><span> </span><span>==</span><span> </span><span>NULL</span><span>) </span><span>return</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>postOrder</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>);</span></div></div><div><div><div>4</div></div><div><span>    </span><span>postOrder</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>);</span></div></div><div><div><div>5</div></div><div><span>    </span><span>cout</span><span> </span><span>&lt;&lt;</span><span> </span><span>root</span><span>-&gt;</span><span>val</span><span> </span><span>&lt;&lt;</span><span> </span><span>" "</span><span>;</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>层次遍历：从上到下，从左到右</p><p>很多树的算法都可以在上述四种遍历的基础上修改。</p><p>也就是：先判断结束条件，然后判断采用哪种遍历，接下来判断做出递归之前要做什么，做出递归之后要做什么。</p><p>例如求树的每个结点的平衡因子，思路为采用后序遍历，先求出左子树和右子树的树高，然后计算当前结点的平衡因子。</p><p>后序遍历的做法：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>getBalanceFactor</span><span>(</span><span>TreeNode</span><span> </span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span>(</span><span>root</span><span> </span><span>==</span><span> </span><span>NULL</span><span>) </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>leftHeight</span><span> </span><span>=</span><span> </span><span>getBalanceFactor</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>);</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> </span><span>rightHeight</span><span> </span><span>=</span><span> </span><span>getBalanceFactor</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>);</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>    </span><span>root</span><span>-&gt;</span><span>balanceFactor</span><span> </span><span>=</span><span> </span><span>leftHeight</span><span> </span><span>-</span><span> </span><span>rightHeight</span><span>;</span></div></div><div><div><div>7</div></div><div><span>    </span><span>return</span><span> </span><span>max</span><span>(</span><span>leftHeight</span><span>, </span><span>rightHeight</span><span>) </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>8</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>树的线索化<a href="#树的线索化"><span>#</span></a></h4><p>树的线索化，指的是将树的结点按照某种遍历方式进行线索化，使得每个结点都有两个指针，一个指向其前驱，一个指向其后继。</p><p>在线索二叉树中，<code>ltag</code> 或 <code>rtag</code> 为 <code>1</code> 表示对应指针是线索，
为 <code>0</code> 表示对应指针指向孩子。只有当 <code>ltag == 1</code> 且 <code>rtag == 1</code> 时，
该结点才是叶子结点。</p><p>如果是中序线索化，而现在要进行普通的先序遍历，不能直接把线索当作孩子访问。</p><p>需要把左、右孩子的判断分别改为
<code>root-&gt;ltag == 0 &amp;&amp; root-&gt;lchild != nullptr</code> 和
<code>root-&gt;rtag == 0 &amp;&amp; root-&gt;rchild != nullptr</code>。</p><p>中序线索化时，若左子树存在，结点的前驱是左子树的最右结点；
若右子树存在，结点的后继是右子树的最左结点。</p><p>先序线索化时，仅依靠左右指针通常不能直接找到前驱；
若 <code>p</code> 有左孩子，先序后继优先是 <code>p-&gt;lchild</code>，否则是 <code>p-&gt;rchild</code>
或向上回溯后找到的结点。</p><p>后序线索化时，若 <code>p</code> 有右孩子，后序前驱优先是 <code>p-&gt;rchild</code>；
否则是 <code>p-&gt;lchild</code>。后序后继通常需要父指针、栈或额外线索才能直接找到。</p></section><section><h4>已知先序遍历序列和中序遍历序列，求树<a href="#已知先序遍历序列和中序遍历序列求树"><span>#</span></a></h4><p>先序遍历的第一个元素为根节点，在中序遍历中找到根节点，根节点左侧为左子树，右侧为右子树。</p><p>递归处理左子树和右子树。</p></section><section><h4>已知后序遍历序列和中序遍历序列，求树<a href="#已知后序遍历序列和中序遍历序列求树"><span>#</span></a></h4><p>后序遍历的最后一个元素为根节点，在中序遍历中找到根节点，根节点左侧为左子树，右侧为右子树。</p><p>递归处理左子树和右子树。</p></section><section><h4>已知层次遍历和中序遍历序列，求树<a href="#已知层次遍历和中序遍历序列求树"><span>#</span></a></h4><p>层次遍历的第一个元素为根节点，在中序遍历中找到根节点，根节点左侧为左子树，右侧为右子树。</p><p>递归处理左子树和右子树。</p></section></section><section><h3>树的存储结构<a href="#树的存储结构"><span>#</span></a></h3><section><h4>双亲表示法<a href="#双亲表示法"><span>#</span></a></h4><p>双亲表示法，指的是每个结点保存其双亲结点的下标。</p></section><section><h4>孩子表示法<a href="#孩子表示法"><span>#</span></a></h4><p>孩子表示法，指的是每个结点保存其孩子结点的下标。</p></section><section><h4>孩子兄弟表示法<a href="#孩子兄弟表示法"><span>#</span></a></h4><p>孩子兄弟表示法，指的是左孩子右兄弟。</p></section><section><h4>树的先序遍历<a href="#树的先序遍历"><span>#</span></a></h4><p>本质为二叉树的先序遍历。</p></section><section><h4>树的后序遍历<a href="#树的后序遍历"><span>#</span></a></h4><p>本质为二叉树的中序遍历。</p></section><section><h4>森林的先序遍历<a href="#森林的先序遍历"><span>#</span></a></h4><p>本质为二叉树的先序遍历。</p></section><section><h4>森林的中序遍历<a href="#森林的中序遍历"><span>#</span></a></h4><p>本质为二叉树的中序遍历。</p></section></section><section><h3>哈夫曼树<a href="#哈夫曼树"><span>#</span></a></h3><p>哈夫曼树的构建，以及哈夫曼编码。</p><p>WPL（带权路径长度）为
<span><span>WPL=∑i=1nwili\mathrm{WPL}=\sum_{i=1}^{n}w_i l_i</span><span><span><span></span><span><span>WPL</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>∑</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>w</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>l</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，其中 <span><span>wiw_i</span><span><span><span></span><span><span>w</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是叶子结点的权值，
<span><span>lil_i</span><span><span><span></span><span><span>l</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是该叶子结点到根结点的路径长度。</p><p>构造过程：每次从森林里选两棵根权值最小的树，合并成一棵新树，新根的权值是两者之和，重复直到只剩一棵。</p><p><span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个叶子的哈夫曼树共有 <span><span>2n−12n-1</span><span><span><span></span><span>2</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 个结点，而且没有度为 1 的结点，因为每次都是两棵合成一棵，属于严格二叉树。</p><p>哈夫曼编码：左分支记 0、右分支记 1，从根到叶子的路径就是该字符的编码。因为没有哪个叶子是另一个叶子的祖先，所以得到的是前缀码，译码不会产生歧义。</p><p>需要注意，哈夫曼编码不唯一，左右可以互换，权值相同的子树交换也不影响 WPL；但 WPL 最小这一点是唯一的。另外它是可变长度编码，频率高的字符编码短，压缩效率高。</p></section><section><h3>并查集<a href="#并查集"><span>#</span></a></h3><p>并查集的朴素实现以及优化。</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 数组模拟</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>parent</span><span>[</span><span>MAXSIZE</span><span>];</span></div></div><div><div><div>3</div></div><div><span>void</span><span> </span><span>init</span><span>(</span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>4</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> </span><span>i</span><span> </span><span>=</span><span> </span><span>0</span><span>; </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>n</span><span>; </span><span>i</span><span>++</span><span>) {</span></div></div><div><div><div>5</div></div><div><span>        </span><span>parent</span><span>[</span><span>i</span><span>] </span><span>=</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>6</div></div><div><span>        </span><span>rank</span><span>[</span><span>i</span><span>] </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>8</div></div><div><span>}</span></div></div><div><div><div>9</div></div><div><span>// 朴素版本</span></div></div><div><div><div>10</div></div><div><span>int</span><span> </span><span>findNaive</span><span>(</span><span>int</span><span><span> </span><span>x</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>while</span><span>(</span><span>parent</span><span>[</span><span>x</span><span>] </span><span>!=</span><span> </span><span>-</span><span>1</span><span>) {</span></div></div><div><div><div>12</div></div><div><span>        </span><span>x</span><span> </span><span>=</span><span> </span><span>parent</span><span>[</span><span>x</span><span>];</span></div></div><div><div><div>13</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>14</div></div><div><span>    </span><span>return</span><span> </span><span>x</span><span>;</span></div></div><div><div><div>15</div></div><div><span>}</span></div></div><div><div><div>16</div></div><div><span>// 朴素版本合并</span></div></div><div><div><div>17</div></div><div><span>void</span><span> </span><span>uniteNaive</span><span>(</span><span>int</span><span><span> </span><span>x</span><span>, </span></span><span>int</span><span><span> </span><span>y</span><span>) {</span></span></div></div><div><div><div>18</div></div><div><span>    </span><span>int</span><span> </span><span>rootX</span><span> </span><span>=</span><span> </span><span>findNaive</span><span>(</span><span>x</span><span>);</span></div></div><div><div><div>19</div></div><div><span>    </span><span>int</span><span> </span><span>rootY</span><span> </span><span>=</span><span> </span><span>findNaive</span><span>(</span><span>y</span><span>);</span></div></div><div><div><div>20</div></div><div><span>    </span><span>if</span><span>(</span><span>rootX</span><span> </span><span>!=</span><span> </span><span>rootY</span><span>) {</span></div></div><div><div><div>21</div></div><div><span>        </span><span>parent</span><span>[</span><span>rootX</span><span>] </span><span>=</span><span> </span><span>rootY</span><span>;</span></div></div><div><div><div>22</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>23</div></div><div><span>}</span></div></div><div><div><div>24</div></div><div>
</div></div><div><div><div>25</div></div><div><span>// 优化版本压缩查找</span></div></div><div><div><div>26</div></div><div><span>int</span><span> </span><span>find</span><span>(</span><span>int</span><span><span> </span><span>x</span><span>) {</span></span></div></div><div><div><div>27</div></div><div><span>    </span><span>int</span><span> </span><span>root</span><span> </span><span>=</span><span> </span><span>x</span><span>;</span></div></div><div><div><div>28</div></div><div><span>    </span><span>while</span><span>(</span><span>parent</span><span>[</span><span>root</span><span>] </span><span>!=</span><span> </span><span>-</span><span>1</span><span>) {</span></div></div><div><div><div>29</div></div><div><span>        </span><span>root</span><span> </span><span>=</span><span> </span><span>parent</span><span>[</span><span>root</span><span>];</span></div></div><div><div><div>30</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>31</div></div><div><span><span>    </span></span><span>// 得到 root 具体值后，把路径上所有的结点的 parent 都设置为 root</span></div></div><div><div><div>32</div></div><div><span>    </span><span>int</span><span> </span><span>temp</span><span> </span><span>=</span><span> </span><span>x</span><span>;</span></div></div><div><div><div>33</div></div><div><span>    </span><span>while</span><span>(</span><span>temp</span><span> </span><span>!=</span><span> </span><span>root</span><span>) {</span></div></div><div><div><div>34</div></div><div><span>        </span><span>int</span><span> </span><span>next</span><span> </span><span>=</span><span> </span><span>parent</span><span>[</span><span>temp</span><span>];</span></div></div><div><div><div>35</div></div><div><span>        </span><span>parent</span><span>[</span><span>temp</span><span>] </span><span>=</span><span> </span><span>root</span><span>;</span></div></div><div><div><div>36</div></div><div><span>        </span><span>temp</span><span> </span><span>=</span><span> </span><span>next</span><span>;</span></div></div><div><div><div>37</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>38</div></div><div><span>    </span><span>return</span><span> </span><span>root</span><span>;</span></div></div><div><div><div>39</div></div><div><span>}</span></div></div><div><div><div>40</div></div><div><span>// 按秩合并</span></div></div><div><div><div>41</div></div><div><span>void</span><span> </span><span>unite</span><span>(</span><span>int</span><span><span> </span><span>x</span><span>, </span></span><span>int</span><span><span> </span><span>y</span><span>) {</span></span></div></div><div><div><div>42</div></div><div><span>    </span><span>int</span><span> </span><span>rootX</span><span> </span><span>=</span><span> </span><span>find</span><span>(</span><span>x</span><span>);</span></div></div><div><div><div>43</div></div><div><span>    </span><span>int</span><span> </span><span>rootY</span><span> </span><span>=</span><span> </span><span>find</span><span>(</span><span>y</span><span>);</span></div></div><div><div><div>44</div></div><div><span>    </span><span>if</span><span>(</span><span>rootX</span><span> </span><span>!=</span><span> </span><span>rootY</span><span>) {</span></div></div><div><div><div>45</div></div><div><span>        </span><span>if</span><span>(</span><span>rank</span><span>[</span><span>rootX</span><span>] </span><span>&gt;</span><span> </span><span>rank</span><span>[</span><span>rootY</span><span>]) {</span></div></div><div><div><div>46</div></div><div><span>            </span><span>parent</span><span>[</span><span>rootY</span><span>] </span><span>=</span><span> </span><span>rootX</span><span>;</span></div></div><div><div><div>47</div></div><div><span><span>        </span></span><span>} </span><span>else</span><span> </span><span>if</span><span>(</span><span>rank</span><span>[</span><span>rootX</span><span>] </span><span>&lt;</span><span> </span><span>rank</span><span>[</span><span>rootY</span><span>]) {</span></div></div><div><div><div>48</div></div><div><span>            </span><span>parent</span><span>[</span><span>rootX</span><span>] </span><span>=</span><span> </span><span>rootY</span><span>;</span></div></div><div><div><div>49</div></div><div><span><span>        </span></span><span>} </span><span>else</span><span> {</span></div></div><div><div><div>50</div></div><div><span>            </span><span>parent</span><span>[</span><span>rootX</span><span>] </span><span>=</span><span> </span><span>rootY</span><span>;</span></div></div><div><div><div>51</div></div><div><span>            </span><span>rank</span><span>[</span><span>rootY</span><span>]</span><span>++</span><span>;</span></div></div><div><div><div>52</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>53</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>54</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section></section>
<section><h2>第 6 章 - 图<a href="#第-6-章---图"><span>#</span></a></h2><section><h3>考纲 - 图<a href="#考纲---图"><span>#</span></a></h3><ul>
<li>图的基本概念</li>
<li>图的存储以及基本操作</li>
<li>邻接矩阵；邻接表；十字链表；邻接多重表</li>
<li>图的遍历</li>
<li>深度优先搜索；广度优先搜索</li>
<li>图的基本应用</li>
<li>最小生成树（代价生成树）；最短路径；拓扑排序；关键路径</li>
</ul></section><section><h3>图的定义<a href="#图的定义"><span>#</span></a></h3><ul>
<li>图是由顶点集 <span><span>VV</span><span><span><span></span><span>V</span></span></span></span> 和边集 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 组成的数据结构，记作 <span><span>G=(V,E)G=(V,E)</span><span><span><span></span><span>G</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>V</span><span>,</span><span></span><span>E</span><span>)</span></span></span></span>。</li>
<li>图的顶点数记作 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>，边数记作 <span><span>ee</span><span><span><span></span><span>e</span></span></span></span>。</li>
<li>完全图：任意两个顶点之间都有边，记作 <span><span>KnK_n</span><span><span><span></span><span><span>K</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</li>
<li>子图：图 <span><span>G′=(V′,E′)G'=(V',E')</span><span><span><span></span><span><span>G</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span><span>V</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>,</span><span></span><span><span>E</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>)</span></span></span></span> 是图 <span><span>G=(V,E)G=(V,E)</span><span><span><span></span><span>G</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>V</span><span>,</span><span></span><span>E</span><span>)</span></span></span></span> 的子图，如果 <span><span>V′V'</span><span><span><span></span><span><span>V</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 是 <span><span>VV</span><span><span><span></span><span>V</span></span></span></span> 的子集，
<span><span>E′E'</span><span><span><span></span><span><span>E</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 是 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 的子集。</li>
<li>连通图：如果图中任意两个顶点之间都存在路径，则称该图是连通图。</li>
<li>极大连通子图：如果图 <span><span>GG</span><span><span><span></span><span>G</span></span></span></span> 的某个子图是连通图，并且不存在包含它的更大连通子图，
则称该子图为极大连通子图（适用于无向图），也就是连通分量。</li>
<li>极小连通子图：如果一个连通子图删除任意一条边都会变得不连通，则称其为极小连通子图；
无向图中的极小连通子图是树，但不一定是最小生成树。</li>
<li>连通分量：无向图的极大连通子图称为连通分量。</li>
<li>强连通图：有向图中任意两个顶点 <span><span>u,vu,v</span><span><span><span></span><span>u</span><span>,</span><span></span><span>v</span></span></span></span> 都满足 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span> 可达 <span><span>vv</span><span><span><span></span><span>v</span></span></span></span> 且 <span><span>vv</span><span><span><span></span><span>v</span></span></span></span> 可达 <span><span>uu</span><span><span><span></span><span>u</span></span></span></span>。</li>
<li>弱连通图：有向图忽略边的方向后得到的无向图是连通图。</li>
<li>路径：顶点序列 <span><span>v0,v1,…,vkv_0,v_1,\dots,v_k</span><span><span><span></span><span><span>v</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>v</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span>…</span><span></span><span>,</span><span></span><span><span>v</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，相邻两个顶点之间都有边；路径长度指的是边的数目，不是顶点的数目</li>
<li>简单路径：路径上所有顶点互不相同。（适用于有向图和无向图）</li>
<li>回路：第一个顶点和最后一个顶点相同的路径</li>
<li>简单回路：除第一个和最后一个顶点相同外，其余顶点互不相同的回路。（适用于有向图和无向图）</li>
</ul><p>需要注意，简单路径要求的是顶点不重复，顶点不重复了边自然也不会重复；反过来只要求边不重复、顶点可以重复的路径，不叫简单路径。</p><p>简单回路的“除首尾外不重复”其实就是把回路首尾那个重复的顶点扣掉，剩下的顶点互不相同。无向图的简单回路至少 3 个顶点，有向图允许 <span><span>u→v→uu\to v\to u</span><span><span><span></span><span>u</span><span></span><span>→</span><span></span></span><span><span></span><span>v</span><span></span><span>→</span><span></span></span><span><span></span><span>u</span></span></span></span> 这种 2 个顶点的简单回路。</p><p>几个必须记住的数量关系：</p><ul>
<li>无向完全图有 <span><span>n(n−1)2\frac{n(n-1)}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>n</span><span>(</span><span>n</span><span>−</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 条边，有向完全图有 <span><span>n(n−1)n(n-1)</span><span><span><span></span><span>n</span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span> 条弧；</li>
<li>无向图中所有顶点的度数之和等于边数的两倍，<span><span>∑deg⁡(vi)=2e\sum \deg(v_i)=2e</span><span><span><span></span><span>∑</span><span></span><span>de<span>g</span></span><span>(</span><span><span>v</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>e</span></span></span></span>；</li>
<li>有向图中所有顶点的入度之和等于出度之和，都等于弧数 <span><span>ee</span><span><span><span></span><span>e</span></span></span></span>；</li>
<li>有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个顶点的连通图至少有 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 条边，恰好 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 条边时就是生成树；</li>
<li>有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个顶点的强连通图至少有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 条边，构成一个环。</li>
</ul><p>需要注意，连通分量是极大连通子图，生成树是极小连通子图，一个是“极大”一个是“极小”，这两个词经常被拿来出辨析题。</p><p>还有稠密图和稀疏图之分：边数接近完全图的是稠密图，适合用邻接矩阵；边数远小于 <span><span>n2n^2</span><span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 的是稀疏图，适合用邻接表。</p></section><section><h3>图的存储<a href="#图的存储"><span>#</span></a></h3><section><h4>邻接矩阵<a href="#邻接矩阵"><span>#</span></a></h4><p>邻接矩阵，指的是用一个二维数组来存储图的边。</p><p>入度：竖着遍历，出度：横着遍历</p></section><section><h4>邻接表<a href="#邻接表"><span>#</span></a></h4><p>邻接表，指的是用一个一维数组来存储图的顶点，用链表来存储图的边，即边表结点。</p><p>入度：遍历每一个顶点和边；出度：遍历该顶点的边表结点。</p></section><section><h4>十字链表<a href="#十字链表"><span>#</span></a></h4><p>主要是要掌握怎么看，看沿着左边走还是右边走。</p><p>主要是有向图的存储。</p><p>结构上分两类结点：顶点结点存数据、第一条入弧、第一条出弧；弧结点存弧尾编号、弧头编号、指向同弧尾的下一条弧、指向同弧头的下一条弧。</p><p>这样既能顺着出边找所有后继，也能顺着入边找所有前驱，求入度和出度都方便，代价是比邻接表多一个指针域。</p></section><section><h4>邻接多重表<a href="#邻接多重表"><span>#</span></a></h4><p>主要是要掌握怎么看，看沿着左边还是右边走。</p><p>主要用于无向图的存储。</p><p>一条无向边只用一个边结点表示，边结点存两个顶点编号和两个指针，分别指向依附这两个顶点的下一条边。</p><p>这样删边和遍历边都只处理一次，避免了邻接表里同一条边存两遍的问题。</p></section></section><section><h3>图的遍历<a href="#图的遍历"><span>#</span></a></h3><section><h4>广度优先<a href="#广度优先"><span>#</span></a></h4><p>广度优先搜索，指的是从图的某个顶点出发，先访问距离为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 的顶点，
再访问距离为 <span><span>22</span><span><span><span></span><span>2</span></span></span></span> 的顶点，逐层向外扩展。</p><p>广度优先可以生成广度优先生成树。生成树是否唯一取决于邻接点的访问顺序，
与采用邻接矩阵还是邻接表没有必然关系。</p><p>与此同时，广度优先遍历可以用来求单源最短路径，只需要在遍历的同时记录每个点到起点的距离即可。</p></section><section><h4>深度优先<a href="#深度优先"><span>#</span></a></h4><p>深度优先搜索，指的是从图的某个顶点出发，沿着一条路径尽可能深入，
到达不能继续访问的顶点后回溯，再访问其他路径。</p><p>深度优先可以生成深度优先生成树。生成树是否唯一同样取决于邻接点的访问顺序。</p></section><section><h4>存储结构与性能比较<a href="#存储结构与性能比较"><span>#</span></a></h4><p>广度优先：邻接矩阵 <span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span>，邻接表 <span><span>O(n+e)O(n+e)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>e</span><span>)</span></span></span></span>。</p><p>深度优先：邻接矩阵 <span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span>，邻接表 <span><span>O(n+e)O(n+e)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>e</span><span>)</span></span></span></span>。</p></section><section><h4>图的连通性与遍历<a href="#图的连通性与遍历"><span>#</span></a></h4><p>对于连通无向图，只需要从一个顶点开始遍历；对于非连通无向图，
需要从每个尚未访问的顶点开始遍历，遍历次数等于连通分量数。</p><p>对于有向图，需要区分强连通和弱连通：强连通要求任意两个顶点相互可达；
弱连通只要求忽略边方向后连通。</p><p>需要注意，强连通要求从 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 到 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span>，以及从 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 到 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 都存在有向路径。</p></section></section><section><h3>图的应用<a href="#图的应用"><span>#</span></a></h3><section><h4>最小生成树<a href="#最小生成树"><span>#</span></a></h4><ul>
<li>
<p>Prim 算法</p>
<p>每次从已选顶点集合与未选顶点集合之间的所有边中，选取权值最小的一条，
将对应的未选顶点加入集合，直到选入所有顶点。</p>
</li>
<li>
<p>kruskal 算法</p>
<p>将所有边按权值从小到大排序，依次选取不会形成环的边，
直到选取 <span><span>V−1V-1</span><span><span><span></span><span>V</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 条边或图已经连通。</p>
</li>
</ul><p>二者得到的最小生成树可能不一样，但在同一个带权无向连通图中，
最小生成树的总权值一定相同。</p><p>对于这种题，一定是要注意题设给的条件，比如说权值最小的边的总数，或者干脆权值各不相同。</p><p>所以上述是“可能”不一样。</p></section><section><h4>最短路径<a href="#最短路径"><span>#</span></a></h4><ul>
<li>
<p>Dijkstra 算法</p>
<ul>
<li>
<p>凭感觉法</p>
</li>
<li>
<p>手算算法：使用 <code>dist</code>、<code>path</code>、<code>visited</code> 分别记录当前最短距离、
最短路径前驱和访问状态。每轮从未访问顶点中选取 <code>dist</code> 最小的顶点，
再用它松弛所有出边，直到没有可改进的顶点。</p>
</li>
<li>
<p>时间复杂度：<span><span>O(V2)O(V^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>V</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span>。</p>
</li>
<li>
<p>空间复杂度：<span><span>O(V)O(V)</span><span><span><span></span><span>O</span><span>(</span><span>V</span><span>)</span></span></span></span>。</p>
</li>
<li>
<p>需要注意的点：Dijkstra 算法要求边权非负；它用于求最短路径，
不能把“是否存在环”作为其主要判定功能。</p>
</li>
</ul>
</li>
<li>
<p>Floyd 算法</p>
<ul>
<li>
<p>手算法：</p>
</li>
<li>
<p>需要注意的点：可以处理负权路径，但不能处理负权环。</p>
</li>
</ul>
</li>
</ul></section><section><h4>有向图无环图应用<a href="#有向图无环图应用"><span>#</span></a></h4><p>历年来只考过一次，中缀表达式的树表达转为图表达，尤其要注意变量一定是放在最底层且唯一的。</p></section><section><h4>拓扑排序<a href="#拓扑排序"><span>#</span></a></h4><ul>
<li>
<p>拓扑排序的描述是：选取入度为 0 的点，然后删除该点以及该点连接的边，重复上述过程，直到所有点都被删除。</p>
</li>
<li>
<p>拓扑排序的直接实现：</p>
<div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>typedef</span><span> </span><span>struct</span><span> Graph {</span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> V;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> E;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> </span><span>adj</span><span>[MAXSIZE][MAXSIZE];</span></div></div><div><div><div>5</div></div><div><span>} Graph;</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>void</span><span> </span><span>getInDegree</span><span><span>(</span><span>Graph </span><span>G</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>inDegree</span></span><span>[]</span><span>) {</span></div></div><div><div><div>8</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>V</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>9</div></div><div><span>        </span><span>inDegree</span><span>[i] </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>V</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>12</div></div><div><span>        </span><span>for</span><span>(</span><span>int</span><span> j </span><span>=</span><span> </span><span>0</span><span>; j </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>V</span><span>; j</span><span>++</span><span>) {</span></div></div><div><div><div>13</div></div><div><span>            </span><span>if</span><span>(</span><span>G</span><span>.</span><span>adj</span><span>[i][j] </span><span>!=</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>14</div></div><div><span>                </span><span>inDegree</span><span>[j]</span><span>++</span><span>;</span></div></div><div><div><div>15</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>16</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>17</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>18</div></div><div><span>}</span></div></div><div><div><div>19</div></div><div>
</div></div><div><div><div>20</div></div><div><span>bool</span><span> </span><span>topoSort</span><span><span>(</span><span>Graph </span><span>G</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>topo</span></span><span>[]</span><span>) {</span></div></div><div><div><div>21</div></div><div><span>    </span><span>int</span><span> </span><span>inDegree</span><span>[MAXSIZE] </span><span>=</span><span> {</span><span>0</span><span>};</span></div></div><div><div><div>22</div></div><div><span>    </span><span>getInDegree</span><span>(G, inDegree);</span></div></div><div><div><div>23</div></div><div><span>    </span><span>int</span><span> </span><span>queue</span><span>[MAXSIZE];</span><span> // 队列</span></div></div><div><div><div>24</div></div><div><span>    </span><span>int</span><span> front </span><span>=</span><span> </span><span>0</span><span>, rear </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>25</div></div><div><span>    </span><span>// 将入度为 0 的点入队</span></div></div><div><div><div>26</div></div><div><span>    </span><span>for</span><span>(</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>V</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>27</div></div><div><span>        </span><span>if</span><span>(</span><span>inDegree</span><span>[i] </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>28</div></div><div><span>            </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> i;</span></div></div><div><div><div>29</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>30</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>31</div></div><div><span>    </span><span>// 队列不为空时，取出队头元素，输出队头元素，并将其所有邻接点的入度减 1</span></div></div><div><div><div>32</div></div><div><span>    </span><span>// 如果邻接点的入度减 1 后为 0，则将该点入队</span></div></div><div><div><div>33</div></div><div><span>    </span><span>int</span><span> index </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>34</div></div><div><span>    </span><span>while</span><span>(front </span><span>!=</span><span> rear) {</span></div></div><div><div><div>35</div></div><div><span>        </span><span>int</span><span> v </span><span>=</span><span> </span><span>queue</span><span>[front</span><span>++</span><span>];</span></div></div><div><div><div>36</div></div><div><span>        </span><span>topo</span><span>[index</span><span>++</span><span>] </span><span>=</span><span> v;</span></div></div><div><div><div>37</div></div><div><span>        </span><span>// 遍历 v 的所有邻接点</span></div></div><div><div><div>38</div></div><div><span>        </span><span>for</span><span>(</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>V</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>39</div></div><div><span>            </span><span>if</span><span>(</span><span>G</span><span>.</span><span>adj</span><span>[v][i] </span><span>!=</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>40</div></div><div><span>                </span><span>inDegree</span><span>[i]</span><span>--</span><span>;</span></div></div><div><div><div>41</div></div><div><span>                </span><span>if</span><span>(</span><span>inDegree</span><span>[i] </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>42</div></div><div><span>                    </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> i;</span></div></div><div><div><div>43</div></div><div><span><span>                </span></span><span>}</span></div></div><div><div><div>44</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>45</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>46</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>47</div></div><div><span>    </span><span>return</span><span> index </span><span>==</span><span> </span><span>G</span><span>.</span><span>V</span><span>;</span><span> // 如果拓扑排序成功，则返回 true，否则返回 false</span></div></div><div><div><div>48</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div>
<ul>
<li>
<p>时间复杂度：<span><span>O(V2)O(V^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>V</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span>。</p>
</li>
<li>
<p>空间复杂度：<span><span>O(V2)O(V^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>V</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span>。</p>
</li>
<li>
<p>拓扑排序需要注意的点：若最终输出顶点数小于 <span><span>VV</span><span><span><span></span><span>V</span></span></span></span>，则图中存在环。</p>
</li>
</ul>
</li>
</ul></section><section><h4>关键路径<a href="#关键路径"><span>#</span></a></h4><p>利用软件工程里学的 4 个活动时间，求出关键路径，不需要按照王道书的方法求。</p><p>4 个活动时间：最早开始时间、最早结束时间、最晚开始时间、最晚结束时间。</p><p>最早开始时间：从前往后推，活动的最早开始时间等于其所有前驱活动最早结束时间的最大值。</p><p>最早结束时间：从前往后推，<span><span>EF=ES+活动时间\mathrm{EF}=\mathrm{ES}+\text{活动时间}</span><span><span><span></span><span><span>EF</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>ES</span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>活动时间</span></span></span></span></span>。</p><p>最晚开始时间：从后往前推，<span><span>LS=LF−活动时间\mathrm{LS}=\mathrm{LF}-\text{活动时间}</span><span><span><span></span><span><span>LS</span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>LF</span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>活动时间</span></span></span></span></span>。</p><p>最晚结束时间：从后往前推，活动的最晚结束时间等于其所有后继活动最晚开始时间的最小值。</p><p>关键路径是总持续时间最长的路径，关键活动通常满足总时差为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p>

<table><thead><tr><th>认知误区</th><th>修正结论</th></tr></thead><tbody><tr><td>关键路径只有 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 条</td><td>错误，可能同时存在多条等长的关键路径。</td></tr><tr><td>只要压缩关键活动，工期就一定会缩短</td><td>错误，多关键路径下单压一条无效；且过度压缩会导致路径转移。</td></tr><tr><td>非关键活动怎么延误都无所谓</td><td>错误，延误一旦超过总时差，就会变成新的关键路径并拖慢工期。</td></tr><tr><td>关键路径上的活动一旦确定就不会变</td><td>错误，动态调整活动时间会导致关键路径动态漂移。</td></tr></tbody></table></section></section></section>
<section><h2>第 7 章 - 查找<a href="#第-7-章---查找"><span>#</span></a></h2><section><h3>考纲 - 查找<a href="#考纲---查找"><span>#</span></a></h3><ul>
<li>查找的基本方法</li>
<li>顺序查找法</li>
<li>分块查找法</li>
<li>折半查找法</li>
<li>树形查找（二叉搜索树；平衡二叉树；红黑树）</li>
<li>B 树及其基本操作、B+ 树的基本概念</li>
<li>散列表</li>
<li>查找算法的分析及应用</li>
</ul></section><section><h3>ASL 分析<a href="#asl-分析"><span>#</span></a></h3><p>ASL 分析：平均查找长度，指的是查找成功时，需要查找的次数的平均值。</p><span><span><span>ASLsuccess=∑i=1niPi,∑i=1nPi=1.\mathrm{ASL}_{\mathrm{success}}=\sum_{i=1}^{n} iP_i,
\qquad \sum_{i=1}^{n}P_i=1.</span><span><span><span></span><span><span><span>ASL</span></span><span><span><span><span><span><span></span><span><span><span><span>success</span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>i</span><span><span>P</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span></span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1.</span></span></span></span></span><p>其中，<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 是查找表中元素的个数，<span><span>PiP_i</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是查找成功时第 <span><span>ii</span><span><span><span></span><span>i</span></span></span></span> 个元素的查找概率。</p><p>ASL 是查找成功时的平均查找长度；查找不成功时，应根据失败结点或失败区间的概率
单独计算平均查找长度。</p></section><section><h3>朴素查找与有序表查找的简单优化<a href="#朴素查找与有序表查找的简单优化"><span>#</span></a></h3><p>朴素查找：顺序查找，直到找到为止。</p><p>有序表查找不成功的优化：使用顺序查找，如果要找的值已经比当前元素小，则直接返回不成功。</p><p>这两种均适用于顺序表和链表。</p></section><section><h3>二分查找与二分查找树<a href="#二分查找与二分查找树"><span>#</span></a></h3><p>二分查找：折半查找，每次将查找范围缩小一半，直到找到为止。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>binarySearch</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>n</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>key</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> left </span><span>=</span><span> </span><span>0</span><span>, right </span><span>=</span><span> n </span><span>-</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>while</span><span>(left </span><span>&lt;=</span><span> right) {</span></div></div><div><div><div>4</div></div><div><span>        </span><span>int</span><span> mid </span><span>=</span><span> (left </span><span>+</span><span> right) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>5</div></div><div><span>        </span><span>if</span><span>(</span><span>A</span><span>[mid] </span><span>==</span><span> key) </span><span>return</span><span> mid;</span></div></div><div><div><div>6</div></div><div><span>        </span><span>else</span><span> </span><span>if</span><span>(</span><span>A</span><span>[mid] </span><span>&lt;</span><span> key) left </span><span>=</span><span> mid </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>7</div></div><div><span>        </span><span>else</span><span> right </span><span>=</span><span> mid </span><span>-</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span>    </span><span>return</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>10</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>时间复杂度：<span><span>O(log⁡n)O(\log n)</span><span><span><span></span><span>O</span><span>(</span><span>lo<span>g</span></span><span></span><span>n</span><span>)</span></span></span></span>。
空间复杂度：<span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span>。</p><p>二分查找适用于顺序表。</p><p>二叉搜索树的查找效率取决于树高；只有树高为 <span><span>O(log⁡n)O(\log n)</span><span><span><span></span><span>O</span><span>(</span><span>lo<span>g</span></span><span></span><span>n</span><span>)</span></span></span></span> 时，
查找才具有对数级复杂度。根据序列从右向左构建并不能保证得到平衡树。</p><p>注意计算 ASL，空结点不能算次数。</p></section><section><h3>分块查找<a href="#分块查找"><span>#</span></a></h3><p>分块查找：将查找表分成若干块，每块中的元素可以是无序的，但块之间是有序的。</p><p>块间可以采用折半查找优化。</p><p>需要注意的是，块间按照数组存储，然后按照孩子表示法进行拉链，形成链表。</p><p>较常见的均匀分块方案是 <span><span>n\sqrt{n}</span><span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span> 块，每块约有
<span><span>nn=n\frac{n}{\sqrt{n}}=\sqrt{n}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span> 个元素。</p></section><section><h3>二叉搜索树<a href="#二叉搜索树"><span>#</span></a></h3><p>又叫二叉排序树。若规定关键字不重复，则满足左子树关键字
<span><span>&lt;&lt;</span><span><span><span></span><span>&lt;</span></span></span></span> 根关键字 <span><span>&lt;&lt;</span><span><span><span></span><span>&lt;</span></span></span></span> 右子树关键字，中序遍历结果递增。</p><p>如何判断一棵树是否是二叉搜索树，可以在中序遍历中检查关键字是否严格递增：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>bool</span><span> </span><span>isBSTInOrder</span><span>(</span><span>TreeNode</span><span> </span><span>*</span><span><span>root</span><span>, </span></span><span>long</span><span> </span><span>long</span><span> </span><span>&amp;</span><span><span>previous</span><span>, </span></span><span>bool</span><span> </span><span>&amp;</span><span><span>hasPrevious</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span> (</span><span>root</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>if</span><span> (</span><span>!</span><span>isBSTInOrder</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>, </span><span>previous</span><span>, </span><span>hasPrevious</span><span>)) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>if</span><span> (</span><span>hasPrevious</span><span> </span><span>&amp;&amp;</span><span> </span><span>root</span><span>-&gt;</span><span>val</span><span> </span><span>&lt;=</span><span> </span><span>previous</span><span>) </span><span>return</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>previous</span><span> </span><span>=</span><span> </span><span>root</span><span>-&gt;</span><span>val</span><span>;</span></div></div><div><div><div>6</div></div><div><span>    </span><span>hasPrevious</span><span> </span><span>=</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>7</div></div><div><span>    </span><span>return</span><span> </span><span>isBSTInOrder</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>, </span><span>previous</span><span>, </span><span>hasPrevious</span><span>);</span></div></div><div><div><div>8</div></div><div><span>}</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>bool</span><span> </span><span>isBST</span><span>(</span><span>TreeNode</span><span> </span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>long</span><span> </span><span>long</span><span> </span><span>previous</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>12</div></div><div><span>    </span><span>bool</span><span> </span><span>hasPrevious</span><span> </span><span>=</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>13</div></div><div><span>    </span><span>return</span><span> </span><span>isBSTInOrder</span><span>(</span><span>root</span><span>, </span><span>previous</span><span>, </span><span>hasPrevious</span><span>);</span></div></div><div><div><div>14</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>二叉平衡树<a href="#二叉平衡树"><span>#</span></a></h3><p>二叉平衡树，即 AVL 树，满足左右子树高度差不超过 1。</p><p>若以结点数定义高度并令空树高度为 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>，则结点数最少的 AVL 树满足：</p><span><span><span>N−1=0,N0=1,Nh=Nh−1+Nh−2+1(h≥1).N_{-1}=0,\qquad N_0=1,\qquad
N_h=N_{h-1}+N_{h-2}+1\quad(h\ge 1).</span><span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span><span>,</span><span></span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span>,</span><span></span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span><span>h</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span><span>h</span><span>−</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>(</span><span>h</span><span></span><span>≥</span><span></span></span><span><span></span><span>1</span><span>)</span><span>.</span></span></span></span></span><p>它与斐波那契数列相关，但不能直接写成斐波那契数列前若干项的简单求和。</p><section><h4>LL<a href="#ll"><span>#</span></a></h4><p>表述为一个结点的左子树不平衡，是因为其左子树的左子树过高，
需要对失衡结点进行右旋。</p></section><section><h4>LR<a href="#lr"><span>#</span></a></h4><p>表述为一个结点的左子树不平衡，是因为其左子树的右子树过高，
需要先对左孩子左旋，再对失衡结点右旋。</p></section><section><h4>RL<a href="#rl"><span>#</span></a></h4><p>表述为一个结点的右子树不平衡，是因为其右子树的左子树过高，
需要先对右孩子右旋，再对失衡结点左旋。</p></section><section><h4>RR<a href="#rr"><span>#</span></a></h4><p>表述为一个结点的右子树不平衡，是因为其右子树的右子树过高，
需要对失衡结点进行左旋。</p></section><section><h4>计算二叉平衡树的平衡因子<a href="#计算二叉平衡树的平衡因子"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>getBalanceFactor</span><span><span>(</span><span>TreeNode</span></span><span>*</span><span><span> </span><span>root</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>// 利用后序遍历</span></div></div><div><div><div>3</div></div><div><span>    </span><span>if</span><span>(root </span><span>==</span><span> nullptr) </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> leftHeight </span><span>=</span><span> </span><span>getHeight</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>);</span></div></div><div><div><div>5</div></div><div><span>    </span><span>int</span><span> rightHeight </span><span>=</span><span> </span><span>getHeight</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>);</span></div></div><div><div><div>6</div></div><div><span>    </span><span>root </span><span>-&gt; </span><span>balanceFactor</span><span> </span><span>=</span><span> leftHeight </span><span>-</span><span> rightHeight;</span></div></div><div><div><div>7</div></div><div><span>    </span><span>return</span><span> </span><span>max</span><span>(leftHeight, rightHeight) </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>8</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section><section><h3>红黑树<a href="#红黑树"><span>#</span></a></h3><p>左根右，根黑，红不连，黑路同。</p><p>叶节点通常用黑色的空结点（<code>NIL</code>）表示。</p><p>红黑树是“弱平衡”的二叉搜索树，用颜色约束代替严格的平衡因子，插入删除时旋转次数更少。</p><p>五条性质：</p><ul>
<li>每个结点非红即黑；</li>
<li>根结点是黑色；</li>
<li>每个叶子结点（<code>NIL</code> 空结点）是黑色；</li>
<li>红结点的两个孩子必须是黑色，也就是不能有连续两个红结点；</li>
<li>从任一结点到它所有叶子的路径上，黑结点数目相同，这个数目叫黑高。</li>
</ul><p>由这五条可以推出：最长路径最多是最短路径的两倍，树高不超过 <span><span>2log⁡2(n+1)2\log_2(n+1)</span><span><span><span></span><span>2</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span>，所以查找仍是 <span><span>O(log⁡n)O(\log n)</span><span><span><span></span><span>O</span><span>(</span><span>lo<span>g</span></span><span></span><span>n</span><span>)</span></span></span></span>。</p><p>插入时新结点先染成红色，因为染红不会改变黑高，然后看叔叔结点的颜色：</p><ul>
<li>叔叔是红色：父和叔变黑、祖父变红，问题上移到祖父继续检查；</li>
<li>叔叔是黑色：通过一次或两次旋转加变色解决，情况和 AVL 的 LL、LR、RL、RR 一致。</li>
</ul><p>需要注意，红黑树的“叶子”指的是 <code>NIL</code> 空结点，不是存数据的叶子，题目说“叶结点是黑色”时说的就是这些空结点。</p><p>和 AVL 对比：红黑树的平衡要求松，树可能略高、查找略慢，但插入删除时旋转次数少，整体性能稳，所以 STL 的 map、set 和 Linux 内核都用红黑树。</p></section><section><h3>B 树 &amp; B+ 树<a href="#b-树--b-树"><span>#</span></a></h3>

<table><thead><tr><th>比较维度</th><th><span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 阶 B 树（B-Tree）</th><th><span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 阶 B+ 树（B+ Tree）</th></tr></thead><tbody><tr><td>非根内部子树数 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span></td><td><span><span>⌈m/2⌉≤k≤m\lceil m/2\rceil\le k\le m</span><span><span><span></span><span>⌈</span><span>m</span><span>/2</span><span>⌉</span><span></span><span>≤</span><span></span></span><span><span></span><span>k</span><span></span><span>≤</span><span></span></span><span><span></span><span>m</span></span></span></span></td><td>同左</td></tr><tr><td>非根内部关键字数 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span></td><td><span><span>⌈m/2⌉−1≤n≤m−1\lceil m/2\rceil-1\le n\le m-1</span><span><span><span></span><span>⌈</span><span>m</span><span>/2</span><span>⌉</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span></span><span>≤</span><span></span></span><span><span></span><span>n</span><span></span><span>≤</span><span></span></span><span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span></td><td>同左，均为分隔键</td></tr><tr><td>根结点约束</td><td>非叶：<span><span>2≤k≤m2\le k\le m</span><span><span><span></span><span>2</span><span></span><span>≤</span><span></span></span><span><span></span><span>k</span><span></span><span>≤</span><span></span></span><span><span></span><span>m</span></span></span></span>，<span><span>1≤n≤m−11\le n\le m-1</span><span><span><span></span><span>1</span><span></span><span>≤</span><span></span></span><span><span></span><span>n</span><span></span><span>≤</span><span></span></span><span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span></td><td>非叶：<span><span>2≤k≤m2\le k\le m</span><span><span><span></span><span>2</span><span></span><span>≤</span><span></span></span><span><span></span><span>k</span><span></span><span>≤</span><span></span></span><span><span></span><span>m</span></span></span></span>；索引数通常为 <span><span>k−1k-1</span><span><span><span></span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span></td></tr><tr><td>关键字与子树的关系</td><td>子树数 = 关键字数 <span><span>+1+1</span><span><span><span></span><span>+</span><span>1</span></span></span></span></td><td>内部结点子树数 = 分隔关键字数 <span><span>+1+1</span><span><span><span></span><span>+</span><span>1</span></span></span></span>，叶子记录数另行规定</td></tr></tbody></table><section><h4>B 树的基本操作<a href="#b-树的基本操作"><span>#</span></a></h4><p>查找：先在结点内部顺序或二分查找，命中就返回；没命中就沿着对应的子树指针往下，直到叶子。</p><p>插入：新关键字总是插到最底层的非叶结点。插完如果关键字数超过 <span><span>m−1m-1</span><span><span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>，就把结点从中间劈开，中间的关键字上升到双亲，左右两半成为两个新结点；双亲也满了就继续向上分裂，最坏一直裂到根，此时树高加 1，这也是 B 树长高的唯一方式。</p><p>删除：如果删的是非叶结点里的关键字，先用它的前驱或后继替换，转成删除底层结点；删完关键字数少于 <span><span>⌈m/2⌉−1\lceil m/2\rceil-1</span><span><span><span></span><span>⌈</span><span>m</span><span>/2</span><span>⌉</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 时，先向兄弟借，兄弟也不够就合并，合并还可能继续向上传播。</p><p><span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个关键字的 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 阶 B 树，高度范围是</p><span><span><span>⌈log⁡m(n+1)⌉≤h≤⌊log⁡⌈m/2⌉n+12⌋+1\lceil\log_m(n+1)\rceil\le h\le \left\lfloor\log_{\lceil m/2\rceil}\frac{n+1}{2}\right\rfloor+1</span><span><span><span></span><span>⌈</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span>)⌉</span><span></span><span>≤</span><span></span></span><span><span></span><span>h</span><span></span><span>≤</span><span></span></span><span><span></span><span><span><span>⌊</span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span><span>⌈</span><span>m</span><span>/2</span><span>⌉</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>n</span><span></span><span>+</span><span></span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>⌋</span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span></span><p>需要注意，B 树的高度不含叶子（失败结点）那一层，题目说“含叶子的高度”时要再加 1。</p></section><section><h4>数据存储与检索机制对比<a href="#数据存储与检索机制对比"><span>#</span></a></h4><p>B 树：每一个结点（包括根、内部结点、叶子结点）都同时存储关键字和实际数据记录（或数据指针）。只要在某一层命中关键字，就可以立刻返回数据，不需要走到叶子层。</p><p>B+ 树：所有实际数据记录全部且仅存储在叶子结点；非叶子结点只充当纯粹的“路由索引”，
不挂载实际数据。检索任何数据都必须一路走到最底层的叶子结点。</p></section><section><h4>叶子结点的连接（链表结构）<a href="#叶子结点的连接链表结构"><span>#</span></a></h4><p>B 树：叶子结点之间相互独立，没有指针相连。</p><p>B+ 树：所有叶子结点按照关键字大小顺序排列，并通过双向（或单向）链表连接成一个有序链表。</p></section><section><h4>关键字重复性<a href="#关键字重复性"><span>#</span></a></h4><p>B 树：各结点的关键字在全树中只出现一次，绝不重复。</p><p>B+ 树：叶子结点包含全树的所有关键字全集；出现在内部结点中的关键字，在其子树对应的叶子结点中依然会重复出现。</p></section><section><h4>需要注意<a href="#需要注意"><span>#</span></a></h4><p>最后需要注意的是，B 树和 B+ 树的树高都不要把空指针或空结点计入。
B 树的叶子结点可以存储关键字和数据记录；B+ 树的实际数据记录统一存储在叶子结点。</p><p>叶子节点指的是“空”结点，即非索引结点，为数据结点。</p></section></section><section><h3>散列表<a href="#散列表"><span>#</span></a></h3><section><h4>散列函数<a href="#散列函数"><span>#</span></a></h4><ul>
<li>除留余数法</li>
<li>二次散列法</li>
<li>平方取中法</li>
<li>数字分析法</li>
</ul><p>可以注意，除留余数法一般选取质数作为模数。</p><p>对于平方取中和数字分析法，可以理解为对关键字进行平方运算或分析关键字的一部分作为散列地址。</p><p>比如说手机尾号就可以采用数字分析法。</p></section><section><h4>冲突处理 - 开放定址法<a href="#冲突处理---开放定址法"><span>#</span></a></h4><ul>
<li>线性探测法，又称线性探测再散列法。</li>
<li>二次探测法，又称二次探测再散列法。</li>
<li>双散列法</li>
<li>伪随机数法</li>
</ul><p>这里主要是记住一下名字问题，考研中对于上面出现的词汇都有用到过。</p></section><section><h4>冲突处理 - 拉链法<a href="#冲突处理---拉链法"><span>#</span></a></h4><p>拉链法是链地址法，将冲突的元素存储在链表中。</p><p>主要处理一下散列表 ASL 和查找失败 ASL，并且注意计算的时候，要注意散列表本身的长度。</p></section><section><h4>散列表的装填因子与 ASL<a href="#散列表的装填因子与-asl"><span>#</span></a></h4><p>装填因子 <span><span>α=nm\alpha=\frac{n}{m}</span><span><span><span></span><span>α</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>m</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，其中 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 是表中的记录数，<span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 是散列地址的个数。它衡量表的装满程度，和表长本身无关。</p><p>开放定址法的 ASL 主要取决于 <span><span>α\alpha</span><span><span><span></span><span>α</span></span></span></span>：<span><span>α\alpha</span><span><span><span></span><span>α</span></span></span></span> 越大冲突越多，ASL 越长，一般要求 <span><span>α≤0.75\alpha\le 0.75</span><span><span><span></span><span>α</span><span></span><span>≤</span><span></span></span><span><span></span><span>0.75</span></span></span></span>。</p><p>拉链法允许 <span><span>α&gt;1\alpha&gt;1</span><span><span><span></span><span>α</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>1</span></span></span></span>，因为链表可以一直挂下去；<span><span>α\alpha</span><span><span><span></span><span>α</span></span></span></span> 较大时，拉链法的平均查找长度增长比开放定址法慢。</p><p>需要注意，算 ASL 时分母是谁：查找成功的 ASL 除以记录数 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>，查找失败的 ASL 除以散列地址的个数 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span>。</p><p>线性探测法的失败 ASL 要一直探测到空位置才算失败，所以算的是“从每个散列地址出发到第一个空位的探测次数”的平均值，分母同样是 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span>。</p></section></section></section>
<section><h2>第 8 章 - 排序<a href="#第-8-章---排序"><span>#</span></a></h2><section><h3>考纲 - 排序<a href="#考纲---排序"><span>#</span></a></h3><ul>
<li>排序的基本概念</li>
<li>插入排序：直接插入排序、折半插入排序、希尔排序</li>
<li>交换排序：冒泡排序、快速排序</li>
<li>选择排序：简单选择排序、堆排序</li>
<li>归并排序、基数排序</li>
<li>各种排序算法的比较</li>
<li>外部排序：多路平衡归并与败者树、置换 - 选择排序、最佳归并树</li>
</ul></section><section><h3>排序的基本概念<a href="#排序的基本概念"><span>#</span></a></h3><p>排序的稳定性指的是：关键字相同的两个元素，排序前后相对次序不变，就称这个算法稳定。</p><p>内部排序指数据全部放在内存里完成排序；外部排序指数据量太大，需要多次在内外存之间交换。</p><p>按思想分类：插入类（直接插入、折半插入、希尔）、交换类（冒泡、快排）、选择类（简单选择、堆）、归并类、分配类（基数、计数）。</p><p>需要注意，稳定性是针对算法本身的性质，和具体数据无关；“某个序列用某算法一趟后的结果”这类题，要按算法每一步的实际执行来推，不能只看结论。</p><p>插入排序可以理解为扑克牌的排序，每次将一个元素插入到已排序的序列中，直到所有元素都插入到已排序的序列中。</p><p>适用于顺序表和链表。</p><section><h4>直接插入排序<a href="#直接插入排序"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>insertSort</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>1</span><span>; i </span><span>&lt;</span><span> n; i</span><span>++</span><span>) {</span></div></div><div><div><div>3</div></div><div><span>        </span><span>int</span><span> temp </span><span>=</span><span> </span><span>A</span><span>[i];</span></div></div><div><div><div>4</div></div><div><span>        </span><span>int</span><span> j </span><span>=</span><span> i </span><span>-</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>5</div></div><div><span>        </span><span>while</span><span> (j </span><span>&gt;=</span><span> </span><span>0</span><span> </span><span>&amp;&amp;</span><span> </span><span>A</span><span>[j] </span><span>&gt;</span><span> temp) {</span></div></div><div><div><div>6</div></div><div><span>            </span><span>A</span><span>[j </span><span>+</span><span> </span><span>1</span><span>] </span><span>=</span><span> </span><span>A</span><span>[j];</span></div></div><div><div><div>7</div></div><div><span><span>            </span></span><span>j</span><span>--</span><span>;</span></div></div><div><div><div>8</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span>        </span><span>A</span><span>[j </span><span>+</span><span> </span><span>1</span><span>] </span><span>=</span><span> temp;</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>为稳定排序。</p></section><section><h4>折半插入排序<a href="#折半插入排序"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>binaryInsertSort</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>1</span><span>; i </span><span>&lt;</span><span> n; i</span><span>++</span><span>) {</span></div></div><div><div><div>3</div></div><div><span>        </span><span>int</span><span> temp </span><span>=</span><span> </span><span>A</span><span>[i];</span></div></div><div><div><div>4</div></div><div><span>        </span><span>int</span><span> left </span><span>=</span><span> </span><span>0</span><span>, right </span><span>=</span><span> i </span><span>-</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>5</div></div><div><span>        </span><span>while</span><span> (left </span><span>&lt;=</span><span> right) {</span></div></div><div><div><div>6</div></div><div><span>            </span><span>int</span><span> mid </span><span>=</span><span> (left </span><span>+</span><span> right) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>7</div></div><div><span>            </span><span>if</span><span> (</span><span>A</span><span>[mid] </span><span>&gt;</span><span> temp) right </span><span>=</span><span> mid </span><span>-</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>8</div></div><div><span>            </span><span>else</span><span> left </span><span>=</span><span> mid </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>9</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>10</div></div><div><span>        </span><span>for</span><span> (</span><span>int</span><span> j </span><span>=</span><span> i; j </span><span>&gt;</span><span> left; j</span><span>--</span><span>) {</span></div></div><div><div><div>11</div></div><div><span>            </span><span>A</span><span>[j] </span><span>=</span><span> </span><span>A</span><span>[j </span><span>-</span><span> </span><span>1</span><span>];</span></div></div><div><div><div>12</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>        </span><span>A</span><span>[left] </span><span>=</span><span> temp;</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>仅仅是改变了比较次数，但是移动次数不变。</p><p>为稳定排序。</p></section><section><h4>希尔排序<a href="#希尔排序"><span>#</span></a></h4><p>希尔排序不确定时间复杂度，但是时间复杂度范围在 <span><span>O(n1.3)O(n^{1.3})</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span><span>1.3</span></span></span></span></span></span></span></span></span><span>)</span></span></span></span> 到 <span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span> 之间。</p><p>主要理解这个算法的思想，按照轴，以及比较次数，默认是按照插入排序，并不是一个稳定的排序算法。</p></section></section><section><h3>交换排序<a href="#交换排序"><span>#</span></a></h3><section><h4>冒泡排序<a href="#冒泡排序"><span>#</span></a></h4><p>需要注意的是，考研范围内的冒泡排序是默认如果扫一趟没有发生交换，则认为已经排序完成。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>bubbleSort</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> n </span><span>-</span><span> </span><span>1</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>3</div></div><div><span>        </span><span>bool</span><span> swapped </span><span>=</span><span> </span><span>false</span><span>;</span></div></div><div><div><div>4</div></div><div><span>        </span><span>for</span><span> (</span><span>int</span><span> j </span><span>=</span><span> </span><span>0</span><span>; j </span><span>&lt;</span><span> n </span><span>-</span><span> i </span><span>-</span><span> </span><span>1</span><span>; j</span><span>++</span><span>) {</span></div></div><div><div><div>5</div></div><div><span>            </span><span>if</span><span> (</span><span>A</span><span>[j] </span><span>&gt;</span><span> </span><span>A</span><span>[j </span><span>+</span><span> </span><span>1</span><span>]) {</span></div></div><div><div><div>6</div></div><div><span>                </span><span>int</span><span> temp </span><span>=</span><span> </span><span>A</span><span>[j];</span></div></div><div><div><div>7</div></div><div><span>                </span><span>A</span><span>[j] </span><span>=</span><span> </span><span>A</span><span>[j </span><span>+</span><span> </span><span>1</span><span>];</span></div></div><div><div><div>8</div></div><div><span>                </span><span>A</span><span>[j </span><span>+</span><span> </span><span>1</span><span>] </span><span>=</span><span> temp;</span></div></div><div><div><div>9</div></div><div><span><span>                </span></span><span>swapped </span><span>=</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>10</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>        </span><span>if</span><span> (</span><span>!</span><span>swapped) </span><span>break</span><span>;</span><span> // 一趟没有发生交换，说明已经有序</span></div></div><div><div><div>13</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>14</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>为稳定排序，最好情况（本来有序）只需一趟比较，<span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>。</p></section><section><h4>快速排序<a href="#快速排序"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>partition</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>l</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>r</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> pivot </span><span>=</span><span> </span><span>A</span><span>[l];</span></div></div><div><div><div>3</div></div><div><span>    </span><span>while</span><span> (l </span><span>&lt;</span><span> r) {</span></div></div><div><div><div>4</div></div><div><span>        </span><span>while</span><span> (l </span><span>&lt;</span><span> r </span><span>&amp;&amp;</span><span> </span><span>A</span><span>[r] </span><span>&gt;=</span><span> pivot) r</span><span>--</span><span>;</span></div></div><div><div><div>5</div></div><div><span>        </span><span>A</span><span>[l] </span><span>=</span><span> </span><span>A</span><span>[r];</span></div></div><div><div><div>6</div></div><div><span>        </span><span>while</span><span> (l </span><span>&lt;</span><span> r </span><span>&amp;&amp;</span><span> </span><span>A</span><span>[l] </span><span>&lt;=</span><span> pivot) l</span><span>++</span><span>;</span></div></div><div><div><div>7</div></div><div><span>        </span><span>A</span><span>[r] </span><span>=</span><span> </span><span>A</span><span>[l];</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span>    </span><span>A</span><span>[l] </span><span>=</span><span> pivot;</span></div></div><div><div><div>10</div></div><div><span>    </span><span>return</span><span> l;</span></div></div><div><div><div>11</div></div><div><span>}</span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>void</span><span> </span><span>quickSort</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>l</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>r</span><span>) {</span></span></div></div><div><div><div>14</div></div><div><span>    </span><span>if</span><span> (l </span><span>&gt;=</span><span> r) </span><span>return</span><span>;</span></div></div><div><div><div>15</div></div><div><span>    </span><span>int</span><span> pivot </span><span>=</span><span> </span><span>partition</span><span>(A, l, r);</span></div></div><div><div><div>16</div></div><div><span>    </span><span>quickSort</span><span>(A, l, pivot </span><span>-</span><span> </span><span>1</span><span>);</span></div></div><div><div><div>17</div></div><div><span>    </span><span>quickSort</span><span>(A, pivot </span><span>+</span><span> </span><span>1</span><span>, r);</span></div></div><div><div><div>18</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section></section><section><h3>选择排序<a href="#选择排序"><span>#</span></a></h3><p>简单选择排序，适用于数组和链表。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>selectSort</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>n</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> n </span><span>-</span><span> </span><span>1</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>3</div></div><div><span>        </span><span>int</span><span> minIndex </span><span>=</span><span> i;</span></div></div><div><div><div>4</div></div><div><span>        </span><span>for</span><span> (</span><span>int</span><span> j </span><span>=</span><span> i </span><span>+</span><span> </span><span>1</span><span>; j </span><span>&lt;</span><span> n; j</span><span>++</span><span>) {</span></div></div><div><div><div>5</div></div><div><span>            </span><span>if</span><span> (</span><span>A</span><span>[j] </span><span>&lt;</span><span> </span><span>A</span><span>[minIndex]) minIndex </span><span>=</span><span> j;</span></div></div><div><div><div>6</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>7</div></div><div><span>        </span><span>int</span><span> temp </span><span>=</span><span> </span><span>A</span><span>[i];</span></div></div><div><div><div>8</div></div><div><span>        </span><span>A</span><span>[i] </span><span>=</span><span> </span><span>A</span><span>[minIndex];</span></div></div><div><div><div>9</div></div><div><span>        </span><span>A</span><span>[minIndex] </span><span>=</span><span> temp;</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>为不稳定排序。</p><section><h4>堆排序<a href="#堆排序"><span>#</span></a></h4><p>采用双亲表示法，具体而言，对于从小到大的排序，首先是建立一个大根堆，然后根据大根堆的性质，将堆顶元素与待排序的最后一个元素交换，然后调整堆，直到堆为空。</p><p>为不稳定排序。</p><p>这里需要注意比较次数，例如从下往上调整，即便已经找到位置，也是和上面那个元素比较完之后，才确认当前位置。</p><p>堆排序的时间复杂度为 <span><span>O(n+nlog⁡n)O(n+n\log n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>n</span><span></span><span>lo<span>g</span></span><span></span><span>n</span><span>)</span></span></span></span>：建堆花费 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>，每次筛选调整花费 <span><span>O(log⁡n)O(\log n)</span><span><span><span></span><span>O</span><span>(</span><span>lo<span>g</span></span><span></span><span>n</span><span>)</span></span></span></span>，一共调整 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次，所以最终是 <span><span>O(nlog⁡n)O(n\log n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>lo<span>g</span></span><span></span><span>n</span><span>)</span></span></span></span>。</p><p>空间复杂度是 <span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span>，只在数组内部交换，递归或迭代都不需要额外数组。</p></section></section><section><h3>归并排序<a href="#归并排序"><span>#</span></a></h3><p>归并排序，采用分治法，具体而言，对于从小到大的排序，首先是将待排序的序列分成两个子序列，然后对两个子序列进行排序，然后合并两个子序列。</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>merge</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>l</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>mid</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>r</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> i </span><span>=</span><span> l, j </span><span>=</span><span> mid </span><span>+</span><span> </span><span>1</span><span>, k </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>temp</span><span>[r </span><span>-</span><span> l </span><span>+</span><span> </span><span>1</span><span>];</span></div></div><div><div><div>4</div></div><div><span>    </span><span>while</span><span> (i </span><span>&lt;=</span><span> mid </span><span>&amp;&amp;</span><span> j </span><span>&lt;=</span><span> r) {</span></div></div><div><div><div>5</div></div><div><span>        </span><span>if</span><span> (</span><span>A</span><span>[i] </span><span>&lt;=</span><span> </span><span>A</span><span>[j]) </span><span>temp</span><span>[k</span><span>++</span><span>] </span><span>=</span><span> </span><span>A</span><span>[i</span><span>++</span><span>];</span></div></div><div><div><div>6</div></div><div><span>        </span><span>else</span><span> </span><span>temp</span><span>[k</span><span>++</span><span>] </span><span>=</span><span> </span><span>A</span><span>[j</span><span>++</span><span>];</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>8</div></div><div><span>    </span><span>// 如果左边还有剩余，则将左边剩余的元素放入 temp 中</span></div></div><div><div><div>9</div></div><div><span>    </span><span>while</span><span> (i </span><span>&lt;=</span><span> mid) </span><span>temp</span><span>[k</span><span>++</span><span>] </span><span>=</span><span> </span><span>A</span><span>[i</span><span>++</span><span>];</span></div></div><div><div><div>10</div></div><div><span>    </span><span>// 如果右边还有剩余，则将右边剩余的元素放入 temp 中</span></div></div><div><div><div>11</div></div><div><span>    </span><span>while</span><span> (j </span><span>&lt;=</span><span> r) </span><span>temp</span><span>[k</span><span>++</span><span>] </span><span>=</span><span> </span><span>A</span><span>[j</span><span>++</span><span>];</span></div></div><div><div><div>12</div></div><div><span>    </span><span>// 将 temp 中的元素放入 A 中</span></div></div><div><div><div>13</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> k; i</span><span>++</span><span>) </span><span>A</span><span>[l </span><span>+</span><span> i] </span><span>=</span><span> </span><span>temp</span><span>[i];</span></div></div><div><div><div>14</div></div><div><span>}</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>void</span><span> </span><span>mergeSort</span><span>(</span><span>int</span><span><span> </span><span>A</span></span><span>[]</span><span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>l</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>r</span><span>) {</span></span></div></div><div><div><div>17</div></div><div><span>    </span><span>if</span><span> (l </span><span>&gt;=</span><span> r) </span><span>return</span><span>;</span></div></div><div><div><div>18</div></div><div><span>    </span><span>int</span><span> mid </span><span>=</span><span> (l </span><span>+</span><span> r) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>19</div></div><div><span>    </span><span>mergeSort</span><span>(A, l, mid);</span></div></div><div><div><div>20</div></div><div><span>    </span><span>mergeSort</span><span>(A, mid </span><span>+</span><span> </span><span>1</span><span>, r);</span></div></div><div><div><div>21</div></div><div><span>    </span><span>merge</span><span>(A, l, mid, r);</span></div></div><div><div><div>22</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>需要消耗 O(n) 空间复杂度。</p></section><section><h3>基数排序<a href="#基数排序"><span>#</span></a></h3><p>基数排序不是基于比较的算法，而是基于分配和收集的算法。</p><p>准备桶：因为是十进制，我们准备 0 到 9 一共 10 个桶。</p><p>第一轮（按个位分配与收集）：</p><p>分配：看每个数的个位数，把它们分别扔进对应的桶里。
收集：按 0 到 9 号桶的顺序，把里面的米袋依次倒出来排成一排。此时，个位数小的肯定排在前面。</p><p>第二轮（按十位分配与收集）：</p><p>分配：拿刚才收集好的顺序，看它们的十位数，再次分别扔进 0 到 9 号桶。
收集：再次按 0 到 9 号桶顺序倒出来。</p><p>以此类推：直到处理完最高位（百位）。处理完最后一轮收集后，所有数据就已经整整齐齐地排好序了。</p><p>两种处理方式：</p><p>LSD（Least Significant Digit）：从最低位（个位）开始往高位排，最常用，实现也最简单。</p><p>MSD（Most Significant Digit）：从最高位开始排，通常需要用递归去分治处理子桶。</p><p>复杂度与特性：</p><p>时间复杂度：<span><span>O(d⋅(n+k))O(d \cdot (n + k))</span><span><span><span></span><span>O</span><span>(</span><span>d</span><span></span><span>⋅</span><span></span></span><span><span></span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>k</span><span>))</span></span></span></span></p><ul>
<li><span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 是待排元素个数。</li>
<li><span><span>dd</span><span><span><span></span><span>d</span></span></span></span> 是数字的最大位数（比如最大三位数 <span><span>d=3d=3</span><span><span><span></span><span>d</span><span></span><span>=</span><span></span></span><span><span></span><span>3</span></span></span></span>）。</li>
<li><span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 是基数（比如十进制 <span><span>k=10k=10</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span>10</span></span></span></span>）。</li>
<li>如果 <span><span>dd</span><span><span><span></span><span>d</span></span></span></span> 很小，它的运行速度几乎是线性的。</li>
</ul><p>空间复杂度：<span><span>O(n+k)O(n + k)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>k</span><span>)</span></span></span></span>（需要额外的桶空间来装数据）。</p><p>稳定性：稳定！每次收集时一定要保证先放进桶里的先出来（FIFO），否则上一轮排好的相对顺序就被打乱了。</p></section><section><h3>计数排序<a href="#计数排序"><span>#</span></a></h3><p>即首先记录每个元素出现的次数，然后根据这个次数去还原。</p></section><section><h3>各种排序方法的比较<a href="#各种排序方法的比较"><span>#</span></a></h3>

<table><thead><tr><th>排序方法</th><th>最好时间复杂度</th><th>最坏时间复杂度</th><th>平均时间复杂度</th><th>空间复杂度</th><th>稳定性</th><th>适用存储结构</th><th>核心考点与特征简评</th></tr></thead><tbody><tr><td>直接插入排序</td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td><td>稳定</td><td>顺序表、链表</td><td>序列基本有序或数据量小时效率最高；链表插入无需移动元素。</td></tr><tr><td>折半插入排序</td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td><td>稳定</td><td>仅顺序表</td><td>仅利用二分查找减少了比较次数，元素移动次数未变；不支持链表。</td></tr><tr><td>希尔排序</td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td>约 <span><span>O(n1.3)O(n^{1.3})</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span><span>1.3</span></span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td><td>不稳定</td><td>仅顺序表</td><td>缩小增量排序；跳跃式比较插入导致相同元素相对顺序被打乱。</td></tr><tr><td>冒泡排序</td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td><td>稳定</td><td>顺序表、链表</td><td>增加交换标志位可使最好时间达 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>；每趟均有一个元素到达全局最终位置。</td></tr><tr><td>快速排序</td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td>最优 <span><span>O(log⁡2n)O(\log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span>最差 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td><td>不稳定</td><td>顺序表</td><td>内部排序中综合平均性能最好；空间开销主要来自递归调用栈；序列基本有序时退化为最差。</td></tr><tr><td>简单选择排序</td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td><td>不稳定</td><td>顺序表、链表</td><td>比较次数与序列初始状态完全无关，恒为 <span><span>n(n−1)/2n(n - 1)/2</span><span><span><span></span><span>n</span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span>/2</span></span></span></span>；移动次数最少。</td></tr><tr><td>堆排序</td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span></td><td>不稳定</td><td>仅顺序表</td><td>适合从海量数据中选出 Top-K；建堆时间复杂度为 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>，筛选调整为 <span><span>O(log⁡2n)O(\log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span>。</td></tr><tr><td>二路归并排序</td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span></td><td><span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span></td><td>稳定</td><td>顺序表、链表</td><td>性能稳定，时间复杂度与初态无关；辅助数组空间开销大（<span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>）。</td></tr><tr><td>基数排序</td><td><span><span>O(d(n+r))O(d(n + r))</span><span><span><span></span><span>O</span><span>(</span><span>d</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>r</span><span>))</span></span></span></span></td><td><span><span>O(d(n+r))O(d(n + r))</span><span><span><span></span><span>O</span><span>(</span><span>d</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>r</span><span>))</span></span></span></span></td><td><span><span>O(d(n+r))O(d(n + r))</span><span><span><span></span><span>O</span><span>(</span><span>d</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>r</span><span>))</span></span></span></span></td><td><span><span>O(r)O(r)</span><span><span><span></span><span>O</span><span>(</span><span>r</span><span>)</span></span></span></span></td><td>稳定</td><td>顺序表、链表</td><td>非基于比较的分配式排序；<span><span>dd</span><span><span><span></span><span>d</span></span></span></span> 为关键字位数，<span><span>rr</span><span><span><span></span><span>r</span></span></span></span> 为基数（如十进制 <span><span>r=10r=10</span><span><span><span></span><span>r</span><span></span><span>=</span><span></span></span><span><span></span><span>10</span></span></span></span>）。</td></tr><tr><td>计数排序</td><td><span><span>O(n+k)O(n + k)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>k</span><span>)</span></span></span></span></td><td><span><span>O(n+k)O(n + k)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>k</span><span>)</span></span></span></span></td><td><span><span>O(n+k)O(n + k)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>k</span><span>)</span></span></span></span></td><td><span><span>O(k)O(k)</span><span><span><span></span><span>O</span><span>(</span><span>k</span><span>)</span></span></span></span></td><td>稳定</td><td>顺序表</td><td>非基于比较的排序；<span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 为数值范围（<span><span>Max−Min+1Max - Min + 1</span><span><span><span></span><span>M</span><span>a</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>M</span><span>in</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>），<span><span>k≤O(n)k \le O(n)</span><span><span><span></span><span>k</span><span></span><span>≤</span><span></span></span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span> 时线性高效。</td></tr></tbody></table></section><section><h3>外部排序<a href="#外部排序"><span>#</span></a></h3><p>外部排序要解决的是数据量大于内存，所以必须分块调入、排序、写回，再做多路归并。</p><p>时间开销主要在内外存之间的读写上，所以优化的方向就是减少读写次数，也就是减少归并趟数。</p><section><h4>外部排序三部曲<a href="#外部排序三部曲"><span>#</span></a></h4><p>生成归并段 - 生成归并顺序 - 自下而上的归并</p></section><section><h4>生成归并段<a href="#生成归并段"><span>#</span></a></h4><p>土办法生成归并段：把内存装满，内部排序一遍写成有序段，再读下一块，直到文件读完。</p><p>利用置换选择排序生成归并段：用一个小顶堆维护内存缓冲区，每次输出堆顶并从外存补一个元素，得到的新归并段平均长度是内存容量的两倍，而不是土办法的正好等于内存容量。</p><p>需要注意，置换选择得到的归并段长度不稳定，可能很长也可能很短，这也是后面要用最佳归并树的原因。</p></section><section><h4>生成归并顺序<a href="#生成归并顺序"><span>#</span></a></h4><p>不生成归并顺序随意归并：按归并段生成的先后顺序两两归并。</p><p>利用 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 叉哈夫曼树，即最佳归并树：把每个归并段的长度当作权值，构造 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 叉哈夫曼树，WPL 就是总读写开销，WPL 最小的方案就是最优归并方案。</p><p>需要注意，构造 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 叉哈夫曼树时归并段个数可能不够，要补虚段：当 <span><span>(n−1) mod (k−1)≠0(n-1)\bmod(k-1)\ne 0</span><span><span><span></span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span></span><span><span><span>mod</span></span></span><span></span><span></span></span><span><span></span><span>(</span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span> 时，补 <span><span>(k−1)−(n−1) mod (k−1)(k-1)-(n-1)\bmod(k-1)</span><span><span><span></span><span>(</span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>(</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span></span><span><span><span>mod</span></span></span><span></span><span></span></span><span><span></span><span>(</span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span> 个长度为 0 的虚段，否则最后会出现不满 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 路的归并，代价反而更大。</p></section><section><h4>自下而上的归并<a href="#自下而上的归并"><span>#</span></a></h4><p><span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 个初始归并段做 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 路平衡归并，归并趟数为</p><span><span><span>s=⌈log⁡km⌉s=\lceil\log_k m\rceil</span><span><span><span></span><span>s</span><span></span><span>=</span><span></span></span><span><span></span><span>⌈</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>k</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>m</span><span>⌉</span></span></span></span></span><p>所以增大 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 或减少 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 都能减少趟数；但 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 太大时内部比较次数会增加，需要败者树来降低。</p><p>线性扫描归并：每输出一个元素都要比较 <span><span>k−1k-1</span><span><span><span></span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次，一趟归并 <span><span>NN</span><span><span><span></span><span>N</span></span></span></span> 个元素，时间复杂度为 <span><span>O(Nk)O(Nk)</span><span><span><span></span><span>O</span><span>(</span><span>N</span><span>k</span><span>)</span></span></span></span>。</p><p>利用败者树进行归并：比较次数降到 <span><span>O(Nlog⁡k)O(N\log k)</span><span><span><span></span><span>O</span><span>(</span><span>N</span><span></span><span>lo<span>g</span></span><span></span><span>k</span><span>)</span></span></span></span>，<span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 越大收益越明显。</p></section></section></section>
<section><h2>真题辨析<a href="#真题辨析"><span>#</span></a></h2><section><h3>代码题 - 数组相关<a href="#代码题---数组相关"><span>#</span></a></h3><section><h4>数组相关基本操作<a href="#数组相关基本操作"><span>#</span></a></h4><ul>
<li>快速排序</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>  </span><span>int</span><span> </span><span>partition</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[], </span></span><span>int</span><span><span> </span><span>l</span><span>, </span></span><span>int</span><span><span> </span><span>r</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>int</span><span> </span><span>pivot</span><span> </span><span>=</span><span> </span><span>A</span><span>[</span><span>l</span><span>];</span></div></div><div><div><div>3</div></div><div><span>    </span><span>while</span><span> (</span><span>l</span><span> </span><span>&lt;</span><span> </span><span>r</span><span>) {</span></div></div><div><div><div>4</div></div><div><span>      </span><span>while</span><span> (</span><span>l</span><span> </span><span>&lt;</span><span> </span><span>r</span><span> </span><span>&amp;&amp;</span><span> </span><span>A</span><span>[</span><span>r</span><span>] </span><span>&gt;=</span><span> </span><span>pivot</span><span>) </span><span>r</span><span>--</span><span>;</span></div></div><div><div><div>5</div></div><div><span>      </span><span>A</span><span>[</span><span>l</span><span>] </span><span>=</span><span> </span><span>A</span><span>[</span><span>r</span><span>];</span></div></div><div><div><div>6</div></div><div><span>      </span><span>while</span><span> (</span><span>l</span><span> </span><span>&lt;</span><span> </span><span>r</span><span> </span><span>&amp;&amp;</span><span> </span><span>A</span><span>[</span><span>l</span><span>] </span><span>&lt;=</span><span> </span><span>pivot</span><span>) </span><span>l</span><span>++</span><span>;</span></div></div><div><div><div>7</div></div><div><span>      </span><span>A</span><span>[</span><span>r</span><span>] </span><span>=</span><span> </span><span>A</span><span>[</span><span>l</span><span>];</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span>    </span><span>A</span><span>[</span><span>l</span><span>] </span><span>=</span><span> </span><span>pivot</span><span>;</span></div></div><div><div><div>10</div></div><div><span>    </span><span>return</span><span> </span><span>l</span><span>;</span></div></div><div><div><div>11</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>  </span><span>void</span><span> </span><span>quickSort</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[], </span></span><span>int</span><span><span> </span><span>l</span><span>, </span></span><span>int</span><span><span> </span><span>r</span><span>) {</span></span></div></div><div><div><div>13</div></div><div><span>    </span><span>if</span><span> (</span><span>l</span><span> </span><span>&gt;=</span><span> </span><span>r</span><span>) </span><span>return</span><span>;</span></div></div><div><div><div>14</div></div><div><span>    </span><span>int</span><span> </span><span>pivot</span><span> </span><span>=</span><span> </span><span>partition</span><span>(</span><span>A</span><span>, </span><span>l</span><span>, </span><span>r</span><span>);</span></div></div><div><div><div>15</div></div><div><span>    </span><span>quickSort</span><span>(</span><span>A</span><span>, </span><span>l</span><span>, </span><span>pivot</span><span> </span><span>-</span><span> </span><span>1</span><span>);</span></div></div><div><div><div>16</div></div><div><span>    </span><span>quickSort</span><span>(</span><span>A</span><span>, </span><span>pivot</span><span> </span><span>+</span><span> </span><span>1</span><span>, </span><span>r</span><span>);</span></div></div><div><div><div>17</div></div><div><span><span>  </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ul>
<li>
<p>归并排序</p>
<div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>void</span><span> </span><span>merge</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[], </span></span><span>int</span><span><span> </span><span>l</span><span>, </span></span><span>int</span><span><span> </span><span>mid</span><span>, </span></span><span>int</span><span><span> </span><span>r</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>  </span><span>int</span><span> </span><span>i</span><span> </span><span>=</span><span> </span><span>l</span><span>, </span><span>j</span><span> </span><span>=</span><span> </span><span>mid</span><span> </span><span>+</span><span> </span><span>1</span><span>, </span><span>k</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>3</div></div><div><span>  </span><span>int</span><span> </span><span>temp</span><span>[</span><span>r</span><span> </span><span>-</span><span> </span><span>l</span><span> </span><span>+</span><span> </span><span>1</span><span>];</span></div></div><div><div><div>4</div></div><div><span>  </span><span>while</span><span> (</span><span>i</span><span> </span><span>&lt;=</span><span> </span><span>mid</span><span> </span><span>&amp;&amp;</span><span> </span><span>j</span><span> </span><span>&lt;=</span><span> </span><span>r</span><span>) {</span></div></div><div><div><div>5</div></div><div><span>    </span><span>if</span><span> (</span><span>A</span><span>[</span><span>i</span><span>] </span><span>&lt;=</span><span> </span><span>A</span><span>[</span><span>j</span><span>]) </span><span>temp</span><span>[</span><span>k</span><span>++</span><span>] </span><span>=</span><span> </span><span>A</span><span>[</span><span>i</span><span>++</span><span>];</span></div></div><div><div><div>6</div></div><div><span>    </span><span>else</span><span> </span><span>temp</span><span>[</span><span>k</span><span>++</span><span>] </span><span>=</span><span> </span><span>A</span><span>[</span><span>j</span><span>++</span><span>];</span></div></div><div><div><div>7</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>8</div></div><div><span>  </span><span>while</span><span> (</span><span>i</span><span> </span><span>&lt;=</span><span> </span><span>mid</span><span>) </span><span>temp</span><span>[</span><span>k</span><span>++</span><span>] </span><span>=</span><span> </span><span>A</span><span>[</span><span>i</span><span>++</span><span>];</span></div></div><div><div><div>9</div></div><div><span>  </span><span>while</span><span> (</span><span>j</span><span> </span><span>&lt;=</span><span> </span><span>r</span><span>) </span><span>temp</span><span>[</span><span>k</span><span>++</span><span>] </span><span>=</span><span> </span><span>A</span><span>[</span><span>j</span><span>++</span><span>];</span></div></div><div><div><div>10</div></div><div><span>  </span><span>for</span><span> (</span><span>int</span><span> </span><span>i</span><span> </span><span>=</span><span> </span><span>0</span><span>; </span><span>i</span><span> </span><span>&lt;</span><span> </span><span>k</span><span>; </span><span>i</span><span>++</span><span>) </span><span>A</span><span>[</span><span>l</span><span> </span><span>+</span><span> </span><span>i</span><span>] </span><span>=</span><span> </span><span>temp</span><span>[</span><span>i</span><span>];</span></div></div><div><div><div>11</div></div><div><span>}</span></div></div><div><div><div>12</div></div><div><span>void</span><span> </span><span>mergeSort</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[], </span></span><span>int</span><span><span> </span><span>l</span><span>, </span></span><span>int</span><span><span> </span><span>r</span><span>) {</span></span></div></div><div><div><div>13</div></div><div><span>  </span><span>if</span><span> (</span><span>l</span><span> </span><span>&gt;=</span><span> </span><span>r</span><span>) </span><span>return</span><span>;</span></div></div><div><div><div>14</div></div><div><span>  </span><span>int</span><span> </span><span>mid</span><span> </span><span>=</span><span> (</span><span>l</span><span> </span><span>+</span><span> </span><span>r</span><span>) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>15</div></div><div><span>  </span><span>mergeSort</span><span>(</span><span>A</span><span>, </span><span>l</span><span>, </span><span>mid</span><span>);</span></div></div><div><div><div>16</div></div><div><span>  </span><span>mergeSort</span><span>(</span><span>A</span><span>, </span><span>mid</span><span> </span><span>+</span><span> </span><span>1</span><span>, </span><span>r</span><span>);</span></div></div><div><div><div>17</div></div><div><span>  </span><span>merge</span><span>(</span><span>A</span><span>, </span><span>l</span><span>, </span><span>mid</span><span>, </span><span>r</span><span>);</span></div></div><div><div><div>18</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div>
</li>
<li>
<p>二分查找及其变式</p>
<div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 普通二分查找</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>binarySearch</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[], </span></span><span>int</span><span><span> </span><span>n</span><span>, </span></span><span>int</span><span><span> </span><span>key</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span>  </span><span>int</span><span> </span><span>left</span><span> </span><span>=</span><span> </span><span>0</span><span>, </span><span>right</span><span> </span><span>=</span><span> </span><span>n</span><span> </span><span>-</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>4</div></div><div><span>  </span><span>while</span><span>(</span><span>left</span><span> </span><span>&lt;=</span><span> </span><span>right</span><span>) {</span></div></div><div><div><div>5</div></div><div><span>    </span><span>int</span><span> </span><span>mid</span><span> </span><span>=</span><span> (</span><span>left</span><span> </span><span>+</span><span> </span><span>right</span><span>) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>6</div></div><div><span>    </span><span>if</span><span>(</span><span>A</span><span>[</span><span>mid</span><span>] </span><span>==</span><span> </span><span>key</span><span>) </span><span>return</span><span> </span><span>mid</span><span>;</span></div></div><div><div><div>7</div></div><div><span>    </span><span>else</span><span> </span><span>if</span><span>(</span><span>A</span><span>[</span><span>mid</span><span>] </span><span>&lt;</span><span> </span><span>key</span><span>) </span><span>left</span><span> </span><span>=</span><span> </span><span>mid</span><span> </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>8</div></div><div><span>    </span><span>else</span><span> </span><span>right</span><span> </span><span>=</span><span> </span><span>mid</span><span> </span><span>-</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>10</div></div><div><span>  </span><span>return</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>11</div></div><div><span>}</span></div></div><div><div><div>12</div></div><div><span>// 查找第一个大于等于 key 的元素</span></div></div><div><div><div>13</div></div><div><span>int</span><span> </span><span>binarySearchFirst</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[], </span></span><span>int</span><span><span> </span><span>n</span><span>, </span></span><span>int</span><span><span> </span><span>key</span><span>) {</span></span></div></div><div><div><div>14</div></div><div><span>  </span><span>int</span><span> </span><span>left</span><span> </span><span>=</span><span> </span><span>0</span><span>, </span><span>right</span><span> </span><span>=</span><span> </span><span>n</span><span>;</span></div></div><div><div><div>15</div></div><div><span>  </span><span>while</span><span> (</span><span>left</span><span> </span><span>&lt;</span><span> </span><span>right</span><span>) {</span></div></div><div><div><div>16</div></div><div><span>    </span><span>int</span><span> </span><span>mid</span><span> </span><span>=</span><span> </span><span>left</span><span> </span><span>+</span><span> (</span><span>right</span><span> </span><span>-</span><span> </span><span>left</span><span>) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>17</div></div><div><span>    </span><span>if</span><span> (</span><span>A</span><span>[</span><span>mid</span><span>] </span><span>&gt;=</span><span> </span><span>key</span><span>) </span><span>right</span><span> </span><span>=</span><span> </span><span>mid</span><span>;</span></div></div><div><div><div>18</div></div><div><span>    </span><span>else</span><span> </span><span>left</span><span> </span><span>=</span><span> </span><span>mid</span><span> </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>19</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>20</div></div><div><span>  </span><span>return</span><span> </span><span>left</span><span> </span><span>&lt;</span><span> </span><span>n</span><span> </span><span>?</span><span> </span><span>left</span><span> </span><span>:</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>21</div></div><div><span>}</span></div></div><div><div><div>22</div></div><div><span>// 查找最后一个小于等于 key 的元素</span></div></div><div><div><div>23</div></div><div><span>int</span><span> </span><span>binarySearchLast</span><span>(</span><span>int</span><span><span> </span><span>A</span><span>[], </span></span><span>int</span><span><span> </span><span>n</span><span>, </span></span><span>int</span><span><span> </span><span>key</span><span>) {</span></span></div></div><div><div><div>24</div></div><div><span>  </span><span>int</span><span> </span><span>left</span><span> </span><span>=</span><span> </span><span>0</span><span>, </span><span>right</span><span> </span><span>=</span><span> </span><span>n</span><span>;</span></div></div><div><div><div>25</div></div><div><span>  </span><span>while</span><span> (</span><span>left</span><span> </span><span>&lt;</span><span> </span><span>right</span><span>) {</span></div></div><div><div><div>26</div></div><div><span>    </span><span>int</span><span> </span><span>mid</span><span> </span><span>=</span><span> </span><span>left</span><span> </span><span>+</span><span> (</span><span>right</span><span> </span><span>-</span><span> </span><span>left</span><span>) </span><span>/</span><span> </span><span>2</span><span>;</span></div></div><div><div><div>27</div></div><div><span>    </span><span>if</span><span> (</span><span>A</span><span>[</span><span>mid</span><span>] </span><span>&lt;=</span><span> </span><span>key</span><span>) </span><span>left</span><span> </span><span>=</span><span> </span><span>mid</span><span> </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>28</div></div><div><span>    </span><span>else</span><span> </span><span>right</span><span> </span><span>=</span><span> </span><span>mid</span><span>;</span></div></div><div><div><div>29</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>30</div></div><div><span>  </span><span>return</span><span> </span><span>left</span><span> </span><span>&gt;</span><span> </span><span>0</span><span> </span><span>?</span><span> </span><span>left</span><span> </span><span>-</span><span> </span><span>1</span><span> </span><span>:</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>31</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div>
</li>
</ul></section><section><h4>空间换时间（哈希 / 缓存）<a href="#空间换时间哈希--缓存"><span>#</span></a></h4><p>核心本质：利用额外的存储空间（如哈希表、前缀数组、备忘录）预存信息，将耗时的重复查找从 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span> 降到 <span><span>O(1)O(1)</span><span><span><span></span><span>O</span><span>(</span><span>1</span><span>)</span></span></span></span>。</p><p>应用场景：两数之和（查哈希表看补数是否存在）、计数排序、前缀和、动态规划状态记录。</p></section><section><h4>双指针思想<a href="#双指针思想"><span>#</span></a></h4><p>核心本质：利用序列的有序性或方向性，通过两个下标协同移动，将两重暴力循环 <span><span>O(n2)O(n^2)</span><span><span><span></span><span>O</span><span>(</span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span> 压缩成一次线性扫描 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>。</p><p>常见分类：</p><p>对撞指针（一头一尾向中间靠拢）：有序数组求和、回文串判定、二分查找。</p><p>快慢指针 / 滑动窗口（同向不同速）：链表判环、寻找链表中点、原地去重（如移除零）、变长子数组极值。</p></section><section><h4>划分思想<a href="#划分思想"><span>#</span></a></h4><p>核心本质：选取一个基准，单趟扫描将数据严格分割为“小于基准”和“大于基准”的两部分，确定基准的最终排位。</p><p>应用场景：</p><p>快速排序：递归对划分出的左右两段继续排序。</p><p>快速选择（Quick Select）：找第 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 大/小元素，每次只递归进入一边，平均时间复杂度降为 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>。</p></section><section><h4>归并思想（Merge / 分治合并）<a href="#归并思想merge--分治合并"><span>#</span></a></h4><p>核心本质：“先分后治、由底至上”。将原序列递归切分成单元素有序段，再通过双指针将两个有序子序列合并为一个更大的有序序列。</p><p>应用场景：</p><p>归并排序：时间复杂度极度稳定在 <span><span>O(nlog⁡2n)O(n \log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span>。</p><p>求逆序对个数：在合并有序数组的过程中顺便统计逆序数。</p><p>合并多个有序链表/数组。</p></section></section><section><h3>代码题 - 链表相关<a href="#代码题---链表相关"><span>#</span></a></h3><section><h4>单链表相关操作<a href="#单链表相关操作"><span>#</span></a></h4><ul>
<li>反转链表（使用带头节点的单链表，头插法置换）</li>
</ul><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>  </span><span>void</span><span> </span><span>reverseList</span><span>(</span><span>ListNode</span><span> </span><span>*</span><span><span>list</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span> (</span><span>list</span><span> </span><span>==</span><span> </span><span>nullptr</span><span>) </span><span>return</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>ListNode</span><span> </span><span>*</span><span>prev</span><span> </span><span>=</span><span> </span><span>nullptr</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>ListNode</span><span> </span><span>*</span><span>curr</span><span> </span><span>=</span><span> </span><span>list</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>while</span><span> (</span><span>curr</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>) {</span></div></div><div><div><div>6</div></div><div><span>      </span><span>ListNode</span><span> </span><span>*</span><span>next</span><span> </span><span>=</span><span> </span><span>curr</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>7</div></div><div><span>      </span><span>curr</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>prev</span><span>;</span></div></div><div><div><div>8</div></div><div><span>      </span><span>prev</span><span> </span><span>=</span><span> </span><span>curr</span><span>;</span></div></div><div><div><div>9</div></div><div><span>      </span><span>curr</span><span> </span><span>=</span><span> </span><span>next</span><span>;</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span>    </span><span>list</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>prev</span><span>;</span></div></div><div><div><div>12</div></div><div><span><span>  </span></span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li>
<p>反转链表（使用不带头节点的单链表，原地置换）</p>
<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>ListNode</span><span> </span><span>*</span><span>reverseList</span><span>(</span><span>ListNode</span><span> </span><span>*</span><span><span>list</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>  </span><span>ListNode</span><span> </span><span>*</span><span>prev</span><span> </span><span>=</span><span> </span><span>nullptr</span><span>;</span></div></div><div><div><div>3</div></div><div><span>  </span><span>while</span><span> (</span><span>list</span><span> </span><span>!=</span><span> </span><span>nullptr</span><span>) {</span></div></div><div><div><div>4</div></div><div><span>    </span><span>ListNode</span><span> </span><span>*</span><span>next</span><span> </span><span>=</span><span> </span><span>list</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>list</span><span>-&gt;</span><span>next</span><span> </span><span>=</span><span> </span><span>prev</span><span>;</span></div></div><div><div><div>6</div></div><div><span>    </span><span>prev</span><span> </span><span>=</span><span> </span><span>list</span><span>;</span></div></div><div><div><div>7</div></div><div><span>    </span><span>list</span><span> </span><span>=</span><span> </span><span>next</span><span>;</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span>  </span><span>return</span><span> </span><span>prev</span><span>;</span></div></div><div><div><div>10</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div>
</li>
</ul></section></section><section><h3>代码题 - 树相关<a href="#代码题---树相关"><span>#</span></a></h3><p>如果考代码题，一定是基于三种遍历去考。首先需要思考到底是基于先序遍历，中序遍历还是后序遍历，然后思考遍历左子树之前需要做什么，之后需要做什么，遍历右子树之前需要做什么，之后需要做什么。</p><section><h4>计算 WPL<a href="#计算-wpl"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> wpl </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>void</span><span> </span><span>calculateWPL</span><span><span>(</span><span>TreeNode </span></span><span>*</span><span><span>root</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>depth</span><span>) {</span></span></div></div><div><div><div>4</div></div><div><span>    </span><span>if</span><span> (root </span><span>==</span><span> nullptr) </span><span>return</span><span>;</span></div></div><div><div><div>5</div></div><div><span>    </span><span>if</span><span> (</span><span>root</span><span>-&gt;</span><span>left</span><span> </span><span>==</span><span> nullptr </span><span>&amp;&amp;</span><span> </span><span>root</span><span>-&gt;</span><span>right</span><span> </span><span>==</span><span> nullptr) wpl </span><span>+=</span><span> depth </span><span>*</span><span> </span><span>root</span><span>-&gt;</span><span>weight</span><span>;</span></div></div><div><div><div>6</div></div><div><span>    </span><span>calculateWPL</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>, depth </span><span>+</span><span> </span><span>1</span><span>);</span></div></div><div><div><div>7</div></div><div><span>    </span><span>calculateWPL</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>, depth </span><span>+</span><span> </span><span>1</span><span>);</span></div></div><div><div><div>8</div></div><div><span>}</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>int</span><span> </span><span>getWPL</span><span><span>(</span><span>TreeNode </span></span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>calculateWPL</span><span>(root, </span><span>1</span><span>);</span></div></div><div><div><div>12</div></div><div><span>    </span><span>return</span><span> wpl;</span></div></div><div><div><div>13</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>计算树的深度<a href="#计算树的深度"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 利用递归计算树的深度</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>getDepth</span><span><span>(</span><span>TreeNode </span></span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span>    </span><span>if</span><span> (root </span><span>==</span><span> nullptr) </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> leftDepth </span><span>=</span><span> </span><span>getDepth</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>);</span></div></div><div><div><div>5</div></div><div><span>    </span><span>int</span><span> rightDepth </span><span>=</span><span> </span><span>getDepth</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>);</span></div></div><div><div><div>6</div></div><div><span>    </span><span>return</span><span> </span><span>max</span><span>(leftDepth, rightDepth) </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>7</div></div><div><span>}</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>// 利用层次遍历计算树的深度</span></div></div><div><div><div>10</div></div><div><span>int</span><span> </span><span>getDepth</span><span><span>(</span><span>TreeNode </span></span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>if</span><span> (root </span><span>==</span><span> nullptr) </span><span>return</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>12</div></div><div><span>    </span><span>int</span><span> </span><span>queue</span><span>[MAX_SIZE];</span></div></div><div><div><div>13</div></div><div><span>    </span><span>int</span><span> front </span><span>=</span><span> </span><span>0</span><span>, rear </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>14</div></div><div><span>    </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> root;</span></div></div><div><div><div>15</div></div><div><span>    </span><span>int</span><span> depth </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>16</div></div><div><span>    </span><span>while</span><span> (front </span><span>!=</span><span> rear) {</span></div></div><div><div><div>17</div></div><div><span><span>        </span></span><span>depth</span><span>++</span><span>;</span></div></div><div><div><div>18</div></div><div><span>        </span><span>int</span><span> size </span><span>=</span><span> rear </span><span>-</span><span> front;</span></div></div><div><div><div>19</div></div><div><span>        </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> size; i</span><span>++</span><span>) {</span></div></div><div><div><div>20</div></div><div><span><span>            </span></span><span>TreeNode </span><span>*</span><span>node </span><span>=</span><span> </span><span>queue</span><span>[front</span><span>++</span><span>];</span></div></div><div><div><div>21</div></div><div><span>            </span><span>if</span><span> (</span><span>node</span><span>-&gt;</span><span>left</span><span> </span><span>!=</span><span> nullptr) </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> </span><span>node</span><span>-&gt;</span><span>left</span><span>;</span></div></div><div><div><div>22</div></div><div><span>            </span><span>if</span><span> (</span><span>node</span><span>-&gt;</span><span>right</span><span> </span><span>!=</span><span> nullptr) </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> </span><span>node</span><span>-&gt;</span><span>right</span><span>;</span></div></div><div><div><div>23</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>24</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>25</div></div><div><span>    </span><span>return</span><span> depth;</span></div></div><div><div><div>26</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>中序遍历输出带符号的中缀表达式<a href="#中序遍历输出带符号的中缀表达式"><span>#</span></a></h4><p>将给定的表达式二叉树转换为等价的中缀表达式。</p><p>思路为除了深度为根和叶子结点之外，遍历左子树之前需要输出左括号，遍历右子树之后需要输出右括号。</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 二叉树结点定义</span></div></div><div><div><div>2</div></div><div><span>typedef</span><span> </span><span>struct</span><span> node {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>char</span><span> </span><span>data</span><span>[</span><span>10</span><span>];</span><span> // 存储操作数或操作符</span></div></div><div><div><div>4</div></div><div><span>    </span><span>struct</span><span> node </span><span>*</span><span>left, </span><span>*</span><span>right;</span></div></div><div><div><div>5</div></div><div><span>} BTree;</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>// 递归转换并输出中缀表达式</span></div></div><div><div><div>8</div></div><div><span>void</span><span> </span><span>BtreeToExp</span><span><span>(</span><span>BTree </span></span><span>*</span><span><span>root</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>deep</span><span>) {</span></span></div></div><div><div><div>9</div></div><div><span>    </span><span>if</span><span> (root </span><span>==</span><span> </span><span>NULL</span><span>) {</span></div></div><div><div><div>10</div></div><div><span>        </span><span>return</span><span>;</span><span> // 空树直接返回</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>    </span><span>// 判断是否为叶子结点</span></div></div><div><div><div>14</div></div><div><span>    </span><span>if</span><span> (</span><span>root</span><span>-&gt;</span><span>left</span><span> </span><span>==</span><span> </span><span>NULL</span><span> </span><span>&amp;&amp;</span><span> </span><span>root</span><span>-&gt;</span><span>right</span><span> </span><span>==</span><span> </span><span>NULL</span><span>) {</span></div></div><div><div><div>15</div></div><div><span>        </span><span>// 叶子结点为操作数，直接输出</span></div></div><div><div><div>16</div></div><div><span>        </span><span>printf</span><span>(</span><span>"</span><span>%s</span><span>"</span><span>, </span><span>root</span><span>-&gt;</span><span>data</span><span>);</span></div></div><div><div><div>17</div></div><div><span><span>    </span></span><span>} </span><span>else</span><span> {</span></div></div><div><div><div>18</div></div><div><span>        </span><span>// 分支结点（操作符）：若不是根结点（deep &gt; 1），则加左括号</span></div></div><div><div><div>19</div></div><div><span>        </span><span>if</span><span> (deep </span><span>&gt;</span><span> </span><span>1</span><span>) {</span></div></div><div><div><div>20</div></div><div><span>            </span><span>printf</span><span>(</span><span>"("</span><span>);</span></div></div><div><div><div>21</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>22</div></div><div>
</div></div><div><div><div>23</div></div><div><span>        </span><span>// 递归遍历左子树</span></div></div><div><div><div>24</div></div><div><span>        </span><span>BtreeToExp</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>, deep </span><span>+</span><span> </span><span>1</span><span>);</span></div></div><div><div><div>25</div></div><div>
</div></div><div><div><div>26</div></div><div><span>        </span><span>// 访问当前根结点的操作符</span></div></div><div><div><div>27</div></div><div><span>        </span><span>printf</span><span>(</span><span>"</span><span>%s</span><span>"</span><span>, </span><span>root</span><span>-&gt;</span><span>data</span><span>);</span></div></div><div><div><div>28</div></div><div>
</div></div><div><div><div>29</div></div><div><span>        </span><span>// 递归遍历右子树</span></div></div><div><div><div>30</div></div><div><span>        </span><span>BtreeToExp</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>, deep </span><span>+</span><span> </span><span>1</span><span>);</span></div></div><div><div><div>31</div></div><div>
</div></div><div><div><div>32</div></div><div><span>        </span><span>// 分支结点（操作符）：若不是根结点（deep &gt; 1），则加右括号</span></div></div><div><div><div>33</div></div><div><span>        </span><span>if</span><span> (deep </span><span>&gt;</span><span> </span><span>1</span><span>) {</span></div></div><div><div><div>34</div></div><div><span>            </span><span>printf</span><span>(</span><span>")"</span><span>);</span></div></div><div><div><div>35</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>36</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>37</div></div><div><span>}</span></div></div><div><div><div>38</div></div><div>
</div></div><div><div><div>39</div></div><div><span>// 对外接口函数（从深度 1 开始调用）</span></div></div><div><div><div>40</div></div><div><span>void</span><span> </span><span>BtreeToE</span><span><span>(</span><span>BTree </span></span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>41</div></div><div><span>    </span><span>BtreeToExp</span><span>(root, </span><span>1</span><span>);</span></div></div><div><div><div>42</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>计算树的平衡因子<a href="#计算树的平衡因子"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>int</span><span> </span><span>calculateBalanceFactor</span><span><span>(</span><span>TreeNode </span></span><span>*</span><span><span>root</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>    </span><span>if</span><span> (root </span><span>==</span><span> nullptr) </span><span>return</span><span>;</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> leftHeight </span><span>=</span><span> </span><span>getHeight</span><span>(</span><span>root</span><span>-&gt;</span><span>left</span><span>);</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> rightHeight </span><span>=</span><span> </span><span>getHeight</span><span>(</span><span>root</span><span>-&gt;</span><span>right</span><span>);</span></div></div><div><div><div>5</div></div><div><span>    </span><span>root</span><span>-&gt;</span><span>balanceFactor</span><span> </span><span>=</span><span> leftHeight </span><span>-</span><span> rightHeight;</span></div></div><div><div><div>6</div></div><div><span>    </span><span>return</span><span> </span><span>max</span><span>(leftHeight, rightHeight) </span><span>+</span><span> </span><span>1</span><span>;</span></div></div><div><div><div>7</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section><section><h3>代码题 - 图相关<a href="#代码题---图相关"><span>#</span></a></h3><section><h4>计算邻接矩阵的度<a href="#计算邻接矩阵的度"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 计算入度</span></div></div><div><div><div>2</div></div><div><span>int</span><span> </span><span>getIndegree</span><span>(</span><span>int</span><span> </span><span>G</span><span><span>[N][N]</span><span>,</span><span> </span></span><span>int</span><span> </span><span>indegree</span><span><span>[N]</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> N; i</span><span>++</span><span>) {</span></div></div><div><div><div>4</div></div><div><span>        </span><span>for</span><span> (</span><span>int</span><span> j </span><span>=</span><span> </span><span>0</span><span>; j </span><span>&lt;</span><span> N; j</span><span>++</span><span>) {</span></div></div><div><div><div>5</div></div><div><span>            </span><span>if</span><span> (</span><span>G</span><span>[j][i] </span><span>==</span><span> </span><span>1</span><span>) </span><span>indegree</span><span>[i]</span><span>++</span><span>;</span></div></div><div><div><div>6</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>8</div></div><div><span>}</span></div></div><div><div><div>9</div></div><div><span>// 计算出度</span></div></div><div><div><div>10</div></div><div><span>int</span><span> </span><span>getOutdegree</span><span>(</span><span>int</span><span> </span><span>G</span><span><span>[N][N]</span><span>,</span><span> </span></span><span>int</span><span> </span><span>outdegree</span><span><span>[N]</span><span>) {</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> N; i</span><span>++</span><span>) {</span></div></div><div><div><div>12</div></div><div><span>        </span><span>for</span><span> (</span><span>int</span><span> j </span><span>=</span><span> </span><span>0</span><span>; j </span><span>&lt;</span><span> N; j</span><span>++</span><span>) {</span></div></div><div><div><div>13</div></div><div><span>            </span><span>if</span><span> (</span><span>G</span><span>[i][j] </span><span>==</span><span> </span><span>1</span><span>) </span><span>outdegree</span><span>[i]</span><span>++</span><span>;</span></div></div><div><div><div>14</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>15</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>16</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>计算邻接表的度<a href="#计算邻接表的度"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 定义邻接表</span></div></div><div><div><div>2</div></div><div><span>typedef</span><span> </span><span>struct</span><span> Node {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> data;</span></div></div><div><div><div>4</div></div><div><span>    </span><span>struct</span><span> Node </span><span>*</span><span>next;</span></div></div><div><div><div>5</div></div><div><span>} Node;</span></div></div><div><div><div>6</div></div><div><span>typedef</span><span> </span><span>struct</span><span> Graph {</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>Node </span><span>*</span><span>vertices</span><span>[N];</span></div></div><div><div><div>8</div></div><div><span>} Graph;</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>// 计算入度，需要在横着遍历的时候，加该结点的入度</span></div></div><div><div><div>11</div></div><div><span>int</span><span> </span><span>getIndegree</span><span><span>(</span><span>Graph </span><span>G</span><span>,</span><span> </span></span><span>int</span><span> </span><span>indegree</span><span><span>[N]</span><span>) {</span></span></div></div><div><div><div>12</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> N; i</span><span>++</span><span>) {</span></div></div><div><div><div>13</div></div><div><span><span>        </span></span><span>Node </span><span>*</span><span>p </span><span>=</span><span> </span><span>G</span><span>.</span><span>vertices</span><span>[i]-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>14</div></div><div><span>        </span><span>while</span><span> (p </span><span>!=</span><span> nullptr) {</span></div></div><div><div><div>15</div></div><div><span>            </span><span>indegree</span><span>[</span><span>p</span><span>-&gt;</span><span>data</span><span>]</span><span>++</span><span>;</span></div></div><div><div><div>16</div></div><div><span><span>            </span></span><span>p </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>17</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>19</div></div><div><span>}</span></div></div><div><div><div>20</div></div><div>
</div></div><div><div><div>21</div></div><div><span>// 计算出度，只需要 1 次邻接表即可</span></div></div><div><div><div>22</div></div><div><span>int</span><span> </span><span>getOutdegree</span><span><span>(</span><span>Graph </span><span>G</span><span>,</span><span> </span></span><span>int</span><span> </span><span>outdegree</span><span><span>[N]</span><span>) {</span></span></div></div><div><div><div>23</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> N; i</span><span>++</span><span>) {</span></div></div><div><div><div>24</div></div><div><span><span>        </span></span><span>Node </span><span>*</span><span>p </span><span>=</span><span> </span><span>G</span><span>.</span><span>vertices</span><span>[i]-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>25</div></div><div><span>        </span><span>while</span><span> (p </span><span>!=</span><span> nullptr) {</span></div></div><div><div><div>26</div></div><div><span>            </span><span>outdegree</span><span>[i]</span><span>++</span><span>;</span></div></div><div><div><div>27</div></div><div><span><span>            </span></span><span>p </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>next</span><span>;</span></div></div><div><div><div>28</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>29</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>30</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>拓扑排序思想的应用<a href="#拓扑排序思想的应用"><span>#</span></a></h4><ul>
<li>核心本质与应用：
<ul>
<li>用于解决有向无环图（DAG）中的任务依赖排序（如编译依赖、课程先修顺序）。</li>
<li>亦可用于有向图判环（若拓扑排序输出的顶点数小于总顶点数，说明存在环）。</li>
</ul>
</li>
<li>算法思路：
<ul>
<li>统计每个顶点的入度，将入度为 0 的顶点入队；</li>
<li>每次出队一个顶点并输出，同时将其所有邻接点的入度减 1；</li>
<li>若邻接点入度减为 0，则入队；重复此过程直至队列为空。</li>
</ul>
</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 拓扑排序代码（邻接表存储）</span></div></div><div><div><div>2</div></div><div><span>bool</span><span> </span><span>TopologicalSort</span><span><span>(</span><span>ALGraph </span><span>G</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>indegree</span><span>[MAX_VERTEX_NUM] </span><span>=</span><span> {</span><span>0</span><span>};</span></div></div><div><div><div>4</div></div><div><span>    </span><span>// 统计各顶点的入度</span></div></div><div><div><div>5</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>vexnum</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>6</div></div><div><span>        </span><span>for</span><span> (ArcNode </span><span>*</span><span>p </span><span>=</span><span> </span><span>G</span><span>.</span><span>vertices</span><span>[i].</span><span>firstarc</span><span>; p </span><span>!=</span><span> </span><span>NULL</span><span>; p </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>nextarc</span><span>) {</span></div></div><div><div><div>7</div></div><div><span>            </span><span>indegree</span><span>[</span><span>p</span><span>-&gt;</span><span>adjvex</span><span>]</span><span>++</span><span>;</span></div></div><div><div><div>8</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>9</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>    </span><span>int</span><span> </span><span>queue</span><span>[MAX_VERTEX_NUM], front </span><span>=</span><span> </span><span>0</span><span>, rear </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>12</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>vexnum</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>13</div></div><div><span>        </span><span>if</span><span> (</span><span>indegree</span><span>[i] </span><span>==</span><span> </span><span>0</span><span>) </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> i;</span><span> // 入度为 0 入队</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>    </span><span>int</span><span> count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>17</div></div><div><span>    </span><span>while</span><span> (front </span><span>&lt;</span><span> rear) {</span></div></div><div><div><div>18</div></div><div><span>        </span><span>int</span><span> u </span><span>=</span><span> </span><span>queue</span><span>[front</span><span>++</span><span>];</span></div></div><div><div><div>19</div></div><div><span>        </span><span>printf</span><span>(</span><span>"</span><span>%d</span><span> "</span><span>, u);</span></div></div><div><div><div>20</div></div><div><span><span>        </span></span><span>count</span><span>++</span><span>;</span></div></div><div><div><div>21</div></div><div><span>        </span><span>for</span><span> (ArcNode </span><span>*</span><span>p </span><span>=</span><span> </span><span>G</span><span>.</span><span>vertices</span><span>[u].</span><span>firstarc</span><span>; p </span><span>!=</span><span> </span><span>NULL</span><span>; p </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>nextarc</span><span>) {</span></div></div><div><div><div>22</div></div><div><span>            </span><span>int</span><span> v </span><span>=</span><span> </span><span>p</span><span>-&gt;</span><span>adjvex</span><span>;</span></div></div><div><div><div>23</div></div><div><span>            </span><span>if</span><span> (</span><span>--</span><span>indegree</span><span>[v] </span><span>==</span><span> </span><span>0</span><span>) {</span></div></div><div><div><div>24</div></div><div><span>                </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> v;</span><span> // 入度减为 0 入队</span></div></div><div><div><div>25</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>26</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>27</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>28</div></div><div><span>    </span><span>return</span><span> count </span><span>==</span><span> </span><span>G</span><span>.</span><span>vexnum</span><span>;</span><span> // 若 count 等于顶点数，说明无环</span></div></div><div><div><div>29</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>BFS 思想的应用（无权图单源最短路径）<a href="#bfs-思想的应用无权图单源最短路径"><span>#</span></a></h4><ul>
<li>核心本质与应用：
<ul>
<li>利用广度优先搜索逐层向外扩张的“波纹”特性，第一次访问到某个顶点时所走的边数，就是从起点到该顶点的最短路径长度。</li>
<li>广泛应用于迷宫寻路、社交网络“六度分割”人际距离计算。</li>
</ul>
</li>
<li>算法思路：
<ul>
<li>维护 <code>visited</code> 数组、距离数组 <code>d[]</code>（初始化为无穷大）以及路径前驱数组 <code>path[]</code>；</li>
<li>起点入队，其距离置为 0；</li>
<li>每次队头出队，遍历其所有未访问过的邻接点，更新邻接点距离为当前距离加 1，记录前驱并将其入队。</li>
</ul>
</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// BFS 求无权图单源最短路径</span></div></div><div><div><div>2</div></div><div><span>void</span><span> </span><span>BFS_ShortestPath</span><span><span>(</span><span>Graph </span><span>G</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>u</span><span>) {</span></span></div></div><div><div><div>3</div></div><div><span>    </span><span>int</span><span> </span><span>d</span><span>[MAX_VERTEX_NUM];</span><span>       // 存储到各结点的最短路径长度</span></div></div><div><div><div>4</div></div><div><span>    </span><span>int</span><span> </span><span>path</span><span>[MAX_VERTEX_NUM];</span><span>    // 存储路径前驱</span></div></div><div><div><div>5</div></div><div><span>    </span><span>bool</span><span> </span><span>visited</span><span>[MAX_VERTEX_NUM] </span><span>=</span><span> {</span><span>false</span><span>};</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> i </span><span>=</span><span> </span><span>0</span><span>; i </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>vexnum</span><span>; i</span><span>++</span><span>) {</span></div></div><div><div><div>8</div></div><div><span>        </span><span>d</span><span>[i] </span><span>=</span><span> INF;</span></div></div><div><div><div>9</div></div><div><span>        </span><span>path</span><span>[i] </span><span>=</span><span> </span><span>-</span><span>1</span><span>;</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span>    </span><span>int</span><span> </span><span>queue</span><span>[MAX_VERTEX_NUM], front </span><span>=</span><span> </span><span>0</span><span>, rear </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>13</div></div><div><span>    </span><span>d</span><span>[u] </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>14</div></div><div><span>    </span><span>visited</span><span>[u] </span><span>=</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>15</div></div><div><span>    </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> u;</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>    </span><span>while</span><span> (front </span><span>&lt;</span><span> rear) {</span></div></div><div><div><div>18</div></div><div><span>        </span><span>int</span><span> curr </span><span>=</span><span> </span><span>queue</span><span>[front</span><span>++</span><span>];</span></div></div><div><div><div>19</div></div><div><span>        </span><span>for</span><span> (</span><span>int</span><span> w </span><span>=</span><span> </span><span>FirstNeighbor</span><span>(G, curr); w </span><span>&gt;=</span><span> </span><span>0</span><span>; w </span><span>=</span><span> </span><span>NextNeighbor</span><span>(G, curr, w)) {</span></div></div><div><div><div>20</div></div><div><span>            </span><span>if</span><span> (</span><span>!</span><span>visited</span><span>[w]) {</span></div></div><div><div><div>21</div></div><div><span>                </span><span>d</span><span>[w] </span><span>=</span><span> </span><span>d</span><span>[curr] </span><span>+</span><span> </span><span>1</span><span>;</span><span>  // 路径长度加 1</span></div></div><div><div><div>22</div></div><div><span>                </span><span>path</span><span>[w] </span><span>=</span><span> curr;</span><span>      // 记录前驱</span></div></div><div><div><div>23</div></div><div><span>                </span><span>visited</span><span>[w] </span><span>=</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>24</div></div><div><span>                </span><span>queue</span><span>[rear</span><span>++</span><span>] </span><span>=</span><span> w;</span></div></div><div><div><div>25</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>26</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>27</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>28</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>DFS 思想的应用（深度优先搜索）<a href="#dfs-思想的应用深度优先搜索"><span>#</span></a></h4><ul>
<li>核心本质与应用：
<ul>
<li>采用“不撞南墙不回头”的穷举/回溯思想，探索从起点出发能够触达的所有可能状态。</li>
<li>常见应用：无向图连通分量计数、寻找所有可行路径、八皇后/全排列回溯搜索、二叉树遍历。</li>
</ul>
</li>
<li>算法思路：
<ul>
<li>访问当前结点并打上已访问标记；</li>
<li>递归访问与当前结点相邻且尚未访问的每一个邻接点；</li>
<li>递归返回时完成回溯。</li>
</ul>
</li>
</ul><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// DFS 遍历图及应用（统计连通分量）</span></div></div><div><div><div>2</div></div><div><span>bool</span><span> </span><span>visited</span><span>[MAX_VERTEX_NUM] </span><span>=</span><span> {</span><span>false</span><span>};</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span>void</span><span> </span><span>DFS</span><span><span>(</span><span>Graph </span><span>G</span><span>,</span><span> </span></span><span>int</span><span><span> </span><span>v</span><span>) {</span></span></div></div><div><div><div>5</div></div><div><span>    </span><span>visited</span><span>[v] </span><span>=</span><span> </span><span>true</span><span>;</span></div></div><div><div><div>6</div></div><div><span>    </span><span>visit</span><span>(v);</span><span> // 访问顶点操作</span></div></div><div><div><div>7</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> w </span><span>=</span><span> </span><span>FirstNeighbor</span><span>(G, v); w </span><span>&gt;=</span><span> </span><span>0</span><span>; w </span><span>=</span><span> </span><span>NextNeighbor</span><span>(G, v, w)) {</span></div></div><div><div><div>8</div></div><div><span>        </span><span>if</span><span> (</span><span>!</span><span>visited</span><span>[w]) {</span></div></div><div><div><div>9</div></div><div><span>            </span><span>DFS</span><span>(G, w);</span><span> // 递归深入</span></div></div><div><div><div>10</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>12</div></div><div><span>}</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>// 遍历整张图，计算连通分量个数</span></div></div><div><div><div>15</div></div><div><span>int</span><span> </span><span>DFSTraverse</span><span><span>(</span><span>Graph </span><span>G</span><span>) {</span></span></div></div><div><div><div>16</div></div><div><span>    </span><span>int</span><span> component_count </span><span>=</span><span> </span><span>0</span><span>;</span></div></div><div><div><div>17</div></div><div><span>    </span><span>for</span><span> (</span><span>int</span><span> v </span><span>=</span><span> </span><span>0</span><span>; v </span><span>&lt;</span><span> </span><span>G</span><span>.</span><span>vexnum</span><span>; v</span><span>++</span><span>) {</span></div></div><div><div><div>18</div></div><div><span>        </span><span>if</span><span> (</span><span>!</span><span>visited</span><span>[v]) {</span></div></div><div><div><div>19</div></div><div><span>            </span><span>DFS</span><span>(G, v);</span></div></div><div><div><div>20</div></div><div><span><span>            </span></span><span>component_count</span><span>++</span><span>;</span><span> // 每次 DFS 调用完代表发现一个新的连通分量</span></div></div><div><div><div>21</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>22</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>23</div></div><div><span>    </span><span>return</span><span> component_count;</span></div></div><div><div><div>24</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section></section><section><h3>应用题 - 线性表的操作<a href="#应用题---线性表的操作"><span>#</span></a></h3><section><h4>受限链表的设计<a href="#受限链表的设计"><span>#</span></a></h4></section><section><h4>受限队列的设计<a href="#受限队列的设计"><span>#</span></a></h4></section></section><section><h3>应用题 - 树<a href="#应用题---树"><span>#</span></a></h3><section><h4>树高，树深等相关计算<a href="#树高树深等相关计算"><span>#</span></a></h4><p>树高、树深等相关计算</p><p>树高与结点数的极值关系：</p><p>设二叉树高度为 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span>：</p><p>结点数最多为：<span><span>2h−12^h - 1</span><span><span><span></span><span><span>2</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>（满二叉树状态）。</p><p>结点数最少为：<span><span>hh</span><span><span><span></span><span>h</span></span></span></span>（退化为单支树）。</p><p>设结点总数为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>：</p><p>完全二叉树的高度为：<span><span>⌊log⁡2n⌋+1\lfloor \log_2 n \rfloor + 1</span><span><span><span></span><span>⌊</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>⌋</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span> 或 <span><span>⌈log⁡2(n+1)⌉\lceil \log_2 (n + 1) \rceil</span><span><span><span></span><span>⌈</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span>)⌉</span></span></span></span>。</p><p>度与结点的严格计数公式：</p><p>总结点数等于所有结点的度数之和加一：<span><span>n=n0+n1+n2+⋯+nm+1n = n_0 + n_1 + n_2 + \dots + n_m + 1</span><span><span><span></span><span>n</span><span></span><span>=</span><span></span></span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p>对于二叉树，度为零的叶子结点数永远比度为二的分支结点数多一个：<span><span>n0=n2+1n_0 = n_2 + 1</span><span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p>树的度与高度推导：</p><p>度为 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 的树中，第 <span><span>ii</span><span><span><span></span><span>i</span></span></span></span> 层最多拥有 <span><span>mi−1m^{i-1}</span><span><span><span></span><span><span>m</span><span><span><span><span><span><span></span><span><span><span>i</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span> 个结点。</p><p>高度为 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span> 的 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 叉树最多拥有 <span><span>mh−1m−1\frac{m^h - 1}{m - 1}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>m</span><span>−</span><span>1</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>m</span><span><span><span><span><span><span></span><span><span>h</span></span></span></span></span></span></span></span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 个结点。</p></section><section><h4>哈夫曼树的应用<a href="#哈夫曼树的应用"><span>#</span></a></h4><p>带权路径长度定义：</p><p>树中所有叶子结点的权值与其到达根结点的路径长度（边数）乘积的总和：
<span><span>WPL=∑i=1nwi×liWPL = \sum_{i=1}^{n} w_i \times l_i</span><span><span><span></span><span>W</span><span>P</span><span>L</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∑</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>w</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>×</span><span></span></span><span><span></span><span><span>l</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></p><p>哈夫曼树的核心性质：</p><p>在所有包含相同叶子权值的扩充二叉树中，哈夫曼树的带权路径长度最小，因此也叫最优二叉树。</p><p>无单分支结点：哈夫曼树中只有度为零和度为二的结点，不存在度为一的结点。若初始权值叶子数为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>，则最终哈夫曼树的总结点数严格为 <span><span>2n−12n - 1</span><span><span><span></span><span>2</span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p>求带权路径长度的巧算技巧：等于所有非叶子分支结点的权值之和（合并过程中产生的所有新结点的累加和）。</p></section><section><h4>哈夫曼思想<a href="#哈夫曼思想"><span>#</span></a></h4><p>前缀编码思想：</p><p>任何一个字符的编码都不能是另一个字符编码的前缀，从而确保在没有分隔符的情况下依然可以无二义性地解码。哈夫曼编码中每个字符均位于叶子结点，因此天然满足前缀编码特性。</p><p>如何编码：</p><p>将每个字符及其出现频次作为权值构建哈夫曼树；</p><p>约定分支走向：通常规定走向左孩子的边标记为 0，走向右孩子的边标记为 1；</p><p>从根结点出发向下遍历到各个叶子结点，将沿途边上的数字依次拼接，即得到该字符的二进制哈夫曼编码（高频字符路径短、编码短；低频字符路径长、编码长，实现数据最优压缩）。</p><p>如何解码：</p><p>从哈夫曼树的根结点出发，依次读入待解码的二进制流；</p><p>遇到 0 走左分支，遇到 1 走右分支；</p><p>一旦落到叶子结点，立即输出该叶子对应的字符；</p><p>随后指针立刻重新返回根结点，继续读入后续位，周而复始。</p></section><section><h4>并查集的基本操作<a href="#并查集的基本操作"><span>#</span></a></h4><p>核心存储：采用双亲表示法（数组），数组索引代表元素编号，数组值存储父结点的索引；根结点的父索引存储负数（负数的绝对值通常代表该集合中的元素总个数）。</p><p>查操作与路径压缩：沿父指针向上寻找所属集合的树根。</p><p>路径压缩优化：在递归查找根结点的回溯过程中，将沿途经过的所有结点的父指针直接指向根结点。使整棵树的高度在查询后瞬间压缩到接近常数阶。</p><p>并操作与按秩合并：将两棵集合树的根结点相连，一棵作为另一棵的子树。</p><p>按秩合并优化（小树挂大树）：将较矮的树或结点数较少的树合并到较高的树下，防止树退化成单链，保证后续操作的高效性。</p></section></section><section><h3>应用题 - 图<a href="#应用题---图"><span>#</span></a></h3><section><h4>最小生成树及其应用<a href="#最小生成树及其应用"><span>#</span></a></h4><p>普里姆算法：</p><p>策略：以“顶点”为中心向外扩张。每次选择距离当前已生成连通子图距离最近的一个新顶点加入集合。</p><p>时间特性与适用：时间复杂度取决于顶点数，为顶点数的平方阶（与边数无直接影响），非常适合求解稠密图的最小生成树。</p><p>克鲁斯卡尔算法：</p><p>策略：以“边”为中心贪心选取。将所有边按权值升序排列，借助并查集检测是否成环，若不构成环则收录该边，直至选够顶点数减一条边。</p><p>时间特性与适用：时间消耗主要在边的排序上，复杂度为边数乘以其对数阶，非常适合求解稀疏图的最小生成树。</p><p>实际应用：通信网络铺设、公路电网规划，以最小的总建造成本联通所有城市或终端。</p></section><section><h4>迪杰斯特拉算法的应用<a href="#迪杰斯特拉算法的应用"><span>#</span></a></h4><p>也是手算。</p></section><section><h4>关键路径的判断<a href="#关键路径的判断"><span>#</span></a></h4><p>主要掌握手算法，不说了。</p></section></section><section><h3>应用题 - 查找<a href="#应用题---查找"><span>#</span></a></h3><section><h4>二叉搜索树，平衡二叉树与红黑树的辨析<a href="#二叉搜索树平衡二叉树与红黑树的辨析"><span>#</span></a></h4><p>二叉搜索树：</p><p>特征：左子树所有结点值小于根结点，右子树所有结点值大于根结点，中序遍历结果严格单调递增。</p><p>缺陷：由于未对平衡性作约束，若插入有序序列，极易退化成一根单链表，使得查找的最坏时间复杂度退化为线性阶 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>。</p><p>平衡二叉树：</p><p>特征：在二叉搜索树的基础上，严格要求任一结点的左右子树高度差绝对值不超过 1。</p><p>性能与平衡代价：</p><p>查找性能极其优秀，树高严格控制在对数阶，查找时间复杂度稳定为 <span><span>O(log⁡2n)O(\log_2 n)</span><span><span><span></span><span>O</span><span>(</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>n</span><span>)</span></span></span></span>。</p><p>不足：由于平衡条件过于严苛，在频繁进行动态插入与删除时，需要触发极其频繁的旋转操作（单旋与双旋）来维持平衡，维护开销过大。</p><p>红黑树：</p><p>特征：一种弱平衡二叉搜索树，通过对结点着色（红/黑）满足五大规则（根黑、叶黑、红不相邻、任意结点到叶结点的黑高相同）。</p><p>平衡程度：从根到任意叶子的最长可能路径不超过最短可能路径的两倍。</p><p>综合辨析与优势：</p><p>相比平衡二叉树，红黑树牺牲了微弱的绝对平衡性，换来了在频繁增删节点时旋转次数的大幅降低（插入最多两次旋转，删除最多三次旋转）。
因此在频繁动态修改的系统级底层应用（如内存管理、集合容器底层实现）中，红黑树的综合运行效率显著优于平衡二叉树。</p></section><section><h4>哈希表的插入与冲突<a href="#哈希表的插入与冲突"><span>#</span></a></h4><p>做题方法：必须留档，也就是</p><p>原数 - 散列过程 - 散列结果。</p><p>一定是要这么写，否则可能会出现低级错误。</p><p>其他问题不大，主要注意一下哈希表的长度在计算冲突时的处理，不要超过哈希表长度即可。</p></section></section><section><h3>应用题 - 排序<a href="#应用题---排序"><span>#</span></a></h3><section><h4>给定排序的分析<a href="#给定排序的分析"><span>#</span></a></h4><p>给出代码分析该排序是否稳定，主要是 = 相关的问题，在比较的时候有可能采用 &gt;=，或者 &gt;，这个操作会导致稳定 / 不稳定。</p><p>在这里还可能考比较次数，交换次数，排序趟数等，需要具体题目具体分析，需要看清楚题设。</p></section><section><h4>内部排序的思想应用<a href="#内部排序的思想应用"><span>#</span></a></h4><ul>
<li>
<p>快排的划分思想</p>
</li>
<li>
<p>归并排序的归并思想</p>
</li>
<li>
<p>堆排序的堆调整思想</p>
<p>堆排序首先需要建堆，建堆的时间复杂度为 <span><span>O(n)O(n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span>)</span></span></span></span>，然后每次调整堆的时间复杂度为 <span><span>O(log⁡n)O(\log n)</span><span><span><span></span><span>O</span><span>(</span><span>lo<span>g</span></span><span></span><span>n</span><span>)</span></span></span></span>，总共需要调整 n 次，所以堆排序的时间复杂度为 <span><span>O(nlog⁡n+n)O(n\log n + n)</span><span><span><span></span><span>O</span><span>(</span><span>n</span><span></span><span>lo<span>g</span></span><span></span><span>n</span><span></span><span>+</span><span></span></span><span><span></span><span>n</span><span>)</span></span></span></span>。</p>
</li>
</ul></section><section><h4>外部排序的应用<a href="#外部排序的应用"><span>#</span></a></h4><p>外部排序主要考置换选择排序。置换选择排序的主要流程为：</p><p>一边输出当前段的最小值，一边读入新数据；能接在后面的就继续接，接不上的就先冻结。即</p><p>设内存工作区（内部缓冲区）最多能容纳 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span> 个记录。</p><ol>
<li>
<p>初始化（装满工作区）
从外存输入文件中连续读入 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span> 个记录，填满内存工作区。在内存中利用这 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span> 个记录建立一个败者树（或最小堆），用于快速挑选最小值。</p>
</li>
<li>
<p>选出并输出当前最小值
从内存的有效记录中选出关键字最小的记录，记为 <span><span>MINMIN</span><span><span><span></span><span>M</span><span>I</span><span>N</span></span></span></span>（或 <span><span>last_vallast\_val</span><span><span><span></span><span>l</span><span>a</span><span>s</span><span>t</span><span>_</span><span>v</span><span>a</span><span>l</span></span></span></span>）。将该记录输出到外存的当前初始归并段文件中。</p>
</li>
<li>
<p>读入新记录并进行“冷冻/激活”判定
从输入文件中读入下一个新记录 <span><span>RR</span><span><span><span></span><span>R</span></span></span></span>，填补刚才被输出记录空出来的内存位置。比较 <span><span>RR</span><span><span><span></span><span>R</span></span></span></span> 的关键字与刚刚输出的 <span><span>MINMIN</span><span><span><span></span><span>M</span><span>I</span><span>N</span></span></span></span>：
情况 A（<span><span>R.key≥MINR.key \ge MIN</span><span><span><span></span><span>R</span><span>.</span><span>k</span><span>ey</span><span></span><span>≥</span><span></span></span><span><span></span><span>M</span><span>I</span><span>N</span></span></span></span>）：
说明新来的数据比刚输出的数据大（或相等），可以顺理成章地排在当前递增序列的后面。将 <span><span>RR</span><span><span><span></span><span>R</span></span></span></span> 标记为“有效”，继续参与当前归并段的最小者竞争。
情况 B（<span><span>R.key&lt;MINR.key &lt; MIN</span><span><span><span></span><span>R</span><span>.</span><span>k</span><span>ey</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>M</span><span>I</span><span>N</span></span></span></span>）：
说明新来的数据比刚才输出的数据还要小，如果放进当前归并段就会破坏单调递增性！因此该记录不能放入当前归并段，将其打上标记（冻结/挂起），它不参与当前归并段的竞争，只能等待生成下一个归并段时再用。</p>
</li>
<li>
<p>重复选择与置换
重新调整败者树/堆，在内存中所有未被冻结的记录中选出新的最小值，输出到当前归并段，并更新 <span><span>MINMIN</span><span><span><span></span><span>M</span><span>I</span><span>N</span></span></span></span>。再次读入新数据，重复上述第 3 步的判断。</p>
</li>
<li>
<p>归并段结束与重置
随着数据不断读入，内存中被“冻结”的记录会越来越多。当内存工作区里的 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span> 个记录全部被冻结（即没有未冻结记录可用）时：
当前初始归并段生成完毕，封口结束。解除内存中所有 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span> 个记录的冻结状态。用这 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span> 个记录重新构建败者树，开启下一个全新的初始归并段。</p>
</li>
<li>
<p>算法终止</p>
</li>
</ol><p>重复上述过程，直到外存中所有的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个待排序数据全部被读取并输出完毕。</p><p>与传统方法的比较：</p><p>传统方法（内部快排等）：每次只能把内存装满 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span> 个数据，排好序直接输出为一段。所以每个归并段的长度固定就是 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span>。</p><p>置换 - 选择排序：由于新读入的数据只要 <span><span>≥MIN\ge MIN</span><span><span><span></span><span>≥</span><span></span></span><span><span></span><span>M</span><span>I</span><span>N</span></span></span></span> 就能顺带输出，归并段就像“扫雪机”一样一边走一边往前推：</p><p>平均长度：约为内存容量的 <span><span>2w2w</span><span><span><span></span><span>2</span><span>w</span></span></span></span>；</p><p>最大长度：数据原本就有序时，可以达到 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span>（一次性把全部数据排完，只生成 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 个归并段）；</p><p>最小长度：数据完全逆序时，长度为 <span><span>ww</span><span><span><span></span><span>w</span></span></span></span>。</p><p>需要注意的是，这个生成的是归并段总数，也就是例如总共生成了 k 个归并段。</p><p>然后利用 m 叉哈夫曼树构造归并顺序，如果叶子节点数量 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 不满足严格构成满 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 叉树的条件，即 <span><span>(k−1)(modm−1)≠0(k - 1) \pmod{m - 1} \ne 0</span><span><span><span></span><span>(</span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span></span></span><span><span></span><span>(</span><span><span><span>mod</span></span></span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span> 时，还需要人为补上权值为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，补充的数量为 <span><span>m−1−(k−1)(modm−1)m - 1 - (k - 1) \pmod{m - 1}</span><span><span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span>(</span><span>k</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span><span></span><span></span></span><span><span></span><span>(</span><span><span><span>mod</span></span></span><span></span><span>m</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span><span>)</span></span></span></span>。</p></section></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/npee/math/</id>
      <title type="text">考研冲刺前的总结 —— 数学（高数 + 线代）</title>
      <published>2026-08-31T00:00:00.000Z</published>
      <updated>2026-08-31T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/npee/math/"/>
      <summary type="text">考研冲刺前的总结 —— 数学（高数 + 线代）</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>这两周 BiZhou University 的计科正在开展不可逃课的两周电气实习，
严重浪费了我考研的时间。趁着被硬控，与其坐在课上发呆，不如趁着这段时间
捋一遍数学 2 的所有知识。</p></section>
<section><h2>研究范式<a href="#研究范式"><span>#</span></a></h2><p>在开始捋知识点之前，我必须先说一下关于研究范式的问题。即便做了很多题，
有的时候对某类题还是不会做。这种情况表现为：非低级错误，只要看了破题口
就瞬间明白了整道题的思路，但是下次这类题稍微变化一下就无从下手。</p><p>什么是研究范式？我个人粗浅的理解就是破题口。考研不会像高考那样，破题口千奇百怪，很多时候你甚至可以在脑子里背一遍大纲，稍微分析一下，就可以得到破题口。</p><p>正所谓武忠祥老师所说：没有条件就创造条件。</p><p>这里举一个例子，零点定理的应用（结合罗尔定理的推论，罗尔定理，拉格朗日中值定理等）。先找几道题：</p><p></p><figure><img alt="例 1：张宇基础 1000" loading="lazy" width="594" height="133" src="/_astro/p1.0leTXto1_Z1clTu.webp" /><figcaption>例 1：张宇基础 1000</figcaption></figure><p></p><p></p><figure><img alt="例 2：张宇基础 30 讲" loading="lazy" width="506" height="55" src="/_astro/p2.z4T5kSTR_4eM9l.webp" /><figcaption>例 2：张宇基础 30 讲</figcaption></figure><p></p><p></p><figure><img alt="例 3：李林强化 880" loading="lazy" width="647" height="65" src="/_astro/p3.CIEoIApp_Ze1wG1.webp" /><figcaption>例 3：李林强化 880</figcaption></figure><p></p><p></p><figure><img alt="例 4：数学 2" loading="lazy" width="662" height="118" src="/_astro/p4.Dj7bMyIs_Z224JMn.webp" /><figcaption>例 4：数学 2</figcaption></figure><p></p><p>这几题都是讨论零点，或者找零点相关的问题。这类题的破题口就是零点定理。</p><p>本质上，讨论零点相关的问题，第一反应一定是零点定理，很多时候，我都会忽视这个最基本的定理，而通过导数，极值等更“高阶”的方法去思考，最后就是得不到答案。</p><p>诚然，很多题目都需要利用高级的技巧，但本质上都是“将题设与结果通过某个桥梁联系起来”，而这个联系起来的东西，就是破题。</p><p>我们往往非常深度于高级技巧，高级方法，却忽略了最基本的东西。</p><p>就好想我在高中阶段那样，深度研究难题，会做难题，却忽略了基本技巧，基本方法，并且在基础部分大量失分。</p><p>例如一个看似复杂的三角式，往往只需要通过
<span><span>cos⁡2x=1−sin⁡2x\cos^2 x=1-\sin^2 x</span><span><span><span></span><span><span>cos</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span><span>sin</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>x</span></span></span></span> 进行转化，就可以得到一个非常简单的式子，
而不需要考虑更复杂的二倍角公式、积化和差等。</p><p>做不好基础的东西，高级方法的基石就是歪的。</p><p>对于应试而言，基础永远是最重要的。</p></section>
<section><h2>高等数学<a href="#高等数学"><span>#</span></a></h2><section><h3>第 1 章 - 函数、极限、连续<a href="#第-1-章---函数极限连续"><span>#</span></a></h3><p>函数，极限与连续，这个是大学刚入门的时候就开始学的，现在回头来看已经信手拈来。</p><section><h4>函数及其性态<a href="#函数及其性态"><span>#</span></a></h4><p>考研要求的函数范围基本是基本初等函数，这里就不列举了。</p><p>主要讲几个关于函数变换的易错点。</p><ul>
<li>
<p>复合函数</p>
<ul>
<li>
<p>如何求复合函数，最简单的方式是画图，并且一定要搞清楚谁作为定义域，谁作为值域，以及最后的定义域是谁。</p>
<p></p><figure><img alt="武忠祥强化讲义" loading="lazy" width="799" height="127" src="/_astro/p5.CU1ORza1_Z18BlT0.webp" /><figcaption>武忠祥强化讲义</figcaption></figure><p></p>
</li>
<li>
<p>原来的两个函数导数函数不存在，不意味着其复合函数导数不存在。</p>
</li>
</ul>
</li>
<li>
<p>反函数</p>
<p>在求反函数的时候，主要有两个易错点。</p>
<ul>
<li>反函数的定义域是原函数的值域，反函数的值域是原函数的定义域。
所以对于具体的点，题目要你求 <span><span>x(0)x(0)</span><span><span><span></span><span>x</span><span>(</span><span>0</span><span>)</span></span></span></span>，那么一定要注意，这个 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 是
<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的值，而不是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的值。</li>
</ul>
<p></p><figure><img alt="李林强化 880" loading="lazy" width="849" height="100" src="/_astro/p7.8Jt5A8Ax_Z1VXOvp.webp" /><figcaption>李林强化 880</figcaption></figure><p></p>
<ul>
<li>
<p>反函数需要注意定义域，关于 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 的反函数，其定义域为
<span><span>[−π2,π2]\left[-\frac{\pi}{2},\frac{\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span>，而不是 <span><span>(−∞,∞)(-\infty,\infty)</span><span><span><span></span><span>(</span><span>−</span><span>∞</span><span>,</span><span></span><span>∞</span><span>)</span></span></span></span>。</p>
<p>如果对于定义域 <span><span>[π2,3π2]\left[\frac{\pi}{2},\frac{3\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span> 的 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span>，
以及定义域为 <span><span>[3π2,5π2]\left[\frac{3\pi}{2},\frac{5\pi}{2}\right]</span><span><span><span></span><span><span><span>[</span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>5</span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>]</span></span></span></span></span></span> 的 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span>，
其反函数分别为 <span><span>π−arcsin⁡x\pi-\arcsin x</span><span><span><span></span><span>π</span><span></span><span>−</span><span></span></span><span><span></span><span>arcsin</span><span></span><span>x</span></span></span></span> 和 <span><span>2π+arcsin⁡x2\pi+\arcsin x</span><span><span><span></span><span>2</span><span>π</span><span></span><span>+</span><span></span></span><span><span></span><span>arcsin</span><span></span><span>x</span></span></span></span>。</p>
<p></p><figure><img alt="张宇强化讲义" loading="lazy" width="516" height="64" src="/_astro/p8.B6mSbx5s_Z1KqqIO.webp" /><figcaption>张宇强化讲义</figcaption></figure><p></p>
<p>此外可以注意，对于定义在 <span><span>[0,π][0,\pi]</span><span><span><span></span><span>[</span><span>0</span><span>,</span><span></span><span>π</span><span>]</span></span></span></span> 上的积分，若有 <span><span>arcsin⁡x\arcsin x</span><span><span><span></span><span>arcsin</span><span></span><span>x</span></span></span></span> 项，
令 <span><span>x=sin⁡tx=\sin t</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>sin</span><span></span><span>t</span></span></span></span> 时，需要注意上述的转换。当然最后可以用区间再现法规避。</p>
<p></p><figure><img alt="张宇强化讲义" loading="lazy" width="439" height="80" src="/_astro/p9.DYpKEjkI_ZcQV3h.webp" /><figcaption>张宇强化讲义</figcaption></figure><p></p>
</li>
<li>
<p>变限函数</p>
<ul>
<li>
<p>变限函数也有两个点需要注意，第一种是如果有 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> ，那么必须利用换元法代换出去，以此又延伸出来两种套路。</p>
<ul>
<li>
<p>如果积分为 <span><span>et2e^{t^2}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>，函数上限为 <span><span>x2x^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，那么一定求导的时候，里面得是 <span><span>ex4e^{x^4}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>，而不是 <span><span>ex2e^{x^2}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>。</p>
<p></p><figure><img alt="张宇强化讲义" loading="lazy" width="698" height="152" src="/_astro/p10.DP2UZPxv_1U78zW.webp" /><figcaption>张宇强化讲义</figcaption></figure><p></p>
</li>
<li>
<p>对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的函数，对 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 的积分项里面有 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span>，可以直接把 <span><span>exe^x</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span></span></span></span> 除下去。</p>
</li>
</ul>
</li>
<li>
<p>变限积分不能全用里面函数的面积去理解，需要结合上下限以及奇偶性去理解。</p>
<p></p><figure><img alt="武忠祥强化讲义" loading="lazy" width="865" height="640" src="/_astro/p12.PKUbLJLi_18tOEL.webp" /><figcaption>武忠祥强化讲义</figcaption></figure><p></p>
</li>
</ul>
</li>
</ul>
</li>
</ul><p>对于上述函数以及基本初等函数，主要讨论函数的性态：单调性，奇偶性，有界性，周期性。</p><p>首先来梳理一下这性态相关的易错点。</p><ul>
<li>
<p>奇函数的导数一定是偶函数，偶函数的导数一定是奇函数。反过来，偶函数的一个原函数不一定是奇函数，奇函数的一个原函数一定可以取为偶函数。</p>
<ul>
<li>这个知识点还会结合变限积分去考察，对于变限积分，需要注意可以取特值下限为 0 的时候进行讨论</li>
</ul>
</li>
<li>
<p>原函数有界，导函数不一定有界。例如令 <span><span>f(0)=0f(0)=0</span><span><span><span></span><span>f</span><span>(</span><span>0</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，且当 <span><span>x≠0x\ne0</span><span><span><span></span><span>x</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span> 时
<span><span>f(x)=xsin⁡1xf(x)=x\sin\frac{1}{x}</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>sin</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，则 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 处有界，但是其导函数
<span><span>f′(x)=sin⁡1x−1xcos⁡1xf'(x)=\sin\frac{1}{x}-\frac{1}{x}\cos\frac{1}{x}</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>sin</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>cos</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 在 <span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 附近无界。</p>
</li>
<li>
<p>在<strong>有限区间上</strong>，导函数有界，原函数一定有界。如果是无限区间的话，可以取 f(x)=x 作为反例。</p>
<p>使用拉格朗日中值定理证明，证明如下：</p>
<p>设 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上连续，在 <span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 上可导，则 <span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 在
<span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 上存在一点 <span><span>cc</span><span><span><span></span><span>c</span></span></span></span>，使得 <span><span>f′(c)=f(b)−f(a)b−af'(c)=\frac{f(b)-f(a)}{b-a}</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>c</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>b</span><span>−</span><span>a</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>b</span><span>)</span><span>−</span><span>f</span><span>(</span><span>a</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p>
<p>由于 <span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 有界，所以在有限区间上 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 一定有界，即原函数一定有界。</p>
</li>
<li>
<p>原函数在有限区间上无界 <span><span>⇒\Rightarrow</span><span><span><span></span><span>⇒</span></span></span></span> 导函数一定无界。</p>
</li>
<li>
<p>原函数有周期性，导函数一定有周期性。</p>
</li>
<li>
<p>导函数有周期性，原函数有周期性的充要条件是在一个周期内的积分为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p>
</li>
<li>
<p>arccosx 不是偶函数也不是奇函数！</p>
</li>
</ul></section><section><h4>极限及其相关问题<a href="#极限及其相关问题"><span>#</span></a></h4></section><section><h4>等价无穷小、高阶无穷小以及泰勒公式<a href="#等价无穷小高阶无穷小以及泰勒公式"><span>#</span></a></h4><p>本质上，等价无穷小就是泰勒公式的第一项，所以，只需要掌握以下 8 个泰勒公式即可。</p><ul>
<li>
<p><span><span>sin⁡x=x−16x3+o(x3)\sin x = x - \frac{1}{6}x^3 + o(x^3)</span><span><span><span></span><span>sin</span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>6</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span>)</span></span></span></span></p>
</li>
<li>
<p><span><span>cos⁡x=1−12x2+124x4+o(x4)\cos x = 1 - \frac{1}{2}x^2 + \frac{1}{24}x^4 + o(x^4)</span><span><span><span></span><span>cos</span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>24</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>4</span></span></span></span></span></span></span></span><span>)</span></span></span></span></p>
</li>
<li>
<p><span><span>tan⁡x=x+13x3+o(x3)\tan x = x + \frac{1}{3}x^3 + o(x^3)</span><span><span><span></span><span>tan</span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span>)</span></span></span></span></p>
</li>
<li>
<p><span><span>arcsin⁡x=x+16x3+o(x3)\arcsin x = x + \frac{1}{6}x^3 + o(x^3)</span><span><span><span></span><span>arcsin</span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>6</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span>)</span></span></span></span></p>
</li>
<li>
<p><span><span>arctan⁡x=x−13x3+o(x3)\arctan x = x - \frac{1}{3}x^3 + o(x^3)</span><span><span><span></span><span>arctan</span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span>)</span></span></span></span></p>
</li>
<li>
<p><span><span>ex=1+x+12x2+16x3+o(x3)e^x = 1 + x + \frac{1}{2}x^2 + \frac{1}{6}x^3 + o(x^3)</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>6</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span>)</span></span></span></span></p>
</li>
<li>
<p><span><span>ln⁡(1+x)=x−12x2+13x3+o(x3)\ln(1+x) = x - \frac{1}{2}x^2 + \frac{1}{3}x^3 + o(x^3)</span><span><span><span></span><span>ln</span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span>)</span></span></span></span></p>
</li>
<li>
<p><span><span>(1+x)a=1+ax+a(a−1)2x2+o(x2)(1+x)^a = 1 + ax + \frac{a(a-1)}{2}x^2 + o(x^2)</span><span><span><span></span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span><span>)</span><span><span><span><span><span><span></span><span><span>a</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>a</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>a</span><span>(</span><span>a</span><span>−</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span></p>
</li>
</ul><p>尤其要注意正负号问题。</p><p>关于高阶无穷小有一个问题，如果 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 是 <span><span>g(x)g(x)</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span></span></span></span> 的高阶无穷小，那么
<span><span>f(x)=o(g(x))f(x)=o(g(x))</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>o</span><span>(</span><span>g</span><span>(</span><span>x</span><span>))</span></span></span></span>，用极限表达也就是
<span><span>lim⁡x→0f(x)g(x)=0\lim_{x\to0}\frac{f(x)}{g(x)}=0</span><span><span><span></span><span><span>lim</span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span>0</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>g</span><span>(</span><span>x</span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><blockquote><p><strong>校验：</strong> 以上展开式使用等号表示带余项的泰勒展开；若只保留首项，
才写作等价无穷小，例如 <span><span>sin⁡x∼x\sin x\sim x</span><span><span><span></span><span>sin</span><span></span><span>x</span><span></span><span>∼</span><span></span></span><span><span></span><span>x</span></span></span></span>。</p></blockquote><p></p><figure><img alt="张宇基础 1000" loading="lazy" width="865" height="531" src="/_astro/p13.D_plhBRR_ZEcjHy.webp" /><figcaption>张宇基础 1000</figcaption></figure><p></p><p>此外还需要注意等价无穷小和等价无穷大（没有这个概念，只是类比）的区别。</p><p>假设 <span><span>m&gt;nm&gt;n</span><span><span><span></span><span>m</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>n</span></span></span></span>，且相关幂函数在所讨论的定义域内有意义，那么当 <span><span>x→0+x\to0^+</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span> 时，
<span><span>xm+xn∼xnx^m+x^n\sim x^n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>∼</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>；当 <span><span>x→+∞x\to+\infty</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span>+</span><span>∞</span></span></span></span> 时，<span><span>xm+xn∼xmx^m+x^n\sim x^m</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>∼</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span></span></span></span></span></span></span></span>。</p></section><section><h4>给定极限计算<a href="#给定极限计算"><span>#</span></a></h4><p>方法流程</p><ol>
<li>判断属于 7 种未定式中的哪一种。</li>
<li>基础变形，利用等价无穷小</li>
<li>（可选）泰勒公式</li>
<li>（可选）拉格朗日中值定理（可能要利用夹逼定理）</li>
<li>必要时使用泰勒公式（需要注意能不能求导）。</li>
</ol></section><section><h4>给定极限求参数<a href="#给定极限求参数"><span>#</span></a></h4><p>往往利用泰勒公式可以迎刃而解。</p><p></p><figure><img alt="张宇基础 30 讲" loading="lazy" width="865" height="175" src="/_astro/p14.ColRCD3K_2kIagb.webp" /><figcaption>张宇基础 30 讲</figcaption></figure><p></p></section><section><h4>洛必达法则<a href="#洛必达法则"><span>#</span></a></h4><p>洛必达法则适用于 <span><span>00\frac{0}{0}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>0</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 和 <span><span>∞∞\frac{\infty}{\infty}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>∞</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>∞</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 型未定式；
在适当条件下，分子有有限极限时也可以处理 <span><span>A∞\frac{A}{\infty}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>∞</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>A</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 型极限。</p><p>洛必达法则可以用柯西中值定理证明。</p><p>这里写一下关于洛必达法则的辨析：如果一个函数在所需邻域内足够光滑，
并且每次都满足洛必达法则的适用条件，才可以连续使用多次；不能仅凭“<span><span>nn</span><span><span><span></span><span>n</span></span></span></span>
阶可导”就直接洛 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 次。</p><p></p><figure><img alt="880" loading="lazy" width="865" height="218" src="/_astro/p15.DGgx7c0K_UWqU0.webp" /><figcaption>880</figcaption></figure><p></p><p><strong>若 <span><span>lim⁡f′(x)g′(x)\lim\dfrac{f'(x)}{g'(x)}</span><span><span><span></span><span>lim</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>g</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 存在（或为 <span><span>∞\infty</span><span><span><span></span><span>∞</span></span></span></span>），则原极限 <span><span>lim⁡f(x)g(x)\lim\dfrac{f(x)}{g(x)}</span><span><span><span></span><span>lim</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>g</span><span>(</span><span>x</span><span>)</span></span></span><span><span></span><span></span></span><span><span></span><span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 必然存在且等于相同的值！</strong></p></section><section><h4>连续<a href="#连续"><span>#</span></a></h4></section><section><h4>函数的极限存在与连续的辨析<a href="#函数的极限存在与连续的辨析"><span>#</span></a></h4><p>函数极限存在：函数左侧极限与右侧极限存在且相等。</p><p>函数连续：函数极限存在且等于函数值，也就是函数左侧极限等于右侧极限等于函数值。</p><p>这点需要辨析，推导至导函数的连续性也是一样的。</p></section><section><h4>间断点分类<a href="#间断点分类"><span>#</span></a></h4><p>第一类间断点：可去间断点，跳跃间断点。</p><p>第二类间断点（考研范围）：无穷间断点，震荡间断点。</p><p>这里主要是注意两个经典函数：<span><span>e1/xe^{1/x}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>1/</span><span>x</span></span></span></span></span></span></span></span></span></span></span></span>，<span><span>arctan⁡1x\arctan\frac{1}{x}</span><span><span><span></span><span>arctan</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>对于 <span><span>e1/xe^{1/x}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>1/</span><span>x</span></span></span></span></span></span></span></span></span></span></span></span>，当 <span><span>x→0+x\to0^+</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span> 时，极限值趋于无穷大，当 <span><span>x→0−x\to0^-</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>−</span></span></span></span></span></span></span></span></span></span></span>
时，极限值趋于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，所以是第二类间断点。</p><p>对于 <span><span>arctan⁡1x\arctan\frac{1}{x}</span><span><span><span></span><span>arctan</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，当 <span><span>x→0+x\to0^+</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span></span></span></span> 时，极限值趋于 <span><span>π2\frac{\pi}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，
当 <span><span>x→0−x\to0^-</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span><span>0</span><span><span><span><span><span><span></span><span><span>−</span></span></span></span></span></span></span></span></span></span></span> 时，极限值趋于 <span><span>−π2-\frac{\pi}{2}</span><span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，所以是跳跃间断点。</p><p>此外还需要注意不要混淆可去间断点与跳跃间断点，题目里可能会问可去 / 跳跃 / 第一类 / 无穷 等等，一定要注意限制词。</p><p></p><figure><img alt="基础 30 讲" loading="lazy" width="756" height="308" src="/_astro/p16.BlSK_5Cx_1bOjPl.webp" /><figcaption>基础 30 讲</figcaption></figure><p></p></section><section><h4>零点定理，介值定理<a href="#零点定理介值定理"><span>#</span></a></h4><p>零点定理和介值定理不会很难，最重要的问题就是分析范式不严谨导致遗忘这两个方法。</p><p>还可以注意一下介值定理的变形，平均值定理。</p><p>此外，还需要注意利用极限的定义进行讨论（例如在端点非常近的区间等，典型的代表是证明达布定理）。</p></section><section><h4>本章相关定义题<a href="#本章相关定义题"><span>#</span></a></h4><ul>
<li>注意有没有连续这个条件作为前提</li>
</ul></section></section><section><h3>第 2 章 - 数列极限<a href="#第-2-章---数列极限"><span>#</span></a></h3><section><h4>数列极限的定义<a href="#数列极限的定义"><span>#</span></a></h4><p>数列极限的定义为：对于任意 <span><span>ϵ&gt;0\epsilon&gt;0</span><span><span><span></span><span>ϵ</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，存在 <span><span>N∈NN\in\mathbb{N}</span><span><span><span></span><span>N</span><span></span><span>∈</span><span></span></span><span><span></span><span>N</span></span></span></span>，
使得当 <span><span>n&gt;Nn&gt;N</span><span><span><span></span><span>n</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>N</span></span></span></span> 时，有 <span><span>∣an−a∣&lt;ϵ|a_n-a|&lt;\epsilon</span><span><span><span></span><span>∣</span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>ϵ</span></span></span></span>。</p><p>需要注意的是，数列极限的 n 默认为正无穷。并且还有一点需要注意，如果要求极限，那么需要将 n 转换为 x，然后 x 趋近于正无穷。</p><p>数列极限常用的性质有 3 个：保号性、保序性、有界性。</p><ul>
<li>保号性：若 <span><span>an→aa_n\to a</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>a</span></span></span></span> 且 <span><span>a≠0a\ne0</span><span><span><span></span><span>a</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>，则从某一项起，数列的项都与极限同号。</li>
<li>保序性：若从某一项起 <span><span>an≤bna_n\le b_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>≤</span><span></span></span><span><span></span><span><span>b</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，且两列极限都存在，则
<span><span>lim⁡n→∞an≤lim⁡n→∞bn\lim_{n\to\infty}a_n\le\lim_{n\to\infty}b_n</span><span><span><span></span><span><span>lim</span><span><span><span><span><span><span></span><span><span><span>n</span><span>→</span><span>∞</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>≤</span><span></span></span><span><span></span><span><span>lim</span><span><span><span><span><span><span></span><span><span><span>n</span><span>→</span><span>∞</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>b</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</li>
<li>有界性：收敛数列一定有界。</li>
</ul></section><section><h4>数列定义的选择题<a href="#数列定义的选择题"><span>#</span></a></h4></section><section><h4>常见特值与构造思路<a href="#常见特值与构造思路"><span>#</span></a></h4><ul>
<li>
<p>常见特殊数列</p>
<ul>
<li>
<p><span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的奇数项为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，偶数项为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，等等</p>
</li>
<li>
<p><span><span>an=(−1)n1n+1a_n=(-1)^n\frac{1}{n}+1</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span></p>
</li>
</ul>
</li>
<li>
<p>构造思路</p>
<ul>
<li>数列的奇数项和偶数项极限如果不同，那么原数列极限不存在。</li>
</ul>
</li>
</ul></section><section><h4>夹逼定理与一个经典极限<a href="#夹逼定理与一个经典极限"><span>#</span></a></h4><ul>
<li>
<p>经典极限定理</p>
<p>当 <span><span>an→aa_n\to a</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>a</span></span></span></span> 时，<span><span>∣an∣→∣a∣|a_n|\to|a|</span><span><span><span></span><span>∣</span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>∣</span><span></span><span>→</span><span></span></span><span><span></span><span>∣</span><span>a</span><span>∣</span></span></span></span>，可以使用数列极限的定义以及三角不等式进行证明。</p>
<p>其中特别地，当 <span><span>a=0a=0</span><span><span><span></span><span>a</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，后者也可以推出前者，即 <span><span>∣an∣→0|a_n|\to0</span><span><span><span></span><span>∣</span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>∣</span><span></span><span>→</span><span></span></span><span><span></span><span>0</span></span></span></span> 可以推出 <span><span>an→0a_n\to0</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p>
</li>
<li>
<p>夹逼定理</p>
<p>夹逼定理有两类应用，第一种为 n 项数列求和，如果自变量的量级 <span><span>&lt;n&lt;n</span><span><span><span></span><span>&lt;</span><span></span></span><span><span></span><span>n</span></span></span></span> 的量级，那么大概率使用夹逼定理，否则可以考虑使用定积分的定义。</p>
<p>第二种是证明极限存在的部分步骤，例如证明二元函数的极限，证明压缩映射定理等。</p>
<p>如果碰到了 <span><span>[x][x]</span><span><span><span></span><span>[</span><span>x</span><span>]</span></span></span></span>，那么可以优先考虑夹逼定理。</p>
</li>
</ul></section><section><h4>保序性的应用<a href="#保序性的应用"><span>#</span></a></h4><p>定义一个数列为 <span><span>an=(−1)n1n+1a_n=(-1)^n\frac{1}{n}+1</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span></span></span></span>，那么该数列是否存在最大值？是否存在最小值？</p><p>列出第 2 项，显然为 <span><span>32\frac{3}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>3</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>；列出第 3 项，显然为 <span><span>23\frac{2}{3}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>3</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。
由于当 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 趋于无穷时，该极限为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，所以后无穷项都落在 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 的附近。
取前若干项，则一定存在最大值和最小值。</p></section><section><h4>数列极限的证明<a href="#数列极限的证明"><span>#</span></a></h4></section><section><h4>单调有界准则<a href="#单调有界准则"><span>#</span></a></h4><p>如果一个数列单调递增有上界，那么该数列必然存在极限。</p><p>如果一个数列单调递减有下界，那么该数列必然存在极限。</p><ul>
<li>
<p>单调性的证明</p>
<ul>
<li>
<p>定义法：使用 <span><span>xn+1−xnx_{n+1}-x_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的符号来判断单调性。</p>
</li>
<li>
<p>导数法：<span><span>xn=f(xn−1)x_n=f(x_{n-1})</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span>，如果 <span><span>f′(x)&gt;0f'(x)&gt;0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，且</p>
<ul>
<li>如果 <span><span>x1&lt;x2x_1&lt;x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，那么 <span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是单调递增的。</li>
<li>如果 <span><span>x1&gt;x2x_1&gt;x_2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，那么 <span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是单调递减的。</li>
</ul>
<p>如果 <span><span>f′(x)&lt;0f'(x)&lt;0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，那么无法仅凭此判断 <span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的单调性。</p>
</li>
<li>
<p>数学归纳法：显然看出。</p>
</li>
</ul>
</li>
<li>
<p>有界性的证明</p>
<ul>
<li>
<p>定义法：使用 <span><span>∣xn∣&lt;M|x_n|&lt;M</span><span><span><span></span><span>∣</span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>∣</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>M</span></span></span></span> 来证明有界性。</p>
</li>
<li>
<p>不等式法</p>
</li>
</ul>
</li>
</ul><p>得到了单调有界后，那么直接两边同时取极限，即可得到答案。</p></section><section><h4>压缩映射原理<a href="#压缩映射原理"><span>#</span></a></h4><p>事实上压缩映射原理不能直接用，考研大纲里面没有。</p><p>如果发现该数列不能证明出来单调有界，那么就该考虑使用类似压缩映射的原理去证明。</p><p>这类题的基本套路是：先两边同时取极限，得到这个值之后，利用定义 + 夹逼定理去证明这个极限存在。</p><p>也就是不妨设</p><span><span><span>0&lt;∣xn−a∣&lt;b∣xn−1−a∣&lt;b2∣xn−2−a∣&lt;⋯&lt;bn−1∣x1−a∣0&lt;|x_n-a|&lt;b|x_{n-1}-a|&lt;b^2|x_{n-2}-a|&lt;\cdots&lt;b^{n-1}|x_1-a|</span><span><span><span></span><span>0</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>∣</span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>b</span><span>∣</span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>b</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>∣</span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>⋯</span><span></span><span>&lt;</span><span></span></span><span><span></span><span><span>b</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>∣</span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span></span></span></span></span><p>其中 <span><span>0&lt;b&lt;10&lt;b&lt;1</span><span><span><span></span><span>0</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>b</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>1</span></span></span></span>，那么根据夹逼定理，<span><span>xnx_n</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的极限为 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>。</p><blockquote><p><strong>校验：</strong> 这里还需要先证明不等式对所有充分大的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 成立，不能只由形式上的递推不等式直接断定极限存在。</p></blockquote></section></section><section><h3>第 3 章 - 一元函数微分概念<a href="#第-3-章---一元函数微分概念"><span>#</span></a></h3><section><h4>导数的定义<a href="#导数的定义"><span>#</span></a></h4><p>导数的定义为
<span><span>f′(x0)=lim⁡h→0f(x0+h)−f(x0)hf'(x_0)=\lim_{h\to0}\frac{f(x_0+h)-f(x_0)}{h}</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>lim</span><span><span><span><span><span><span></span><span><span><span>h</span><span>→</span><span>0</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>h</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>+</span><span>h</span><span>)</span><span>−</span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，可以变形为
<span><span>f′(x0)=lim⁡x→x0f(x)−f(x0)x−x0f'(x_0)=\lim_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>lim</span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>x</span><span>)</span><span>−</span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>这里除了利用导数的定义倒腾来倒腾去之外（例如拆分，配凑导数定义），还有一类题。</p><p>若 <span><span>h(x)=f(x)g(x)h(x)=f(x)g(x)</span><span><span><span></span><span>h</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span>g</span><span>(</span><span>x</span><span>)</span></span></span></span>，求 <span><span>h′(0)h'(0)</span><span><span><span></span><span><span>h</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>0</span><span>)</span></span></span></span> 可以用 <span><span>uvuv</span><span><span><span></span><span>uv</span></span></span></span> 的公式，或者使用导数的定义。</p></section><section><h4>关于导数以及导数绝对值的讨论<a href="#关于导数以及导数绝对值的讨论"><span>#</span></a></h4><ul>
<li>
<p>对于 <span><span>g(x)=f(x)∣x−a∣g(x)=f(x)|x-a|</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span>∣</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span></span></span></span> 可导性的讨论</p>
<p>在 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 在 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 处可导的前提下，<span><span>f(a)=0f(a)=0</span><span><span><span></span><span>f</span><span>(</span><span>a</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 是 <span><span>g(x)g(x)</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 点可导的充分必要条件。</p>
<p>在做这种题的时候，要注意 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 本身可能有多个不可导点。</p>
</li>
<li>
<p>关于 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 和 <span><span>∣f(x)∣|f(x)|</span><span><span><span></span><span>∣</span><span>f</span><span>(</span><span>x</span><span>)</span><span>∣</span></span></span></span> 可导性的讨论</p>
<p>对于这种题，绘图是最简单的做法，其次才利用下面的结论。</p>
<p>若 <span><span>f(x0)≠0f(x_0)\ne0</span><span><span><span></span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span> 且 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导，则 <span><span>∣f(x)∣|f(x)|</span><span><span><span></span><span>∣</span><span>f</span><span>(</span><span>x</span><span>)</span><span>∣</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导。</p>
<p>若 <span><span>f(x0)=0f(x_0)=0</span><span><span><span></span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 且 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导，若 <span><span>f′(x0)=0f'(x_0)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，则 <span><span>∣f(x)∣|f(x)|</span><span><span><span></span><span>∣</span><span>f</span><span>(</span><span>x</span><span>)</span><span>∣</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导。</p>
<p>若 <span><span>f(x0)=0f(x_0)=0</span><span><span><span></span><span>f</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 且 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导，若 <span><span>f′(x0)≠0f'(x_0)\ne0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>，则 <span><span>∣f(x)∣|f(x)|</span><span><span><span></span><span>∣</span><span>f</span><span>(</span><span>x</span><span>)</span><span>∣</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处不可导。</p>
<p>若 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处连续，且 <span><span>∣f(x)∣|f(x)|</span><span><span><span></span><span>∣</span><span>f</span><span>(</span><span>x</span><span>)</span><span>∣</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导，
则 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导。</p>
<blockquote><p><strong>校验：</strong> 上述结论还需要 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处连续；仅知道 <span><span>∣f∣|f|</span><span><span><span></span><span>∣</span><span>f</span><span>∣</span></span></span></span>
在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导，不能推出 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处可导。</p></blockquote>
</li>
</ul></section><section><h4>微分的定义<a href="#微分的定义"><span>#</span></a></h4><p>微分的定义为 <span><span>dy=f′(x0) dx\mathrm{d}y=f'(x_0)\,\mathrm{d}x</span><span><span><span></span><span>d</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>d</span><span>x</span></span></span></span>。若 <span><span>dx=x−x0\mathrm{d}x=x-x_0</span><span><span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，
则 <span><span>dy=f′(x0)(x−x0)\mathrm{d}y=f'(x_0)(x-x_0)</span><span><span><span></span><span>d</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span>。考的不是很多，但是也需要注意。</p><blockquote><p><strong>校验：</strong> 后一个式子隐含了 <span><span>dx=x−x0\mathrm{d}x=x-x_0</span><span><span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的约定；一般形式不能
遗漏 <span><span>dx\mathrm{d}x</span><span><span><span></span><span>d</span><span>x</span></span></span></span>。</p></blockquote><p>比较常见的是考 m 是 n 的高阶无穷小 / 等价无穷小 / 同阶无穷小 / 低阶无穷小。</p></section></section><section><h3>第 4 章 - 一元函数微分计算<a href="#第-4-章---一元函数微分计算"><span>#</span></a></h3><section><h4>需要注意的求导公式<a href="#需要注意的求导公式"><span>#</span></a></h4><ul>
<li><span><span>(sec⁡x)′=sec⁡xtan⁡x\left(\sec x\right)'=\sec x\tan x</span><span><span><span></span><span><span><span>(</span><span>sec</span><span></span><span>x</span><span>)</span></span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>sec</span><span></span><span>x</span><span></span><span>tan</span><span></span><span>x</span></span></span></span></li>
<li><span><span>(csc⁡x)′=−csc⁡xcot⁡x\left(\csc x\right)'=-\csc x\cot x</span><span><span><span></span><span><span><span>(</span><span>csc</span><span></span><span>x</span><span>)</span></span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span></span><span>csc</span><span></span><span>x</span><span></span><span>cot</span><span></span><span>x</span></span></span></span></li>
<li><span><span>(arcsin⁡x)′=11−x2\left(\arcsin x\right)'=\frac{1}{\sqrt{1-x^2}}</span><span><span><span></span><span><span><span>(</span><span>arcsin</span><span></span><span>x</span><span>)</span></span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>1</span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></li>
<li><span><span>(arccos⁡x)′=−11−x2\left(\arccos x\right)'=-\frac{1}{\sqrt{1-x^2}}</span><span><span><span></span><span><span><span>(</span><span>arccos</span><span></span><span>x</span><span>)</span></span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>1</span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></li>
<li><span><span>(arctan⁡x)′=11+x2\left(\arctan x\right)'=\frac{1}{1+x^2}</span><span><span><span></span><span><span><span>(</span><span>arctan</span><span></span><span>x</span><span>)</span></span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>1</span><span>+</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></li>
<li><span><span>(log⁡ax)′=1xln⁡a\left(\log_a x\right)'=\frac{1}{x\ln a}</span><span><span><span></span><span><span><span>(</span><span><span>lo<span>g</span></span><span><span><span><span><span><span></span><span><span>a</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>x</span><span>)</span></span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span></span><span><span>l</span><span>n</span></span><span></span><span>a</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></li>
<li><span><span>(ax)′=axln⁡a\left(a^x\right)'=a^x\ln a</span><span><span><span></span><span><span><span>(</span><span><span>a</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span>)</span></span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span></span><span>ln</span><span></span><span>a</span></span></span></span></li>
</ul></section><section><h4>隐函数求导<a href="#隐函数求导"><span>#</span></a></h4><p>隐函数求导的本质是对方程两边同时求导，然后解出导数，要注意对每个作为变量的都求导。</p></section><section><h4>对数求导法<a href="#对数求导法"><span>#</span></a></h4><p>对数求导法的本质是对方程两边同时取对数，然后对方程两边同时求导，是一种化简手段，本质上其实是对多个连乘式子的化简。</p></section><section><h4>复合函数求导<a href="#复合函数求导"><span>#</span></a></h4><p>复合函数求导的本质是链式法则，要注意对每个作为变量的都求导。</p><p>尤其还可以注意，对于单点可以直接利用复合函数求导法的公式。</p><p>即 <span><span>(f∘g)′(x0)=f′(g(x0))g′(x0)(f\circ g)'(x_0)=f'(g(x_0))g'(x_0)</span><span><span><span></span><span>(</span><span>f</span><span></span><span>∘</span><span></span></span><span><span></span><span>g</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>g</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>))</span><span><span>g</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span>。</p></section><section><h4>反函数求导<a href="#反函数求导"><span>#</span></a></h4><p>反函数求导的本质是反函数定理，即
<span><span>(f−1)′(x)=1f′(f−1(x))(f^{-1})'(x)=\frac{1}{f'(f^{-1}(x))}</span><span><span><span></span><span>(</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>))</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>不需要记忆反函数求导的二阶导数，在考场上利用定义现场推导即可，这里也写一下推导：</p><span><span><span>(f−1(x))′′=−f′′(f−1(x))(f′(f−1(x)))3(f^{-1}(x))''=-\frac{f''(f^{-1}(x))}{\left(f'(f^{-1}(x))\right)^3}</span><span><span><span></span><span>(</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>(</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>))</span><span>)</span></span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>))</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span></section><section><h4>参数方程求导<a href="#参数方程求导"><span>#</span></a></h4><p>参数方程求导一定要搞清楚求导的对象，到底是 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 还是 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span>。</p><span><span><span>dydx=dy/dtdx/dt\frac{\mathrm{d}y}{\mathrm{d}x}
=\frac{\mathrm{d}y/\mathrm{d}t}{\mathrm{d}x/\mathrm{d}t}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span><span>/</span><span>d</span><span>t</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>y</span><span>/</span><span>d</span><span>t</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><span><span><span>d2ydx2=ddt(dydx)/dxdt\frac{\mathrm{d}^2y}{\mathrm{d}x^2}
=\frac{\mathrm{d}}{\mathrm{d}t}\left(\frac{\mathrm{d}y}{\mathrm{d}x}\right)
\bigg/\frac{\mathrm{d}x}{\mathrm{d}t}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>t</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span></span><span><span>/</span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>t</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><p>同样的，考场上不需要特地去背公式，现场推导即可。</p><p>此外，参数方程求导还可以注意结合隐函数求导，乃至反套路，即将参数方程化为原函数进行讨论。</p><p>例如已知 <span><span>x=t2+∣t∣x=t^2+|t|</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>∣</span><span>t</span><span>∣</span></span></span></span>，<span><span>y=t3y=t^3</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span>，讨论 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 的连续性、可导性和极值。</p><p>对于这类题，可以将参数方程化为原函数进行讨论。在讨论极值的时候，
必须要注意 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 是否一一对应。</p><p>例如 <span><span>x=t3−tx=t^3-t</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span>t</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>t</span></span></span></span>，当 <span><span>x&gt;0x&gt;0</span><span><span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，<span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 并非一一对应，需要额外讨论。</p></section></section><section><h3>第 5 章 - 一元函数微分应用 1（渐近线）<a href="#第-5-章---一元函数微分应用-1渐近线"><span>#</span></a></h3><section><h4>极值与拐点<a href="#极值与拐点"><span>#</span></a></h4></section><section><h4>极值<a href="#极值"><span>#</span></a></h4><p>判断极值的条件有：第一充分条件，第二充分条件，第三充分条件。</p><p>第一充分条件：若 <span><span>f′(x0)=0f'(x_0)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，且 <span><span>f′(x)f'(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 两侧变号，
则 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处有极值。</p><p>第二充分条件：若 <span><span>f′(x0)=0f'(x_0)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，且 <span><span>f′′(x0)≠0f''(x_0)\ne0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>，
则 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处有极值。</p><p>第三充分条件：若 <span><span>f′(x0)=⋯=f(n)(x0)=0f'(x_0)=\cdots=f^{(n)}(x_0)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>⋯</span><span></span><span>=</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>(</span><span>n</span><span>)</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，
且 <span><span>f(n+1)(x0)≠0f^{(n+1)}(x_0)\ne0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>(</span><span>n</span><span>+</span><span>1</span><span>)</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>，且 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 为奇数，则 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处有极值。</p></section><section><h4>拐点<a href="#拐点"><span>#</span></a></h4><p>判断拐点的条件有：第一充分条件、第二充分条件、第三充分条件。</p><p>第一充分条件：若 <span><span>f′′(x)f''(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 两侧变号，则 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处有拐点。</p><p>第二充分条件：若 <span><span>f′′(x0)=0f''(x_0)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，且 <span><span>f′′′(x0)≠0f'''(x_0)\ne0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>，
则 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处有拐点。</p><p>第三充分条件：若 <span><span>f′′(x0)=⋯=f(n)(x0)=0f''(x_0)=\cdots=f^{(n)}(x_0)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>⋯</span><span></span><span>=</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>(</span><span>n</span><span>)</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，
且 <span><span>f(n+1)(x0)≠0f^{(n+1)}(x_0)\ne0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>(</span><span>n</span><span>+</span><span>1</span><span>)</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>，且 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 为偶数，则 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 处有拐点。</p><p>需要注意，对于上述极值和拐点的条件，一定要注意“附近”。
并没有规定说 <span><span>f′(x0)=f′′(x0)=0f'(x_0)=f''(x_0)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 就说明极值点不存在，
还是得从第一充分条件去判断。</p><p>拐点同理。</p></section><section><h4>导数为 0 的相关讨论<a href="#导数为-0-的相关讨论"><span>#</span></a></h4><p><span><span>f′(x0)=0f'(x_0) = 0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 只是函数取得极值的必要条件（费马引理，要求可导），绝对不是充分条件。</p><p>导数为 0 的点称为驻点。驻点可能是极值点，也可能是拐点（非极值点）。</p><p>必须加上导数在 <span><span>x0x_0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 两侧发生变号，或偶数阶导数不为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>
的判定条件，才能确保它是极值点。</p><p>例如：<span><span>f(x)=x3f(x) = x^3</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span></span></span></span></p></section><section><h4>高阶导数<a href="#高阶导数"><span>#</span></a></h4><p>利用泰勒公式即可，尤其需要注意当 <span><span>x=0x=0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 的时候意义是什么。</p></section><section><h4>计算零点或者取值范围（利用导数计算）<a href="#计算零点或者取值范围利用导数计算"><span>#</span></a></h4><p>最重要的事情是要时刻记住自己在做什么（很多时候化规到最后的条件和原来的条件有差别，此时应该看最后化归的条件，而不是原条件。</p></section><section><h4>渐近线<a href="#渐近线"><span>#</span></a></h4><p>渐近线分为三种，水平渐近线，垂直渐近线，斜渐近线。</p><p>水平渐近线：当 <span><span>x→∞x\to\infty</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span>∞</span></span></span></span> 时，<span><span>f(x)→af(x)\to a</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>→</span><span></span></span><span><span></span><span>a</span></span></span></span>，则 <span><span>y=ay=a</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>a</span></span></span></span> 为水平渐近线。</p><p>垂直渐近线：当 <span><span>x→x0x\to x_0</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 时，<span><span>f(x)→∞f(x)\to\infty</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>→</span><span></span></span><span><span></span><span>∞</span></span></span></span>，则 <span><span>x=x0x=x_0</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 为垂直渐近线。</p><p>斜渐近线：当 <span><span>x→∞x\to\infty</span><span><span><span></span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span>∞</span></span></span></span> 时，<span><span>f(x)x→k\frac{f(x)}{x}\to k</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>k</span></span></span></span>，
且 <span><span>f(x)−kx→bf(x)-kx\to b</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>k</span><span>x</span><span></span><span>→</span><span></span></span><span><span></span><span>b</span></span></span></span>，则 <span><span>y=kx+by=kx+b</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>k</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span></span></span></span> 为斜渐近线。</p><blockquote><p><strong>校验：</strong> 斜渐近线的定义应使用 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在无穷远处的行为，
不能把自变量写成 <span><span>1x\frac{1}{x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p></blockquote><p>对于这种题，首先找出可能的候选人，然后逐个分析，尤其需要注意前面所说的
<span><span>arctan⁡x\arctan x</span><span><span><span></span><span>arctan</span><span></span><span>x</span></span></span></span> 以及 <span><span>e1/xe^{1/x}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>1/</span><span>x</span></span></span></span></span></span></span></span></span></span></span></span> 等。</p></section><section><h4>曲率<a href="#曲率"><span>#</span></a></h4><p>为比较冷门的考点，但是也必须要注意。</p><p>曲率公式为 <span><span>k=∣f′′(x)∣(1+(f′(x))2)3/2k=\frac{|f''(x)|}{\left(1+(f'(x))^2\right)^{3/2}}</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span>(</span></span><span>1</span><span>+</span><span>(</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span><span>)</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span><span>3/2</span></span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>∣</span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span>∣</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>曲率半径为 <span><span>ρ=1k\rho=\frac{1}{k}</span><span><span><span></span><span>ρ</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>k</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>曲率圆为该点沿着法线向着内侧移动 <span><span>ρ\rho</span><span><span><span></span><span>ρ</span></span></span></span> 个单位，然后绘制圆。</p><p>对曲率圆求导和求二阶导的数值等同于原函数求导和求二阶导的数值。</p></section></section><section><h3>第 6 章 - 一元函数微分应用 2（中值定理）<a href="#第-6-章---一元函数微分应用-2中值定理"><span>#</span></a></h3><section><h4>费马定理<a href="#费马定理"><span>#</span></a></h4><p>如果函数是极值，那么导数为 0（或不存在）。</p></section><section><h4>达布定理<a href="#达布定理"><span>#</span></a></h4><p>本质是导数介值定理。</p></section><section><h4>罗尔定理<a href="#罗尔定理"><span>#</span></a></h4><p>罗尔定理的形式为：对于函数 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span>，在 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上连续、
在 <span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 上可导，且 <span><span>f(a)=f(b)f(a)=f(b)</span><span><span><span></span><span>f</span><span>(</span><span>a</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>b</span><span>)</span></span></span></span>，那么存在 <span><span>c∈(a,b)c\in(a,b)</span><span><span><span></span><span>c</span><span></span><span>∈</span><span></span></span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span>，
使得 <span><span>f′(c)=0f'(c)=0</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>c</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p>对于罗尔定理的题正是利用不停重复的去找零点，也就是要证式的积分找 2 零点，如果找不到，那么就再往上一层。</p><p>这个再往上一层的思想很重要。</p><p>如果原函数找不到，可以用微分方程去找。</p></section><section><h4>罗尔定理的推论<a href="#罗尔定理的推论"><span>#</span></a></h4><p>如果 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 的 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶导数为非零常量，那么 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 至多有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个零点。</p><p>该定理也被经常遗忘。</p></section><section><h4>拉格朗日中值定理 &amp; 柯西中值定理<a href="#拉格朗日中值定理--柯西中值定理"><span>#</span></a></h4><p>拉格朗日中值定理的形式为：对于函数 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span>，在 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上连续、
在 <span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 上可导，那么存在 <span><span>c∈(a,b)c\in(a,b)</span><span><span><span></span><span>c</span><span></span><span>∈</span><span></span></span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span>，使得
<span><span>f′(c)=f(b)−f(a)b−af'(c)=\frac{f(b)-f(a)}{b-a}</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>c</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>b</span><span>−</span><span>a</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>b</span><span>)</span><span>−</span><span>f</span><span>(</span><span>a</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>拉格朗日中值定理可以用罗尔定理去证明，其实质就是罗尔定理的推广。</p><p>证明如下：</p><p>令 <span><span>g(x)=f(x)−f(b)−f(a)b−a(x−a)g(x)=f(x)-\frac{f(b)-f(a)}{b-a}(x-a)</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>b</span><span>−</span><span>a</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>b</span><span>)</span><span>−</span><span>f</span><span>(</span><span>a</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span></span></span></span>，那么
<span><span>g(a)=g(b)=0g(a)=g(b)=0</span><span><span><span></span><span>g</span><span>(</span><span>a</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>g</span><span>(</span><span>b</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，所以存在一个 <span><span>c∈(a,b)c\in(a,b)</span><span><span><span></span><span>c</span><span></span><span>∈</span><span></span></span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span>，使得 <span><span>g′(c)=0g'(c)=0</span><span><span><span></span><span><span>g</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>c</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p><p>即 <span><span>f′(c)=f(b)−f(a)b−af'(c) = \frac{f(b) - f(a)}{b - a}</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>c</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>b</span><span>−</span><span>a</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>b</span><span>)</span><span>−</span><span>f</span><span>(</span><span>a</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>所以拉格朗日中值定理得证。</p><p>柯西中值定理的形式为：对于函数 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 和 <span><span>g(x)g(x)</span><span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span></span></span></span>，在 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span>
上连续、在 <span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 上可导，且 <span><span>g′(x)≠0g'(x)\ne0</span><span><span><span></span><span><span>g</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>，那么存在 <span><span>c∈(a,b)c\in(a,b)</span><span><span><span></span><span>c</span><span></span><span>∈</span><span></span></span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span>，使得 <span><span>f′(c)g′(c)=f(b)−f(a)g(b)−g(a)\frac{f'(c)}{g'(c)}=\frac{f(b)-f(a)}{g(b)-g(a)}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>g</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>c</span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>c</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>g</span><span>(</span><span>b</span><span>)</span><span>−</span><span>g</span><span>(</span><span>a</span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>f</span><span>(</span><span>b</span><span>)</span><span>−</span><span>f</span><span>(</span><span>a</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>拉格朗日中值定理的题有两种，一种是证明两个点，即 <span><span>c1c_1</span><span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>c2c_2</span><span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 在某区间里，且 <span><span>c1c_1</span><span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 没说必须不等于 <span><span>c2c_2</span><span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，另一种则是明确了 <span><span>c1c_1</span><span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>c2c_2</span><span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 必须不等于对方。</p><p>对于前者，利用拉格朗日中值定理 + 柯西中值定理可以解决。</p><p>对于后者，可以利用“踩点”的思想，即若 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上连续、
在 <span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 上可导，那么可以在 <span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 内找到一个点 <span><span>cc</span><span><span><span></span><span>c</span></span></span></span>，并且分别在
<span><span>[a,c][a,c]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>c</span><span>]</span></span></span></span>、<span><span>[c,b][c,b]</span><span><span><span></span><span>[</span><span>c</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上使用拉格朗日中值定理，最后使用介值定理得到结论。</p><p>此外，对于拉格朗日中值定理的题目（包括积分相关的证明），可以适当的从中间取一个点，分区间进行讨论。</p></section><section><h4>使用泰勒公式证明中值定理<a href="#使用泰勒公式证明中值定理"><span>#</span></a></h4><p>首先辨析一下泰勒公式的皮亚诺余项和拉格朗日余项。</p><p>皮亚诺余项为 <span><span>o(xn)o(x^n)</span><span><span><span></span><span>o</span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span>)</span></span></span></span>，拉格朗日余项为
<span><span>f(n+1)(c)(n+1)!xn+1\frac{f^{(n+1)}(c)}{(n+1)!}x^{n+1}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>(</span><span>n</span><span>+</span><span>1</span><span>)!</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>(</span><span>n</span><span>+</span><span>1</span><span>)</span></span></span></span></span></span></span></span></span><span>(</span><span>c</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>n</span><span>+</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>。</p><p>对于皮亚诺余项，常用于讨论单点的性质；对于拉格朗日余项，常用于讨论函数，区间的性质。</p><p>所以在证明中值定理相关问题的时候，一般用皮亚诺余项。</p><p>对于题设给定的条件，通常选择信息量最多，或者最好约去的点进行展开。</p><p>有的时候，并不是对已知点展开，可能是对未知点展开。</p><p>代入具体值的时候，可以选择代入多个点进行对比讨论。</p><p>此外，有一个易错点：若将 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 展开到一次项，
其拉格朗日余项为 <span><span>−sin⁡c2!x2-\frac{\sin c}{2!}x^2</span><span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span><span>!</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>s</span><span>i</span><span>n</span></span><span></span><span>c</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>，并不恒为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><blockquote><p><strong>校验：</strong> 这里的负号来自 <span><span>sin⁡x\sin x</span><span><span><span></span><span>sin</span><span></span><span>x</span></span></span></span> 的二阶导数
<span><span>−sin⁡x-\sin x</span><span><span><span></span><span>−</span><span></span><span>sin</span><span></span><span>x</span></span></span></span>；若展开到二次项，余项阶数应改为三阶。</p></blockquote></section></section><section><h3>第 7 章 - 一元函数微分应用 3（物理）<a href="#第-7-章---一元函数微分应用-3物理"><span>#</span></a></h3><p>关于物理应用，现在这个阶段再回头去看，已经基本明晰了。</p><p>本质上就是搞清楚 <span><span>dy/dx\mathrm{d}y/\mathrm{d}x</span><span><span><span></span><span>d</span><span>y</span><span>/</span><span>d</span><span>x</span></span></span></span> 的含义，然后对
<span><span>dy/dx\mathrm{d}y/\mathrm{d}x</span><span><span><span></span><span>d</span><span>y</span><span>/</span><span>d</span><span>x</span></span></span></span> 进行变形，直到得到目标值。</p></section><section><h3>第 8 章 - 一元函数积分的概念<a href="#第-8-章---一元函数积分的概念"><span>#</span></a></h3><section><h4>积分的黎曼和定义<a href="#积分的黎曼和定义"><span>#</span></a></h4><p>和使用夹逼定理不同的，对于一串 <span><span>ana_n</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 的和，如果自变量的变化和 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 的次数是相同的，那么就可以使用一元积分的定义。</p><p>常见的是在区间 <span><span>[0,1][0,1]</span><span><span><span></span><span>[</span><span>0</span><span>,</span><span></span><span>1</span><span>]</span></span></span></span> 上：</p><span><span><span>lim⁡n→∞1n∑i=1nf(in)=∫01f(x) dx\lim_{n\to\infty}\frac{1}{n}\sum_{i=1}^{n}
f\left(\frac{i}{n}\right)=\int_{0}^{1}f(x)\,\mathrm{d}x</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span><span>→</span><span>∞</span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>f</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span><p>除了常见的，还需要去理解下面的。</p><p>事实上，应该这么理解定义：底边边长和采样点。对于区间 <span><span>[u,v][u,v]</span><span><span><span></span><span>[</span><span>u</span><span>,</span><span></span><span>v</span><span>]</span></span></span></span>，
假设分为 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 份，那么底边边长自然是 <span><span>v−un\frac{v-u}{n}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>v</span><span>−</span><span>u</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，
而采样点则是 <span><span>u+(v−u)inu+\frac{(v-u)i}{n}</span><span><span><span></span><span>u</span><span></span><span>+</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span>v</span><span>−</span><span>u</span><span>)</span><span>i</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><span><span><span>lim⁡n→∞∑i=1nf(u+i⋅v−un)⋅v−un=∫uvf(x) dx\lim_{n\to\infty}\sum_{i=1}^{n}
f\left(u+i\cdot\frac{v-u}{n}\right)\cdot\frac{v-u}{n}
=\int_{u}^{v}f(x)\,\mathrm{d}x</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span><span>→</span><span>∞</span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>f</span><span></span><span><span><span>(</span></span><span>u</span><span></span><span>+</span><span></span><span>i</span><span></span><span>⋅</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>v</span><span></span><span>−</span><span></span><span>u</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span></span><span>⋅</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>v</span><span></span><span>−</span><span></span><span>u</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>u</span></span></span></span><span><span></span><span><span><span>v</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span><p></p><figure><img alt="880" loading="lazy" width="513" height="69" src="/_astro/p17.BS6hsLXh_1oowtv.webp" /><figcaption>880</figcaption></figure><p></p><p>此外，在做这类题的时候，一定要完完整整的把步骤写出来，不可以利用夹逼定理只放缩一边就说极限是这个，事实上可能两边夹出来不一样，导致错误。</p></section><section><h4>积分概念辨析<a href="#积分概念辨析"><span>#</span></a></h4><p>原函数、定积分、不定积分、变限积分、反常积分。</p><ul>
<li>
<p>原函数：导函数具有介值性，因此可以不连续，但不能出现跳跃间断。</p>
<p>构造函数</p>
<span><span><span>f(x)={2xsin⁡1x2−2xcos⁡1x2,x≠0,0,x=0,f(x)=
\begin{cases}
2x\sin\frac{1}{x^2}-\frac{2}{x}\cos\frac{1}{x^2}, &amp; x\ne0,\\
0, &amp; x=0,
\end{cases}</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>{</span></span><span><span><span><span><span><span><span><span></span><span><span>2</span><span>x</span><span></span><span>sin</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>−</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>cos</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span></span></span><span><span></span><span><span>0</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>x</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span><span>0</span><span>,</span></span></span><span><span></span><span><span>x</span><span></span><span>=</span><span></span><span>0</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span>
<p>其原函数为</p>
<span><span><span>F(x)={x2sin⁡1x2,x≠0,0,x=0.F(x)=
\begin{cases}
x^2\sin\frac{1}{x^2}, &amp; x\ne0,\\
0, &amp; x=0.
\end{cases}</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>{</span></span><span><span><span><span><span><span><span><span></span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>sin</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span></span></span><span><span></span><span><span>0</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>x</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span><span>0</span><span>,</span></span></span><span><span></span><span><span>x</span><span></span><span>=</span><span></span><span>0.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span>
<p>比如这个函数存在原函数。</p>
</li>
<li>
<p>定积分：若指黎曼可积，则函数必须有界，且间断点集合的长度为
<span><span>00</span><span><span><span></span><span>0</span></span></span></span>；不要求连续，也不要求只有有限个间断点。</p>
<p>例如上面那个函数在区间 <span><span>[−1,2][-1,2]</span><span><span><span></span><span>[</span><span>−</span><span>1</span><span>,</span><span></span><span>2</span><span>]</span></span></span></span> 上无界，因此不存在黎曼定积分。</p>
<blockquote><p><strong>校验：</strong> “定积分存在就连续且只有有限个间断点”并不成立；
连续是充分条件，但不是黎曼可积的必要条件。</p></blockquote>
</li>
<li>
<p>原函数与不定积分：不定积分指的是原函数族</p>
</li>
<li>
<p>变限积分：变限积分是一个函数，其定义域是积分上限的取值范围。</p>
</li>
<li>
<p>反常积分：反常积分要注意处理瑕点，然后分区间进行讨论。</p>
</li>
<li>
<p><strong>注意！有定积分的前提是 f(x) 在 [a,b] 上有界，如果直接是无界的，那么就没有定积分！</strong></p>
</li>
</ul></section><section><h4>积分不等式<a href="#积分不等式"><span>#</span></a></h4><p>在区间 <span><span>(0,π/2)(0,\pi/2)</span><span><span><span></span><span>(</span><span>0</span><span>,</span><span></span><span>π</span><span>/2</span><span>)</span></span></span></span> 上，<span><span>sin⁡x&lt;x&lt;tan⁡x\sin x&lt;x&lt;\tan x</span><span><span><span></span><span>sin</span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>x</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>tan</span><span></span><span>x</span></span></span></span>。</p><p>在区间 <span><span>(0,π/2)(0,\pi/2)</span><span><span><span></span><span>(</span><span>0</span><span>,</span><span></span><span>π</span><span>/2</span><span>)</span></span></span></span> 上，<span><span>sin⁡x&gt;2πx\sin x&gt;\frac{2}{\pi}x</span><span><span><span></span><span>sin</span><span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>π</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>x</span></span></span></span>。</p><p>在区间 <span><span>(0,π/4)(0,\pi/4)</span><span><span><span></span><span>(</span><span>0</span><span>,</span><span></span><span>π</span><span>/4</span><span>)</span></span></span></span> 上，<span><span>4πx&gt;tan⁡x\frac{4}{\pi}x&gt;\tan x</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>π</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>4</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>x</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>tan</span><span></span><span>x</span></span></span></span>。</p><p>对于式子 1 可以用导数证明，对于式子 2 和 3，可以利用几何意义证明。</p><p>不等式两边同时求导，<strong>符号不确定</strong>！</p></section><section><h4>反常积分与 p 积分<a href="#反常积分与-p-积分"><span>#</span></a></h4><p>其实对于数 2 一般利用 p 积分进行讨论（因为没有无穷级数）。</p><p>给出一道构造的题：</p><span><span><span>I=∫0+∞1xp∣x−1∣2p(1+x2)p dxI=\int_{0}^{+\infty}
\frac{1}{x^p|x-1|^{2p}(1+x^2)^p}\,\mathrm{d}x</span><span><span><span></span><span>I</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>+</span><span>∞</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>p</span></span></span></span></span></span></span></span><span>∣</span><span>x</span><span></span><span>−</span><span></span><span>1</span><span><span>∣</span><span><span><span><span><span><span></span><span><span><span>2</span><span>p</span></span></span></span></span></span></span></span></span><span>(</span><span>1</span><span></span><span>+</span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span>p</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>d</span><span>x</span></span></span></span></span><p>其等价为：</p><span><span><span>I=∫01/2f(x) dx+∫1/21f(x) dx+∫12f(x) dx+∫2+∞f(x) dxI=\int_{0}^{1/2}f(x)\,\mathrm{d}x
+\int_{1/2}^{1}f(x)\,\mathrm{d}x
+\int_{1}^{2}f(x)\,\mathrm{d}x
+\int_{2}^{+\infty}f(x)\,\mathrm{d}x</span><span><span><span></span><span>I</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>1/2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>1/2</span></span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>1</span></span></span></span><span><span></span><span><span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span><span><span>+</span><span>∞</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span><p>需要注意的是，这里的 1/2 和 2 都是随便挑的点，没有其他什么特别的含义。</p><p>对于这类题，首先根据可能导致无定义的点进行拆开，然后趋近于这个无定义的点，先利用极限化简，然后根据 p 积分讨论。</p><ul>
<li>
<p>第一类：无穷区间型 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span>-积分（无穷限反常积分）</p>
<p>设常数 <span><span>a&gt;0a &gt; 0</span><span><span><span></span><span>a</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，标准形式为：<span><span>∫a+∞1xp dx\int_{a}^{+\infty} \frac{1}{x^p} \, dx</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>+</span><span>∞</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>p</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>d</span><span>x</span></span></span></span>，敛散性结论：</p>
<span><span><span>{积分收敛，值为 a1−pp−1,p&gt;1,积分发散,p≤1.\begin{cases}
\text{积分收敛，值为 }\dfrac{a^{1-p}}{p-1}, &amp; p&gt;1,\\
\text{积分发散}, &amp; p\le1.
\end{cases}</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>⎩</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎨</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎧</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span><span><span><span><span><span></span><span><span><span>积分收敛，值为</span><span> </span></span><span><span></span><span><span><span><span><span><span></span><span><span>p</span><span></span><span>−</span><span></span><span>1</span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>1</span><span>−</span><span>p</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span></span></span><span><span></span><span><span><span>积分发散</span></span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>p</span><span></span><span>&gt;</span><span></span><span>1</span><span>,</span></span></span><span><span></span><span><span>p</span><span></span><span>≤</span><span></span><span>1.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span>
</li>
<li>
<p>第二类：有限区间瑕积分型 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span>-积分（无界函数瑕积分）</p>
<p>(1) 瑕点在下限 <span><span>x=ax=a</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>a</span></span></span></span>（例如原点 <span><span>a=0a=0</span><span><span><span></span><span>a</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>），设 <span><span>b&gt;ab&gt;a</span><span><span><span></span><span>b</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>a</span></span></span></span>，形式为：
<span><span>∫ab1(x−a)p dx\int_{a}^{b}\frac{1}{(x-a)^p}\,\mathrm{d}x</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>(</span><span>x</span><span>−</span><span>a</span><span><span>)</span><span><span><span><span><span><span></span><span><span>p</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>d</span><span>x</span></span></span></span>（特别当 <span><span>a=0a=0</span><span><span><span></span><span>a</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 时即为
<span><span>∫0b1xp dx\int_{0}^{b}\frac{1}{x^p}\,\mathrm{d}x</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>p</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>d</span><span>x</span></span></span></span>），敛散性结论：</p>
<span><span><span>{积分收敛，值为 (b−a)1−p1−p,p&lt;1,积分发散,p≥1.\begin{cases}
\text{积分收敛，值为 }\dfrac{(b-a)^{1-p}}{1-p}, &amp; p&lt;1,\\
\text{积分发散}, &amp; p\ge1.
\end{cases}</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>⎩</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎨</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎧</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span><span><span><span><span><span></span><span><span><span>积分收敛，值为</span><span> </span></span><span><span></span><span><span><span><span><span><span></span><span><span>1</span><span></span><span>−</span><span></span><span>p</span></span></span><span><span></span><span></span></span><span><span></span><span><span>(</span><span>b</span><span></span><span>−</span><span></span><span>a</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>1</span><span>−</span><span>p</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span></span></span><span><span></span><span><span><span>积分发散</span></span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>p</span><span></span><span>&lt;</span><span></span><span>1</span><span>,</span></span></span><span><span></span><span><span>p</span><span></span><span>≥</span><span></span><span>1.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span>
<p>(2) 瑕点在上限 <span><span>x=bx = b</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>b</span></span></span></span>，设 <span><span>b&gt;ab &gt; a</span><span><span><span></span><span>b</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>a</span></span></span></span>，形式为：<span><span>∫ab1(b−x)p dx\int_{a}^{b} \frac{1}{(b-x)^p} \, dx</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>(</span><span>b</span><span>−</span><span>x</span><span><span>)</span><span><span><span><span><span><span></span><span><span>p</span></span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>d</span><span>x</span></span></span></span>，敛散性结论：</p>
<span><span><span>{积分收敛，值为 (b−a)1−p1−p,p&lt;1,积分发散,p≥1.\begin{cases}
\text{积分收敛，值为 }\dfrac{(b-a)^{1-p}}{1-p}, &amp; p&lt;1,\\
\text{积分发散}, &amp; p\ge1.
\end{cases}</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>⎩</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎨</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎧</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span><span><span><span><span><span></span><span><span><span>积分收敛，值为</span><span> </span></span><span><span></span><span><span><span><span><span><span></span><span><span>1</span><span></span><span>−</span><span></span><span>p</span></span></span><span><span></span><span></span></span><span><span></span><span><span>(</span><span>b</span><span></span><span>−</span><span></span><span>a</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>1</span><span>−</span><span>p</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span></span></span><span><span></span><span><span><span>积分发散</span></span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>p</span><span></span><span>&lt;</span><span></span><span>1</span><span>,</span></span></span><span><span></span><span><span>p</span><span></span><span>≥</span><span></span><span>1.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span>
</li>
</ul><p>关于 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 积分，需要注意的是如果讨论区间是 <span><span>[0,1][0,1]</span><span><span><span></span><span>[</span><span>0</span><span>,</span><span></span><span>1</span><span>]</span></span></span></span>，且 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 和 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>
都是瑕点，那么对于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span> 显然是利用第二类 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 积分的第一种，对于 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，
不要用成第一类 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 积分了，一定是第二类 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 积分的第二种。</p><p>此外需要注意题干条件，题干本身可能就会对一些数值做出限制。</p></section></section><section><h3>第 9 章 - 一元函数积分的计算<a href="#第-9-章---一元函数积分的计算"><span>#</span></a></h3><section><h4>基本积分公式<a href="#基本积分公式"><span>#</span></a></h4><p><span><span>CC</span><span><span><span></span><span>C</span></span></span></span> 要记得。</p></section><section><h4>积分计算方法<a href="#积分计算方法"><span>#</span></a></h4><p>配凑法，换元法，分部积分，都是比较基础的。</p></section><section><h4>利用奇偶性与周期性进行定积分的化简<a href="#利用奇偶性与周期性进行定积分的化简"><span>#</span></a></h4><ol>
<li>
<p>对称区间 <span><span>[−a,a][-a,a]</span><span><span><span></span><span>[</span><span>−</span><span>a</span><span>,</span><span></span><span>a</span><span>]</span></span></span></span> 的奇偶性化简。</p>
<p>设 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>[−a,a][-a,a]</span><span><span><span></span><span>[</span><span>−</span><span>a</span><span>,</span><span></span><span>a</span><span>]</span></span></span></span> 上可积：</p>
<span><span><span>∫−aaf(x) dx={0,f(x) 为奇函数,2∫0af(x) dx,f(x) 为偶函数.\int_{-a}^{a}f(x)\,\mathrm{d}x=
\begin{cases}
0, &amp; f(x)\text{ 为奇函数},\\
2\displaystyle\int_{0}^{a}f(x)\,\mathrm{d}x,
&amp; f(x)\text{ 为偶函数}.
\end{cases}</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>−</span><span>a</span></span></span></span><span><span></span><span><span><span>a</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>⎩</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎨</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎧</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span><span><span><span><span><span></span><span><span>0</span><span>,</span></span></span><span><span></span><span><span>2</span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>a</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>f</span><span>(</span><span>x</span><span>)</span><span><span> </span><span>为奇函数</span></span><span>,</span></span></span><span><span></span><span><span>f</span><span>(</span><span>x</span><span>)</span><span><span> </span><span>为偶函数</span></span><span>.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span>
</li>
<li>
<p>周期函数的积分化简。
设 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 是以 <span><span>TT</span><span><span><span></span><span>T</span></span></span></span> 为周期的连续函数：</p>
</li>
</ol><p>区间平移不变性：任意实数 <span><span>aa</span><span><span><span></span><span>a</span></span></span></span>，都有：</p><span><span><span>∫aa+Tf(x) dx=∫0Tf(x) dx\int_{a}^{a+T}f(x)\,\mathrm{d}x
=\int_{0}^{T}f(x)\,\mathrm{d}x</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>a</span><span>+</span><span>T</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>T</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span><p>多周期分解：</p><span><span><span>∫0nTf(x) dx=n∫0Tf(x) dx(n∈Z)\int_{0}^{nT}f(x)\,\mathrm{d}x
=n\int_{0}^{T}f(x)\,\mathrm{d}x
\quad(n\in\mathbb{Z})</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>n</span><span>T</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>T</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>(</span><span>n</span><span></span><span>∈</span><span></span></span><span><span></span><span>Z</span><span>)</span></span></span></span></span><p>一般区间：</p><span><span><span>∫aa+nTf(x) dx=n∫0Tf(x) dx\int_{a}^{a+nT}f(x)\,\mathrm{d}x
=n\int_{0}^{T}f(x)\,\mathrm{d}x</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>a</span><span>+</span><span>n</span><span>T</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>T</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span></section><section><h4>有理函数的积分<a href="#有理函数的积分"><span>#</span></a></h4><p>对于有理分式 <span><span>R(x)=P(x)Q(x)R(x)=\frac{P(x)}{Q(x)}</span><span><span><span></span><span>R</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>Q</span><span>(</span><span>x</span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>P</span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>：</p><p>假分式化为真分式：若分子次数 <span><span>≥\ge</span><span><span><span></span><span>≥</span></span></span></span> 分母次数，通过多项式除法拆为：多项式 + 真分式。
分母因式分解：实数域内 <span><span>Q(x)Q(x)</span><span><span><span></span><span>Q</span><span>(</span><span>x</span><span>)</span></span></span></span> 分解为一次因式 <span><span>(x−a)k(x-a)^k</span><span><span><span></span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span><span>)</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span></span></span></span></span></span></span></span>
与二次质因式 <span><span>(x2+px+q)m(x^2+px+q)^m</span><span><span><span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>p</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>q</span><span><span>)</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span></span></span></span></span></span></span></span>。
待定系数拆分原则：</p><span><span><span>P(x)Q(x)=∑j=1kAj(x−a)j+∑j=1mBjx+Cj(x2+px+q)j\begin{aligned}
\frac{P(x)}{Q(x)}
&amp;=\sum_{j=1}^{k}\frac{A_j}{(x-a)^j}\\
&amp;\quad+\sum_{j=1}^{m}
\frac{B_jx+C_j}{(x^2+px+q)^j}
\end{aligned}</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span><span></span><span><span><span><span><span><span></span><span><span>Q</span><span>(</span><span>x</span><span>)</span></span></span><span><span></span><span></span></span><span><span></span><span><span>P</span><span>(</span><span>x</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span><span><span><span><span><span></span><span><span></span><span></span><span>=</span><span></span><span><span><span><span><span><span></span><span><span><span>j</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span><span>k</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>(</span><span>x</span><span></span><span>−</span><span></span><span>a</span><span><span>)</span><span><span><span><span><span><span></span><span><span>j</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span>j</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span><span><span></span><span><span></span><span></span><span></span><span>+</span><span></span><span><span><span><span><span><span></span><span><span><span>j</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span><span>m</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span><span>p</span><span>x</span><span></span><span>+</span><span></span><span>q</span><span><span>)</span><span><span><span><span><span><span></span><span><span>j</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>B</span><span><span><span><span><span><span></span><span><span>j</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>x</span><span></span><span>+</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>j</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span></span><p>逐项积分：</p><p>一次项对应生成对数函数 <span><span>ln⁡∣x−a∣\ln|x-a|</span><span><span><span></span><span>ln</span><span></span><span>∣</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>∣</span></span></span></span>，高次项对应负幂次函数。
二次项通过配方为
<span><span>(x+p2)2+(q−p24)\left(x+\frac{p}{2}\right)^2+\left(q-\frac{p^2}{4}\right)</span><span><span><span></span><span><span><span><span>(</span></span><span>x</span><span></span><span>+</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>p</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span><span>(</span></span><span>q</span><span></span><span>−</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>4</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>p</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span>，
结合凑微分法分别积出对数与反正切 <span><span>arctan⁡\arctan</span><span><span><span></span><span>arctan</span></span></span></span>。</p><p>这个不算难，但是会轻视和遗忘。</p></section><section><h4>华理士公式<a href="#华理士公式"><span>#</span></a></h4><p>定义</p><span><span><span>In=∫0π/2sin⁡nx dx=∫0π/2cos⁡nx dx,n∈N+.I_n=\int_{0}^{\pi/2}\sin^n x\,\mathrm{d}x
=\int_{0}^{\pi/2}\cos^n x\,\mathrm{d}x,
\quad n\in\mathbb{N}^+.</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>π</span><span>/2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>sin</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>x</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>π</span><span>/2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>cos</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>x</span><span></span><span>d</span><span>x</span><span>,</span><span></span><span></span><span>n</span><span></span><span>∈</span><span></span></span><span><span></span><span><span>N</span><span><span><span><span><span><span></span><span><span>+</span></span></span></span></span></span></span></span><span>.</span></span></span></span></span><span><span><span>In={n−1n⋅n−3n−2⋯12⋅π2,n 为正偶数,n−1n⋅n−3n−2⋯23⋅1,n 为正奇数.I_n=
\begin{cases}
\dfrac{n-1}{n}\cdot\dfrac{n-3}{n-2}\cdots
\dfrac{1}{2}\cdot\dfrac{\pi}{2}, &amp; n\text{ 为正偶数},\\[6pt]
\dfrac{n-1}{n}\cdot\dfrac{n-3}{n-2}\cdots
\dfrac{2}{3}\cdot1, &amp; n\text{ 为正奇数}.
\end{cases}</span><span><span><span></span><span><span>I</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>⎩</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎨</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎧</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span><span><span><span><span><span></span><span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>n</span><span></span><span>−</span><span></span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>⋅</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span><span></span><span>−</span><span></span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>n</span><span></span><span>−</span><span></span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>⋯</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>⋅</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>π</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span></span></span><span><span></span><span><span><span></span><span><span><span><span><span><span></span><span><span>n</span></span></span><span><span></span><span></span></span><span><span></span><span><span>n</span><span></span><span>−</span><span></span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>⋅</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>n</span><span></span><span>−</span><span></span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>n</span><span></span><span>−</span><span></span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>⋯</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>3</span></span></span><span><span></span><span></span></span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>⋅</span><span></span><span>1</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>n</span><span><span> </span><span>为正偶数</span></span><span>,</span></span></span><span><span></span><span><span>n</span><span><span> </span><span>为正奇数</span></span><span>.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span><p>如果区间变成其他的，可以通过奇偶性进行转换。</p></section><section><h4>区间再现<a href="#区间再现"><span>#</span></a></h4><p>碰到三角函数相关的积分计算，一定是要先想到区间再现。</p><p>对任意连续函数 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span>，令 <span><span>t=a+b−xt=a+b-x</span><span><span><span></span><span>t</span><span></span><span>=</span><span></span></span><span><span></span><span>a</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span></span></span></span>：</p><span><span><span>∫abf(x) dx=∫abf(a+b−x) dx\int_{a}^{b}f(x)\,\mathrm{d}x
=\int_{a}^{b}f(a+b-x)\,\mathrm{d}x</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>a</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span><p>进而推导出“自加平均法”：</p><span><span><span>I=∫abf(x) dx=12∫ab[f(x)+f(a+b−x)] dxI=\int_{a}^{b}f(x)\,\mathrm{d}x
=\frac{1}{2}\int_{a}^{b}
\bigl[f(x)+f(a+b-x)\bigr]\,\mathrm{d}x</span><span><span><span></span><span>I</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>[</span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>f</span><span>(</span><span>a</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>x</span><span>)</span><span><span>]</span></span><span></span><span>d</span><span>x</span></span></span></span></span><span><span><span>∫0πxf(sin⁡x) dx=π2∫0πf(sin⁡x) dx\int_{0}^{\pi}xf(\sin x)\,\mathrm{d}x
=\frac{\pi}{2}\int_{0}^{\pi}f(\sin x)\,\mathrm{d}x</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>x</span><span>f</span><span>(</span><span>sin</span><span></span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>π</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>0</span></span></span></span><span><span></span><span><span><span>π</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>sin</span><span></span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span></section><section><h4>变限积分 + 极限<a href="#变限积分--极限"><span>#</span></a></h4><p>需要注意换元。</p><p>若 <span><span>Φ(x)=∫α(x)β(x)f(t) dt\Phi(x)=\int_{\alpha(x)}^{\beta(x)}f(t)\,\mathrm{d}t</span><span><span><span></span><span>Φ</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>α</span><span>(</span><span>x</span><span>)</span></span></span></span><span><span></span><span><span><span>β</span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>t</span><span>)</span><span></span><span>d</span><span>t</span></span></span></span>，其中 <span><span>f(t)f(t)</span><span><span><span></span><span>f</span><span>(</span><span>t</span><span>)</span></span></span></span>
连续，<span><span>α(x),β(x)\alpha(x),\beta(x)</span><span><span><span></span><span>α</span><span>(</span><span>x</span><span>)</span><span>,</span><span></span><span>β</span><span>(</span><span>x</span><span>)</span></span></span></span> 可导，则：</p><span><span><span>Φ′(x)=f(β(x))β′(x)−f(α(x))α′(x)\Phi'(x)=f(\beta(x))\beta'(x)-f(\alpha(x))\alpha'(x)</span><span><span><span></span><span><span>Φ</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>β</span><span>(</span><span>x</span><span>))</span><span><span>β</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>f</span><span>(</span><span>α</span><span>(</span><span>x</span><span>))</span><span><span>α</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span></span><p>若被积函数内部同时包含积分变量 <span><span>tt</span><span><span><span></span><span>t</span></span></span></span> 和外层极限/求导变量 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>
（如 <span><span>F(x)=∫ab(x)f(x,t) dtF(x)=\int_{a}^{b(x)}f(x,t)\,\mathrm{d}t</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span><span>(</span><span>x</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>t</span><span>)</span><span></span><span>d</span><span>t</span></span></span></span>）：</p><p>绝不可直接套用公式求导。</p><ul>
<li>策略 1（因式分离）：若能提纯，例如 <span><span>∫ax(x−t)f(t) dt=x∫axf(t) dt−∫axtf(t) dt\int_{a}^{x}(x-t)f(t)\,\mathrm{d}t=x\int_{a}^{x}f(t)\,\mathrm{d}t-\int_{a}^{x}tf(t)\,\mathrm{d}t</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>t</span><span>)</span><span>f</span><span>(</span><span>t</span><span>)</span><span></span><span>d</span><span>t</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>t</span><span>)</span><span></span><span>d</span><span>t</span><span></span><span>−</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>t</span><span>f</span><span>(</span><span>t</span><span>)</span><span></span><span>d</span><span>t</span></span></span></span>，拆开后再求导。</li>
<li>策略 2（换元消除）：若 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 混在复合函数内（如 <span><span>f(x−t)f(x-t)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span></span><span>−</span><span></span></span><span><span></span><span>t</span><span>)</span></span></span></span> 或 <span><span>f(xt)f(xt)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>t</span><span>)</span></span></span></span>），
必须先做换元令 <span><span>u=φ(x,t)u=\varphi(x,t)</span><span><span><span></span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span>φ</span><span>(</span><span>x</span><span>,</span><span></span><span>t</span><span>)</span></span></span></span>，将参变量 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 转移至积分上下限
或系数中，再行求导或利用 L’Hôpital 法则求极限。</li>
</ul></section><section><h4>积分相关的计算步骤（不管是二重积分还是一重积分都一样的）<a href="#积分相关的计算步骤不管是二重积分还是一重积分都一样的"><span>#</span></a></h4><ol>
<li>确认积分的上下限</li>
<li>确认积分范围</li>
<li>后续计算</li>
</ol><p>一定不可以说偷懒，然后忽略了前两步。很多时候都是错在确认积分上下限上，其实也就是积分的范围。</p><p>根据经验，<strong>如果感觉积分区域题目写的不明确，或者自己画出来怪怪的，那么一定是自己理解错了！</strong></p><p>例如很多题都是从 0 积分到 pi/2，但是有些题就是从 pi/4 积分到 pi/3 之类的。</p><p>此外，还需要注意不要把后者想当然在计算积分的时候抄成前者。</p></section><section><h4>求导函数是否连续<a href="#求导函数是否连续"><span>#</span></a></h4><p>本来这是导数的题，但是套了一层不定积分之后就不会辨析了。</p><p>先定义求出单点导数，然后不会做了。</p><p>事实上，接下来就应该是先把挖掉这个点的导数解出来，然后求极限看看是不是为单点导数。</p><p></p><figure><img alt="张宇基础 1000 2 刷错题重刷第 9 章错题" loading="lazy" width="865" height="222" src="/_astro/p18.Ccv5mOqs_1GT8rA.webp" /><figcaption>张宇基础 1000 2 刷错题重刷第 9 章错题</figcaption></figure><p></p></section></section><section><h3>第 10 章 - 一元函数积分的应用 1（几何应用）<a href="#第-10-章---一元函数积分的应用-1几何应用"><span>#</span></a></h3><section><h4>计算面积<a href="#计算面积"><span>#</span></a></h4><p>面积计算其实没什么好说的，注意计算就好了。</p><p>可以注意以下三点：</p><ul>
<li><span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 坐标系：必要的时候可以交换。</li>
<li>参数方程：当成换元法去理解。</li>
<li>极坐标：也当成换元法去理解。</li>
</ul></section><section><h4>计算体积<a href="#计算体积"><span>#</span></a></h4><p>不要去背任何公式，使用二重积分的方法去理解，也就是：</p><span><span><span>dV=2πr(x,y) dσ=2π∣Ax+By+C∣A2+B2 dx dy\mathrm{d}V=2\pi r(x,y)\,\mathrm{d}\sigma
=2\pi\frac{|Ax+By+C|}{\sqrt{A^2+B^2}}\,\mathrm{d}x\,\mathrm{d}y</span><span><span><span></span><span>d</span><span>V</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>π</span><span>r</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>d</span><span>σ</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>π</span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>∣</span><span>A</span><span>x</span><span></span><span>+</span><span></span><span>B</span><span>y</span><span></span><span>+</span><span></span><span>C</span><span>∣</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>d</span><span>x</span><span></span><span>d</span><span>y</span></span></span></span></span><p>可以注意，这个公式不要忘了 <span><span>2π2\pi</span><span><span><span></span><span>2</span><span>π</span></span></span></span>，本质上是圆的周长公式。</p><blockquote><p><strong>校验：</strong> 这个体积公式使用了帕普斯定理，旋转轴应与区域相离；
若旋转轴穿过区域，需要分割区域或改用直接积分。</p></blockquote></section><section><h4>计算弧长与侧面积<a href="#计算弧长与侧面积"><span>#</span></a></h4><p>弧长公式通常为：</p><span><span><span>L=∫ab1+(f′(x))2 dxL=\int_{a}^{b}\sqrt{1+\bigl(f'(x)\bigr)^2}\,\mathrm{d}x</span><span><span><span></span><span>L</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>1</span><span></span><span>+</span><span></span><span><span>(</span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span><span><span>)</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>d</span><span>x</span></span></span></span></span><p>参数方程的弧长公式为：</p><span><span><span>L=∫ab(x′(t))2+(y′(t))2 dtL=\int_{a}^{b}\sqrt{\bigl(x'(t)\bigr)^2+\bigl(y'(t)\bigr)^2}\,\mathrm{d}t</span><span><span><span></span><span>L</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span>(</span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>t</span><span>)</span><span><span><span>)</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span><span><span>(</span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>t</span><span>)</span><span><span><span>)</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>d</span><span>t</span></span></span></span></span><p>极坐标方程的弧长公式为：</p><span><span><span>L=∫abr2(t)+(r′(t))2 dtL=\int_{a}^{b}\sqrt{r^2(t)+\bigl(r'(t)\bigr)^2}\,\mathrm{d}t</span><span><span><span></span><span>L</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>(</span><span>t</span><span>)</span><span></span><span>+</span><span></span><span><span>(</span></span><span><span>r</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>t</span><span>)</span><span><span><span>)</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>d</span><span>t</span></span></span></span></span><p>使用上述弧长公式的时候，一定要注意不要忘了平方。</p><p>绕 x 轴的侧面积：</p><span><span><span>S=∫ab2πy(x)1+(y′(x))2 dxS=\int_{a}^{b}2\pi y(x)
\sqrt{1+\bigl(y'(x)\bigr)^2}\,\mathrm{d}x</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>2</span><span>π</span><span>y</span><span>(</span><span>x</span><span>)</span><span><span><span><span><span><span></span><span><span>1</span><span></span><span>+</span><span></span><span><span>(</span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span><span><span>)</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>d</span><span>x</span></span></span></span></span><p>绕 y 轴的侧面积：</p><span><span><span>S=∫ab2πx(y)1+(x′(y))2 dyS=\int_{a}^{b}2\pi x(y)
\sqrt{1+\bigl(x'(y)\bigr)^2}\,\mathrm{d}y</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>2</span><span>π</span><span>x</span><span>(</span><span>y</span><span>)</span><span><span><span><span><span><span></span><span><span>1</span><span></span><span>+</span><span></span><span><span>(</span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>y</span><span>)</span><span><span><span>)</span></span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>d</span><span>y</span></span></span></span></span><p>稍微通用一点，可以理解为：</p><span><span><span>S=∫L2πr(x,y) ds=2πA2+B2∫L∣Ax+By+C∣ dsS=\int_{L}2\pi r(x,y)\,\mathrm{d}s
=\frac{2\pi}{\sqrt{A^2+B^2}}
\int_{L}|Ax+By+C|\,\mathrm{d}s</span><span><span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>L</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>2</span><span>π</span><span>r</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>d</span><span>s</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span><span><span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>2</span><span>π</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>L</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∣</span><span>A</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span><span>y</span><span></span><span>+</span><span></span></span><span><span></span><span>C</span><span>∣</span><span></span><span>d</span><span>s</span></span></span></span></span><p>注意 <span><span>r(x,y)r(x,y)</span><span><span><span></span><span>r</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span> 是点到旋转轴的距离。</p><p>此外需要注意，在计算侧面积的时候，需要看题设。题设可能是求整体面积，需要加上底面积。</p></section><section><h4>形心<a href="#形心"><span>#</span></a></h4><span><span><span>xˉ=1S∬Dx dx dy,yˉ=1S∬Dy dx dy,S=∬Ddx dy\bar{x}=\frac{1}{S}\iint_Dx\,\mathrm{d}x\,\mathrm{d}y,
\qquad
\bar{y}=\frac{1}{S}\iint_Dy\,\mathrm{d}x\,\mathrm{d}y,
\qquad
S=\iint_D\mathrm{d}x\,\mathrm{d}y</span><span><span><span></span><span><span><span><span><span><span></span><span>x</span></span><span><span></span><span><span>ˉ</span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>S</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>x</span><span></span><span>d</span><span>x</span><span></span><span>d</span><span>y</span><span>,</span><span></span><span></span><span><span><span><span><span><span></span><span>y</span></span><span><span></span><span><span>ˉ</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>S</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>y</span><span></span><span>d</span><span>x</span><span></span><span>d</span><span>y</span><span>,</span><span></span><span></span><span>S</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>d</span><span>x</span><span></span><span>d</span><span>y</span></span></span></span></span><p>其中 <span><span>SS</span><span><span><span></span><span>S</span></span></span></span> 为区域 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 的面积。</p><p>为冷门考点，但需要掌握。</p></section><section><h4>关于几何计算的一些技巧<a href="#关于几何计算的一些技巧"><span>#</span></a></h4><p>如果 Sa，Sb 很难算，那么可以计算 Sa+Sb 和 Sa。</p><p>总的来说，就是小学就学过的切割，拼凑法。</p></section></section><section><h3>第 11 章 - 一元函数积分的应用 2（中值定理）<a href="#第-11-章---一元函数积分的应用-2中值定理"><span>#</span></a></h3><section><h4>积分绝对值不等式<a href="#积分绝对值不等式"><span>#</span></a></h4><span><span><span>∣∫abf(x) dx∣≤∫ab∣f(x)∣ dx\left|\int_{a}^{b}f(x)\,\mathrm{d}x\right|
\le\int_{a}^{b}|f(x)|\,\mathrm{d}x</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span><span><span><span><span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span><span>≤</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>∣</span><span>f</span><span>(</span><span>x</span><span>)</span><span>∣</span><span></span><span>d</span><span>x</span></span></span></span></span></section><section><h4>积分的最大值最小值定理<a href="#积分的最大值最小值定理"><span>#</span></a></h4><p>设函数 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在闭区间 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span>（<span><span>a&lt;ba&lt;b</span><span><span><span></span><span>a</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>b</span></span></span></span>）上连续，且 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 和 <span><span>MM</span><span><span><span></span><span>M</span></span></span></span>
分别为 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上的最小值与最大值，即：</p><span><span><span>m≤f(x)≤M,∀x∈[a,b]m\le f(x)\le M,\qquad \forall x\in[a,b]</span><span><span><span></span><span>m</span><span></span><span>≤</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>≤</span><span></span></span><span><span></span><span>M</span><span>,</span><span></span><span></span><span>∀</span><span>x</span><span></span><span>∈</span><span></span></span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span></span><p>则有以下不等式成立：</p><span><span><span>m(b−a)≤∫abf(x) dx≤M(b−a)m(b-a)\le\int_{a}^{b}f(x)\,\mathrm{d}x\le M(b-a)</span><span><span><span></span><span>m</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span><span></span><span>≤</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>≤</span><span></span></span><span><span></span><span>M</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span></span></span></span></span><p>可以使用积分的保号性证明。</p></section><section><h4>积分中值定理<a href="#积分中值定理"><span>#</span></a></h4><p>积分中值定理有两种区间形式，一种是利用积分最大值最小值定理证明，另一种是利用拉格朗日中值定理证明。</p><p>利用积分最大值最小值定理：</p><span><span><span>m(b−a)≤∫abf(x) dx≤M(b−a)m(b-a)\le\int_{a}^{b}f(x)\,\mathrm{d}x\le M(b-a)</span><span><span><span></span><span>m</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span><span></span><span>≤</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>≤</span><span></span></span><span><span></span><span>M</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span></span></span></span></span><p>因为 <span><span>b−a&gt;0b - a &gt; 0</span><span><span><span></span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>，两边同除以 <span><span>(b−a)(b - a)</span><span><span><span></span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span></span></span></span>：</p><span><span><span>m≤1b−a∫abf(x) dx≤Mm\le\frac{1}{b-a}\int_{a}^{b}f(x)\,\mathrm{d}x\le M</span><span><span><span></span><span>m</span><span></span><span>≤</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>b</span><span></span><span>−</span><span></span><span>a</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>≤</span><span></span></span><span><span></span><span>M</span></span></span></span></span><p>记该平均值为
<span><span>μ=1b−a∫abf(x) dx\mu=\frac{1}{b-a}\int_{a}^{b}f(x)\,\mathrm{d}x</span><span><span><span></span><span>μ</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>b</span><span>−</span><span>a</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span>。
因为 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在闭区间 <span><span>[a,b][a,b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上连续，由介值定理，必存在至少一点
<span><span>ξ∈[a,b]\xi\in[a,b]</span><span><span><span></span><span>ξ</span><span></span><span>∈</span><span></span></span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span>，使得：</p><span><span><span>f(ξ)=μ=1b−a∫abf(x) dxf(\xi)=\mu=\frac{1}{b-a}\int_{a}^{b}f(x)\,\mathrm{d}x</span><span><span><span></span><span>f</span><span>(</span><span>ξ</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>μ</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>b</span><span></span><span>−</span><span></span><span>a</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span><p>两边同乘 <span><span>(b−a)(b - a)</span><span><span><span></span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span></span></span></span>，即得：</p><span><span><span>∫abf(x) dx=f(ξ)(b−a),ξ∈[a,b]\int_{a}^{b}f(x)\,\mathrm{d}x=f(\xi)(b-a),
\qquad \xi\in[a,b]</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>ξ</span><span>)</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span><span>,</span><span></span><span></span><span>ξ</span><span></span><span>∈</span><span></span></span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span></span><p>构造变上限积分辅助函数：</p><span><span><span>F(x)=∫axf(t) dt,x∈[a,b]F(x)=\int_{a}^{x}f(t)\,\mathrm{d}t,
\qquad x\in[a,b]</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>t</span><span>)</span><span></span><span>d</span><span>t</span><span>,</span><span></span><span></span><span>x</span><span></span><span>∈</span><span></span></span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span></span><p>因为 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>[a,b][a, b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上连续，由微积分基本定理可知：</p><p><span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 在闭区间 <span><span>[a,b][a, b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上连续；
<span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 在开区间 <span><span>(a,b)(a,b)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span> 内可导，且导函数 <span><span>F′(x)=f(x)F'(x)=f(x)</span><span><span><span></span><span><span>F</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span>。</p><p>利用拉格朗日中值定理：</p><p>对函数 <span><span>F(x)F(x)</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>)</span></span></span></span> 在 <span><span>[a,b][a, b]</span><span><span><span></span><span>[</span><span>a</span><span>,</span><span></span><span>b</span><span>]</span></span></span></span> 上应用拉格朗日中值定理，必存在至少一点 <span><span>ξ∈(a,b)\xi \in (a, b)</span><span><span><span></span><span>ξ</span><span></span><span>∈</span><span></span></span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span>，使得：</p><span><span><span>F(b)−F(a)=F′(ξ)(b−a)F(b)-F(a)=F'(\xi)(b-a)</span><span><span><span></span><span>F</span><span>(</span><span>b</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>F</span><span>(</span><span>a</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>F</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>ξ</span><span>)</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span></span></span></span></span><p>代入 <span><span>F(b)=∫abf(t) dtF(b)=\int_{a}^{b}f(t)\,\mathrm{d}t</span><span><span><span></span><span>F</span><span>(</span><span>b</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>t</span><span>)</span><span></span><span>d</span><span>t</span></span></span></span>、
<span><span>F(a)=∫aaf(t) dt=0F(a)=\int_{a}^{a}f(t)\,\mathrm{d}t=0</span><span><span><span></span><span>F</span><span>(</span><span>a</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>a</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>t</span><span>)</span><span></span><span>d</span><span>t</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 以及 <span><span>F′(ξ)=f(ξ)F'(\xi)=f(\xi)</span><span><span><span></span><span><span>F</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>ξ</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>ξ</span><span>)</span></span></span></span>，
立即得到：</p><span><span><span>∫abf(x) dx=f(ξ)(b−a),ξ∈(a,b)\int_{a}^{b}f(x)\,\mathrm{d}x=f(\xi)(b-a),
\qquad \xi\in(a,b)</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>ξ</span><span>)</span><span>(</span><span>b</span><span></span><span>−</span><span></span></span><span><span></span><span>a</span><span>)</span><span>,</span><span></span><span></span><span>ξ</span><span></span><span>∈</span><span></span></span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>)</span></span></span></span></span></section><section><h4>利用变上限积分证明<a href="#利用变上限积分证明"><span>#</span></a></h4><p>变限积分的难点在于遗忘，很多时候想不到可以用变限积分。</p><p>此外，如果变限积分内部有绝对值，那么遵循有绝对值拆绝对值，必须先拆绝对值。</p></section><section><h4>结合微分中值定理 / 泰勒公式证明<a href="#结合微分中值定理--泰勒公式证明"><span>#</span></a></h4><p>那么此时，积分一般只是作为题目的一步，只是辅助，例如为罗尔定理找点等。</p></section><section><h4>分部积分证明中值定理<a href="#分部积分证明中值定理"><span>#</span></a></h4><p>在上面那条路走不通的时候，往往是利用换元法 + 分部积分来证明。</p></section></section><section><h3>第 12 章 - 一元函数积分的应用 3（物理应用）<a href="#第-12-章---一元函数积分的应用-3物理应用"><span>#</span></a></h3><section><h4>抽水做功<a href="#抽水做功"><span>#</span></a></h4><p>不需要背任何公式，考场现推。</p><span><span><span>W=FsW=Fs</span><span><span><span></span><span>W</span><span></span><span>=</span><span></span></span><span><span></span><span>F</span><span>s</span></span></span></span></span><span><span><span>F=mgF=mg</span><span><span><span></span><span>F</span><span></span><span>=</span><span></span></span><span><span></span><span>m</span><span>g</span></span></span></span></span><span><span><span>m=ρVm=\rho V</span><span><span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>ρ</span><span>V</span></span></span></span></span><span><span><span>V=ShV=Sh</span><span><span><span></span><span>V</span><span></span><span>=</span><span></span></span><span><span></span><span>S</span><span>h</span></span></span></span></span><p>然后具体题目具体分析，一般是把 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span> 和 <span><span>ss</span><span><span><span></span><span>s</span></span></span></span> 代换为 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 相关的式子，
<span><span>SS</span><span><span><span></span><span>S</span></span></span></span> 代换为 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 相关的式子。</p><p>需要注意的是，s 是距离，且抽水做功是克服重力做功，而不是对压力做功。</p></section><section><h4>压力<a href="#压力"><span>#</span></a></h4><p>不需要背任何公式，考场现推。</p><span><span><span>F=PSF=PS</span><span><span><span></span><span>F</span><span></span><span>=</span><span></span></span><span><span></span><span>P</span><span>S</span></span></span></span></span><span><span><span>P=ρghP=\rho gh</span><span><span><span></span><span>P</span><span></span><span>=</span><span></span></span><span><span></span><span>ρ</span><span>g</span><span>h</span></span></span></span></span><p>可以得到 <span><span>F=ρghSF=\rho ghS</span><span><span><span></span><span>F</span><span></span><span>=</span><span></span></span><span><span></span><span>ρ</span><span>g</span><span>h</span><span>S</span></span></span></span>，然后具体题目具体分析，这个 <span><span>SS</span><span><span><span></span><span>S</span></span></span></span> 是面积，
一般是 <span><span>x=g(y)x=g(y)</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>g</span><span>(</span><span>y</span><span>)</span></span></span></span>，这个 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span> 是高，积分的时候一般是把 <span><span>hh</span><span><span><span></span><span>h</span></span></span></span> 替换为
<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 等变量。</p></section><section><h4>引力以及引力做功<a href="#引力以及引力做功"><span>#</span></a></h4><p>首先利用引力公式求出引力，然后利用抽水做功那套的推导去计算做功。</p><p>引力公式为：</p><span><span><span>F=Gm1m2r2F=\frac{Gm_1m_2}{r^2}</span><span><span><span></span><span>F</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>G</span><span><span>m</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>m</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><p>其中 <span><span>GG</span><span><span><span></span><span>G</span></span></span></span> 是引力常数，<span><span>m1m_1</span><span><span><span></span><span><span>m</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 和 <span><span>m2m_2</span><span><span><span></span><span><span>m</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是两个物体的质量，<span><span>rr</span><span><span><span></span><span>r</span></span></span></span> 是两个物体之间的距离。</p><p>在计算引力的时候，需要注意引力的方向。</p></section></section><section><h3>第 13 章 - 多元函数微分学<a href="#第-13-章---多元函数微分学"><span>#</span></a></h3><section><h4>多元函数极限与连续<a href="#多元函数极限与连续"><span>#</span></a></h4><p>解题流程：</p><ol>
<li>判断次数。对于分母除原点外不为零的齐次有理式，若分子总次数低于
分母总次数，通常可利用夹逼定理判断极限为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>；若次数不低于分母，
则需要进一步分析，极限不一定存在。</li>
<li>利用不等式以及夹逼定理</li>
</ol><p>关于多元函数的连续性，一般也是这么做。</p></section><section><h4>多元函数偏导<a href="#多元函数偏导"><span>#</span></a></h4><p>需要注意记号问题，<span><span>fxxf_{xx}</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span><span>xx</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>fx′f'_x</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>x</span></span></span><span><span></span><span><span><span>′</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 等记号的含义。</p><p>做关于多元函数偏导相关的问题，搞清楚记号的含义，这类题都不会难。</p></section><section><h4>先代后求与先求后代<a href="#先代后求与先求后代"><span>#</span></a></h4><p>先代后求：如果要求某个点的偏导，假设求 <span><span>fxf_x</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，那么可以先把 <span><span>y0y_0</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 点代入，然后直接对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 求偏导即可。</p><p>先求后代：先按照多元函数偏导公式法求出偏导，然后代入点，得到偏导值。</p><p>一般而言，求单点相关的问题都是采用前者。</p></section><section><h4>多元函数偏导公式法<a href="#多元函数偏导公式法"><span>#</span></a></h4><p>对于函数 <span><span>z=f(x,y)z=f(x,y)</span><span><span><span></span><span>z</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span>，其偏导公式为：</p><span><span><span>∂z∂x=−Fx(x,y,z)Fz(x,y,z)=−∂F∂x∂F∂z\frac{\partial z}{\partial x}
=-\frac{F_x(x,y,z)}{F_z(x,y,z)}
=-\frac{\frac{\partial F}{\partial x}}{\frac{\partial F}{\partial z}}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>∂</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>∂</span><span>z</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>F</span><span><span><span><span><span><span></span><span><span>z</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>,</span><span></span><span>z</span><span>)</span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>F</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>,</span><span></span><span>z</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>∂</span><span>z</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>∂</span><span>F</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>∂</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>∂</span><span>F</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><span><span><span>∂z∂y=−Fy(x,y,z)Fz(x,y,z)=−∂F∂y∂F∂z\frac{\partial z}{\partial y}
=-\frac{F_y(x,y,z)}{F_z(x,y,z)}
=-\frac{\frac{\partial F}{\partial y}}{\frac{\partial F}{\partial z}}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>∂</span><span>y</span></span></span><span><span></span><span></span></span><span><span></span><span><span>∂</span><span>z</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span>F</span><span><span><span><span><span><span></span><span><span>z</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>,</span><span></span><span>z</span><span>)</span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>F</span><span><span><span><span><span><span></span><span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>,</span><span></span><span>z</span><span>)</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>∂</span><span>z</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>∂</span><span>F</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>∂</span><span>y</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>∂</span><span>F</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><p>一定要注意负号。</p></section><section><h4>多元函数偏导隐函数求导<a href="#多元函数偏导隐函数求导"><span>#</span></a></h4><p>隐函数求导主要的问题就是要注意对每个变量都要判断是否要求导，本身是否为常数。</p><p>比较典型的例子是 <span><span>f(x+y,xy)f(x+y,xy)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>y</span><span>,</span><span></span><span>x</span><span>y</span><span>)</span></span></span></span>，求 <span><span>ff</span><span><span><span></span><span>f</span></span></span></span> 对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的二阶偏导等。</p></section><section><h4>多元函数偏导全微分法<a href="#多元函数偏导全微分法"><span>#</span></a></h4><p>全微分法适用于给定非常多方程求两个系数之间的关系。</p><p>然而在使用这个方法之前，需要先考虑用其他两种方法。</p></section><section><h4>偏积分<a href="#偏积分"><span>#</span></a></h4><p>主要是两个考点，一个是如果 <span><span>f(x,y)f(x,y)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span> 偏导数连续，那么 <span><span>∂P∂y=∂Q∂x\frac{\partial P}{\partial y}=\frac{\partial Q}{\partial x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>∂</span><span>y</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>∂</span><span>P</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>∂</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>∂</span><span>Q</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p><p>另一个是可以使用类似求一元函数积分的方法求解。</p></section><section><h4>多元函数微分<a href="#多元函数微分"><span>#</span></a></h4><p>一元函数的微分和导数基本一致，所以没什么好考的。但是多元函数微分很有的考。</p><p>本质是因为多元函数的偏导是对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 轴，<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 轴求偏导，而多元函数的微分是对于所有点来说的，条件更强。</p><p>具体而言，偏导连续可以推导出可微，可微可以推导出偏导 / 连续。</p><p>而偏导存在推导不出来连续，连续也推导不出来偏导存在。</p><p>对于这类题，最重要的是记住形式，并且套上去就好了。</p></section><section><h4>多元函数极值<a href="#多元函数极值"><span>#</span></a></h4></section><section><h4>无条件极值<a href="#无条件极值"><span>#</span></a></h4><p>判断条件为，当 <span><span>AC−B2&gt;0AC - B^2 &gt; 0</span><span><span><span></span><span>A</span><span>C</span><span></span><span>−</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，有极值，且当 <span><span>A&lt;0A &lt; 0</span><span><span><span></span><span>A</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，有极大值，当 <span><span>A&gt;0A &gt; 0</span><span><span><span></span><span>A</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，有极小值。</p><p>需要注意的是，当 <span><span>AC−B2=0AC-B^2=0</span><span><span><span></span><span>A</span><span>C</span><span></span><span>−</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，该方法失效，需要使用其他方法，一般不会出现这种情况。</p><p>当 <span><span>AC−B2&lt;0AC-B^2&lt;0</span><span><span><span></span><span>A</span><span>C</span><span></span><span>−</span><span></span></span><span><span></span><span><span>B</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，没有极值。</p></section><section><h4>多元函数经典反例<a href="#多元函数经典反例"><span>#</span></a></h4><p>无外乎都是 <span><span>f(x,y)=xm+ynf(x, y)=x^m+y^n</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span>，中间的符号可以变，总体的符号也可以变，<span><span>m=nm=n</span><span><span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span></span></span></span>。</p></section><section><h4>拉格朗日乘数法<a href="#拉格朗日乘数法"><span>#</span></a></h4><p>假设条件为 <span><span>f(x,y)=0f(x, y)=0</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，令 <span><span>F(x,y,λ)=0F(x, y, \lambda)=0</span><span><span><span></span><span>F</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>,</span><span></span><span>λ</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，然后分别对 <span><span>x,y,λx, y, \lambda</span><span><span><span></span><span>x</span><span>,</span><span></span><span>y</span><span>,</span><span></span><span>λ</span></span></span></span> 求偏导，得到三个方程，联立求解。</p><p>考研范围内，这个点一定是极值。</p><p>需要注意该知识点和无条件极值结合起来考。</p></section><section><h4>二元函数选择题特值法<a href="#二元函数选择题特值法"><span>#</span></a></h4><p><span><span>f(x,y)f(x,y)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span> 恒等于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，然后结合语文理解。</p></section></section><section><h3>第 14 章 - 二元函数积分学<a href="#第-14-章---二元函数积分学"><span>#</span></a></h3><section><h4>二重积分积分中值定理<a href="#二重积分积分中值定理"><span>#</span></a></h4><p>和一重积分类似的，若 <span><span>f(x,y)f(x, y)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span> 在闭区域 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 上连续，且 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 的面积记为 <span><span>SDS_D</span><span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，则在 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 内至少存在一点 <span><span>(ξ,η)(\xi, \eta)</span><span><span><span></span><span>(</span><span>ξ</span><span>,</span><span></span><span>η</span><span>)</span></span></span></span>，使得：</p><span><span><span>∬Df(x,y) dσ=f(ξ,η)⋅SD\iint_D f(x, y) \, \mathrm{d}\sigma = f(\xi, \eta) \cdot S_D</span><span><span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>d</span><span>σ</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>ξ</span><span>,</span><span></span><span>η</span><span>)</span><span></span><span>⋅</span><span></span></span><span><span></span><span><span>S</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><p>本质是将整个曲顶柱体的体积用一个“平均高”乘以“底面积”来等价替代。</p><ol>
<li>极限题中脱积分：求区域收缩到单点的极限（例如当区域的直径 <span><span>d=(x2+y2)1/2→0d = (x^2+y^2)^{1/2} \to 0</span><span><span><span></span><span>d</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>1/2</span></span></span></span></span></span></span></span></span><span></span><span>→</span><span></span></span><span><span></span><span>0</span></span></span></span> 时），利用积分中值定理把积分号脱掉，化为点值乘以面积，与分母的面积项消去后再求极限。</li>
<li>证明题中若出现积分与某一点函数值的关系，往往直接考虑积分中值定理或与微分中值定理结合使用。</li>
</ol></section><section><h4>二重积分的对称性<a href="#二重积分的对称性"><span>#</span></a></h4><p>利用对称性化简二重积分是考研中最核心的降维技巧，做题前必须优先观察。</p></section><section><h4>关于某个轴对称<a href="#关于某个轴对称"><span>#</span></a></h4><p>假设区域 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 关于某坐标轴对称，记对称后的一半区域为 <span><span>D1D_1</span><span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>：</p><ol>
<li>关于 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 轴对称（<span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的正负对称）：
<ul>
<li>若 <span><span>f(−x,y)=−f(x,y)f(-x, y) = -f(x, y)</span><span><span><span></span><span>f</span><span>(</span><span>−</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span>（对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 为奇函数），则 <span><span>∬Df(x,y) dσ=0\iint_D f(x, y) \, \mathrm{d}\sigma = 0</span><span><span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>d</span><span>σ</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。</li>
<li>若 <span><span>f(−x,y)=f(x,y)f(-x, y) = f(x, y)</span><span><span><span></span><span>f</span><span>(</span><span>−</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span>（对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 为偶函数），则 <span><span>∬Df(x,y) dσ=2∬D1f(x,y) dσ\iint_D f(x, y) \, \mathrm{d}\sigma = 2 \iint_{D_1} f(x, y) \, \mathrm{d}\sigma</span><span><span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>d</span><span>σ</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span><span><span>D</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>d</span><span>σ</span></span></span></span>。</li>
</ul>
</li>
<li>关于 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 轴对称（<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的正负对称）：
<ul>
<li>若 <span><span>f(x,−y)=−f(x,y)f(x, -y) = -f(x, y)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>−</span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span>（对 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 为奇函数），积分为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</li>
<li>若 <span><span>f(x,−y)=f(x,y)f(x, -y) = f(x, y)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>−</span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span>（对 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 为偶函数），积分翻倍。</li>
</ul>
</li>
</ol><p>做题技巧：被积函数往往是奇偶混合项（例如 <span><span>x3+x2y+y2x^3 + x^2 y + y^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>y</span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>），必须利用积分的线性可加性拆开算，奇函数项直接扔掉写 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p></section><section><h4>关于某个点对称<a href="#关于某个点对称"><span>#</span></a></h4><p>若区域 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 关于原点对称（即 <span><span>(x,y)∈D  ⟺  (−x,−y)∈D(x, y) \in D \iff (-x, -y) \in D</span><span><span><span></span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>∈</span><span></span></span><span><span></span><span>D</span><span></span><span></span><span>⟺</span><span></span><span></span></span><span><span></span><span>(</span><span>−</span><span>x</span><span>,</span><span></span><span>−</span><span>y</span><span>)</span><span></span><span>∈</span><span></span></span><span><span></span><span>D</span></span></span></span>）：</p><ul>
<li>若 <span><span>f(−x,−y)=−f(x,y)f(-x, -y) = -f(x, y)</span><span><span><span></span><span>f</span><span>(</span><span>−</span><span>x</span><span>,</span><span></span><span>−</span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span>，则积分为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</li>
<li>若 <span><span>f(−x,−y)=f(x,y)f(-x, -y) = f(x, y)</span><span><span><span></span><span>f</span><span>(</span><span>−</span><span>x</span><span>,</span><span></span><span>−</span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span>，则积分为对称区域一半的两倍。</li>
</ul><p>考研中常考奇项，被积函数整体满足 <span><span>f(−x,−y)=−f(x,y)f(-x, -y) = -f(x, y)</span><span><span><span></span><span>f</span><span>(</span><span>−</span><span>x</span><span>,</span><span></span><span>−</span><span>y</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span></span></span></span> 时立刻得到结果为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p></section><section><h4>轮换对称<a href="#轮换对称"><span>#</span></a></h4><p>若区域 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 的边界方程中，将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 与 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 互换后区域保持完全不变（即区域关于直线 <span><span>y=xy = x</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>x</span></span></span></span> 对称）：</p><p>则被积变量具有地位对等性：</p><span><span><span>∬Df(x) dσ=∬Df(y) dσ\iint_D f(x) \, \mathrm{d}\sigma = \iint_D f(y) \, \mathrm{d}\sigma</span><span><span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>σ</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>f</span><span>(</span><span>y</span><span>)</span><span></span><span>d</span><span>σ</span></span></span></span></span><ul>
<li>
<p>识别区域具有 <span><span>x,yx, y</span><span><span><span></span><span>x</span><span>,</span><span></span><span>y</span></span></span></span> 对易不变性（如圆形 <span><span>x2+y2≤R2x^2 + y^2 \le R^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>≤</span><span></span></span><span><span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span>、正方形等）</p>
</li>
<li>
<p>将原积分 <span><span>II</span><span><span><span></span><span>I</span></span></span></span> 改写为：</p>
<span><span><span>I=12∬D[f(x,y)+f(y,x)] dσI = \frac{1}{2} \iint_D [f(x, y) + f(y, x)] \, \mathrm{d}\sigma</span><span><span><span></span><span>I</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span><span>∬</span><span><span><span><span><span><span></span><span><span>D</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>[</span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>y</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>f</span><span>(</span><span>y</span><span>,</span><span></span><span>x</span><span>)]</span><span></span><span>d</span><span>σ</span></span></span></span></span>
</li>
<li>
<p>特别适用于分子分母对称的分式化简，例如被积函数为 <span><span>xx+y\frac{x}{x+y}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>+</span><span>y</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>x</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 时，相加直接化为 <span><span>11</span><span><span><span></span><span>1</span></span></span></span>，瞬间秒杀。</p>
</li>
</ul></section><section><h4>二重积分交换积分次序<a href="#二重积分交换积分次序"><span>#</span></a></h4><p>交换积分次序的本质就是把“<span><span>XX</span><span><span><span></span><span>X</span></span></span></span> 型区域”转化为“<span><span>YY</span><span><span><span></span><span>Y</span></span></span></span> 型区域”（或反之）。</p><p>适用场景：内层积分积不出来（原函数不可求，例如含 <span><span>ex2e^{x^2}</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>、<span><span>sin⁡(y2)\sin(y^2)</span><span><span><span></span><span>sin</span><span>(</span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span></span></span></span>、<span><span>(1+x3)1/2(1+x^3)^{1/2}</span><span><span><span></span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>1/2</span></span></span></span></span></span></span></span></span></span></span></span> 等）。</p><p>解题流程：</p><ol>
<li>画图：根据给定的累次积分的上下限，反写出不等式边界，把积分区域 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 准确画出来，求出所有交点坐标。</li>
<li>切刀换向：
<ul>
<li>原积分先对 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 后对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>（先坚切，后平移）：改为先横切（对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 积），看左边界到右边界，再上下平移确定 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的范围。</li>
</ul>
</li>
<li>分块拼接：如果换向后穿入线或穿出线的函数表达式发生变化，必须将积分区域切分为多块，分别列出累次积分相加。</li>
</ol></section><section><h4>二重积分极坐标变换<a href="#二重积分极坐标变换"><span>#</span></a></h4><p>公式：</p><span><span><span>x=rcos⁡θ,y=rsin⁡θ,dσ=r drdθx = r\cos\theta, \quad y = r\sin\theta, \quad \mathrm{d}\sigma = r \, \mathrm{d}r\mathrm{d}\theta</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>cos</span><span></span><span>θ</span><span>,</span><span></span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>sin</span><span></span><span>θ</span><span>,</span><span></span><span></span><span>d</span><span>σ</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span>d</span><span>r</span><span>d</span><span>θ</span></span></span></span></span><p>千万注意：积分微元里面多乘的那个雅可比行列式因子 <span><span>rr</span><span><span><span></span><span>r</span></span></span></span>，漏掉必扣全部分数！</p><ol>
<li>积分区域 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 的边界含有圆弧、圆环、扇形或阿基米德螺线等。</li>
<li>被积函数含有 <span><span>x2+y2x^2 + y^2</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 或 <span><span>[(x2+y2)]1/2[(x^2 + y^2)]^{1/2}</span><span><span><span></span><span>[(</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span>)</span><span><span>]</span><span><span><span><span><span><span></span><span><span><span>1/2</span></span></span></span></span></span></span></span></span></span></span></span> 这类圆对称结构。</li>
</ol><p>解题方法：</p><ol>
<li>定 <span><span>θ\theta</span><span><span><span></span><span>θ</span></span></span></span> 范围：从原点出发引射线，扫过整个区域的最小倾角 <span><span>θ1\theta_1</span><span><span><span></span><span><span>θ</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 到最大倾角 <span><span>θ2\theta_2</span><span><span><span></span><span><span>θ</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</li>
<li>定 <span><span>rr</span><span><span><span></span><span>r</span></span></span></span> 范围：在 <span><span>θ\theta</span><span><span><span></span><span>θ</span></span></span></span> 范围内任作一条射线，从原点向外穿过区域，写出穿入边界 <span><span>r1(θ)r_1(\theta)</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>θ</span><span>)</span></span></span></span> 与穿出边界 <span><span>r2(θ)r_2(\theta)</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>θ</span><span>)</span></span></span></span>。</li>
<li>典型方程转化：
<ul>
<li>圆心在原点的圆 <span><span>x2+y2=R2  ⟹  r=Rx^2 + y^2 = R^2 \implies r = R</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span></span><span>⟹</span><span></span><span></span></span><span><span></span><span>r</span><span></span><span>=</span><span></span></span><span><span></span><span>R</span></span></span></span></li>
<li>偏心圆 <span><span>x2+y2=2ax  ⟹  r=2acos⁡θx^2 + y^2 = 2ax \implies r = 2a\cos\theta</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>a</span><span>x</span><span></span><span></span><span>⟹</span><span></span><span></span></span><span><span></span><span>r</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>a</span><span></span><span>cos</span><span></span><span>θ</span></span></span></span></li>
<li>偏心圆 <span><span>x2+y2=2by  ⟹  r=2bsin⁡θx^2 + y^2 = 2by \implies r = 2b\sin\theta</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>b</span><span>y</span><span></span><span></span><span>⟹</span><span></span><span></span></span><span><span></span><span>r</span><span></span><span>=</span><span></span></span><span><span></span><span>2</span><span>b</span><span></span><span>sin</span><span></span><span>θ</span></span></span></span></li>
</ul>
</li>
</ol></section><section><h4>二重积分相关的证明<a href="#二重积分相关的证明"><span>#</span></a></h4><ul>
<li>
<p>交换积分次序，使用积分中值定理</p>
</li>
<li>
<p>结合微分求极限。</p>
</li>
</ul></section><section><h4>二重积分拆根号<a href="#二重积分拆根号"><span>#</span></a></h4><p>注意，无论是反函数化简，除以 0，还是拆根号，都要考虑多种情况！！！</p><p></p><figure><img alt="张宇基础 1000 题第 14 章" loading="lazy" width="678" height="92" src="/_astro/p19.DswcmGIR_Zp6rIl.webp" /><figcaption>张宇基础 1000 题第 14 章</figcaption></figure><p></p></section></section><section><h3>第 15 章 - 微分方程<a href="#第-15-章---微分方程"><span>#</span></a></h3><section><h4>可分离变量的微分方程<a href="#可分离变量的微分方程"><span>#</span></a></h4><ul>
<li>
<p><strong>标准形式</strong>：</p>
<span><span><span>dydx=g(x)h(y)\frac{\mathrm{d}y}{\mathrm{d}x}=g(x)h(y)</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>g</span><span>(</span><span>x</span><span>)</span><span>h</span><span>(</span><span>y</span><span>)</span></span></span></span></span>
<p>或</p>
<span><span><span>M1(x)N1(y) dx+M2(x)N2(y) dy=0M_1(x)N_1(y)\,\mathrm{d}x
+M_2(x)N_2(y)\,\mathrm{d}y=0</span><span><span><span></span><span><span>M</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span><span>N</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>y</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>M</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span><span>N</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>y</span><span>)</span><span></span><span>d</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span></span>
</li>
<li>
<p><strong>解法套路</strong>：</p>
<p>在 <span><span>h(y)≠0h(y)\ne0</span><span><span><span></span><span>h</span><span>(</span><span>y</span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span> 的区间内，把所有含 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的项挪到左边，
含 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的项挪到右边，
<strong>两边直接积分</strong>：</p>
<span><span><span>∫1h(y) dy=∫g(x) dx+C\int\frac{1}{h(y)}\,\mathrm{d}y
=\int g(x)\,\mathrm{d}x+C</span><span><span><span></span><span>∫</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>h</span><span>(</span><span>y</span><span>)</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>d</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>∫</span><span></span><span>g</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>C</span></span></span></span></span>
</li>
</ul></section><section><h4>齐次微分方程（一阶）<a href="#齐次微分方程一阶"><span>#</span></a></h4><ul>
<li>
<p><strong>标准形式</strong>：</p>
<span><span><span>dydx=φ(yx)\frac{\mathrm{d}y}{\mathrm{d}x}
=\varphi\left(\frac{y}{x}\right)</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>φ</span><span></span><span><span><span>(</span></span><span><span></span><span><span><span><span><span><span></span><span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>)</span></span></span></span></span></span></span>
</li>
<li>
<p><strong>解法套路（换元法）</strong>：</p>
<ol>
<li>
<p>令 <span><span>u=yxu=\frac{y}{x}</span><span><span><span></span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，则 <span><span>y=uxy=ux</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>ux</span></span></span></span>，对其求导得：</p>
<span><span><span>dydx=u+xdudx\frac{\mathrm{d}y}{\mathrm{d}x}
=u+x\frac{\mathrm{d}u}{\mathrm{d}x}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>u</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>u</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span>
</li>
<li>
<p>代入原方程，转化为<strong>可分离变量方程</strong>：</p>
<span><span><span>u+xdudx=φ(u)⟹duφ(u)−u=dxxu+x\frac{\mathrm{d}u}{\mathrm{d}x}
=\varphi(u)
\quad\Longrightarrow\quad
\frac{\mathrm{d}u}{\varphi(u)-u}
=\frac{\mathrm{d}x}{x}</span><span><span><span></span><span>u</span><span></span><span>+</span><span></span></span><span><span></span><span>x</span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>u</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>φ</span><span>(</span><span>u</span><span>)</span><span></span><span></span><span>⟹</span><span></span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>φ</span><span>(</span><span>u</span><span>)</span><span></span><span>−</span><span></span><span>u</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>u</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span>
</li>
<li>
<p>两端积分后，务必<strong>回代</strong> <span><span>u=yxu=\frac{y}{x}</span><span><span><span></span><span>u</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p>
</li>
</ol>
</li>
</ul></section><section><h4>一阶线性微分方程<a href="#一阶线性微分方程"><span>#</span></a></h4><ul>
<li>
<p><strong>标准形式</strong>：</p>
<span><span><span>dydx+P(x)y=Q(x)\frac{\mathrm{d}y}{\mathrm{d}x}+P(x)y=Q(x)</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>P</span><span>(</span><span>x</span><span>)</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>Q</span><span>(</span><span>x</span><span>)</span></span></span></span></span>
<p>若 <span><span>Q(x)=0Q(x)=0</span><span><span><span></span><span>Q</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，称为齐次；若 <span><span>Q(x)≠0Q(x)\ne0</span><span><span><span></span><span>Q</span><span>(</span><span>x</span><span>)</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span>，称为非齐次。</p>
</li>
<li>
<p><strong>通解公式（必背秒杀公式）</strong>：</p>
<span><span><span>y=e−∫P(x) dx(∫Q(x)e∫P(x) dx dx+C)y=e^{-\int P(x)\,\mathrm{d}x}
\left(\int Q(x)e^{\int P(x)\,\mathrm{d}x}\,\mathrm{d}x+C\right)</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>−</span><span></span><span>∫</span><span></span><span>P</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span></span></span></span></span><span></span><span><span><span>(</span></span><span>∫</span><span></span><span>Q</span><span>(</span><span>x</span><span>)</span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>∫</span><span></span><span>P</span><span>(</span><span>x</span><span>)</span><span></span><span>d</span><span>x</span></span></span></span></span></span></span></span></span><span></span><span>d</span><span>x</span><span></span><span>+</span><span></span><span>C</span><span><span>)</span></span></span></span></span></span></span>
</li>
<li>
<p><strong>反客为主技巧</strong>：</p>
<p>若方程关于 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 严重非线性，但关于 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span>、<span><span>x′x'</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span> 是一次的，
可将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 视为未知函数、<span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 视为自变量，化为：</p>
<span><span><span>dxdy+P(y)x=Q(y)\frac{\mathrm{d}x}{\mathrm{d}y}+P(y)x=Q(y)</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>y</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>P</span><span>(</span><span>y</span><span>)</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>Q</span><span>(</span><span>y</span><span>)</span></span></span></span></span>
<p>套用上述公式只需将 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 与 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 互换。</p>
</li>
</ul></section><section><h4>可降阶的微分方程（三大经典类型）<a href="#可降阶的微分方程三大经典类型"><span>#</span></a></h4></section><section><h4>1. <span><span>y(n)=f(x)y^{(n)}=f(x)</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>(</span><span>n</span><span>)</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 型（仅含自变量 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 和最高阶导数）<a href="#1-ynfxynfxynfx-型仅含自变量-xxx-和最高阶导数"><span>#</span></a></h4><ul>
<li><strong>解法</strong>：直接连续对 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 积分 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次，每积一次加一个任意常数，
共产生 <span><span>C1,C2,…,CnC_1,C_2,\dots,C_n</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span>…</span><span></span><span>,</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</li>
</ul></section><section><h4>2. <span><span>y′′=f(x,y′)y''=f(x,y')</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>)</span></span></span></span> 型（<strong>缺 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 型</strong>）<a href="#2-yfxyyfxyyfxy-型缺-yyy-型"><span>#</span></a></h4><ul>
<li>
<p><strong>核心代换</strong>：令 <span><span>p=y′=dydxp=y'=\frac{\mathrm{d}y}{\mathrm{d}x}</span><span><span><span></span><span>p</span><span></span><span>=</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>，则
<span><span>y′′=p′=dpdxy''=p'=\frac{\mathrm{d}p}{\mathrm{d}x}</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>p</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>p</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span>。</p>
</li>
<li>
<p><strong>降阶过程</strong>：原式化为一阶方程
<span><span>dpdx=f(x,p)\frac{\mathrm{d}p}{\mathrm{d}x}=f(x,p)</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>p</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>,</span><span></span><span>p</span><span>)</span></span></span></span>，解出 <span><span>p=φ(x,C1)p=\varphi(x,C_1)</span><span><span><span></span><span>p</span><span></span><span>=</span><span></span></span><span><span></span><span>φ</span><span>(</span><span>x</span><span>,</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span>
后，再积分一次：
<span><span>y=∫φ(x,C1) dx+C2y=\int\varphi(x,C_1)\,\mathrm{d}x+C_2</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>∫</span><span></span><span>φ</span><span>(</span><span>x</span><span>,</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。</p>
</li>
</ul></section><section><h4>3. <span><span>y′′=f(y,y′)y''=f(y,y')</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>y</span><span>,</span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>)</span></span></span></span> 型（<strong>缺 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 型</strong>）<a href="#3-yfyyyfyyyfyy-型缺-xxx-型"><span>#</span></a></h4><ul>
<li>
<p><strong>核心代换（链式法则降阶）</strong>：令 <span><span>p=y′p=y'</span><span><span><span></span><span>p</span><span></span><span>=</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span></span></span></span>，视 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 为 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的函数，
则：</p>
<span><span><span>y′′=dpdx=dpdydydx=pdpdyy''=\frac{\mathrm{d}p}{\mathrm{d}x}
=\frac{\mathrm{d}p}{\mathrm{d}y}\frac{\mathrm{d}y}{\mathrm{d}x}
=p\frac{\mathrm{d}p}{\mathrm{d}y}</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>p</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>y</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>p</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>p</span><span><span></span><span><span><span><span><span><span></span><span><span>d</span><span>y</span></span></span><span><span></span><span></span></span><span><span></span><span><span>d</span><span>p</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span>
</li>
<li>
<p><strong>降阶过程</strong>：原式化为一阶方程
<span><span>pdpdy=f(y,p)p\frac{\mathrm{d}p}{\mathrm{d}y}=f(y,p)</span><span><span><span></span><span>p</span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>y</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>p</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>y</span><span>,</span><span></span><span>p</span><span>)</span></span></span></span>，解出 <span><span>pp</span><span><span><span></span><span>p</span></span></span></span> 关于 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span> 的表达式后，
再利用 <span><span>p=dydxp=\frac{\mathrm{d}y}{\mathrm{d}x}</span><span><span><span></span><span>p</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>d</span><span>x</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>d</span><span>y</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 分离变量积分求出 <span><span>yy</span><span><span><span></span><span>y</span></span></span></span>。</p>
</li>
</ul></section><section><h4>二阶常系数齐次 / 非齐次线性微分方程<a href="#二阶常系数齐次--非齐次线性微分方程"><span>#</span></a></h4></section><section><h4>方程标准形式<a href="#方程标准形式"><span>#</span></a></h4><ol>
<li>
<p><strong>二阶常系数齐次线性微分方程</strong>：</p>
<span><span><span>y′′+py′+qy=0y''+py'+qy=0</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>p</span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>q</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span></span>
<p>其中 <span><span>p,qp,q</span><span><span><span></span><span>p</span><span>,</span><span></span><span>q</span></span></span></span> 为常数。</p>
</li>
<li>
<p><strong>二阶常系数非齐次线性微分方程</strong>：</p>
<span><span><span>y′′+py′+qy=f(x)y''+py'+qy=f(x)</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>p</span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>q</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span></span>
<p>其中 <span><span>p,qp,q</span><span><span><span></span><span>p</span><span>,</span><span></span><span>q</span></span></span></span> 为常数，且 <span><span>f(x)≢0f(x)\not\equiv0</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>≡</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p>
</li>
</ol></section><section><h4>齐次方程通解公式（特征方程法）<a href="#齐次方程通解公式特征方程法"><span>#</span></a></h4><p>对应齐次方程 <span><span>y′′+py′+qy=0y''+py'+qy=0</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>p</span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>q</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，写出其<strong>特征方程</strong>：</p><span><span><span>r2+pr+q=0r^2+pr+q=0</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>p</span><span>r</span><span></span><span>+</span><span></span></span><span><span></span><span>q</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span></span><p>计算判别式 <span><span>Δ=p2−4q\Delta=p^2-4q</span><span><span><span></span><span>Δ</span><span></span><span>=</span><span></span></span><span><span></span><span><span>p</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span>4</span><span>q</span></span></span></span>，求出特征根 <span><span>r1,r2r_1,r_2</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>：</p><ul>
<li>
<p>当 <span><span>Δ&gt;0\Delta&gt;0</span><span><span><span></span><span>Δ</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，有两个不相等的实根：</p>
<span><span><span>r1,2=−p±Δ2,Y=C1er1x+C2er2xr_{1,2}=\frac{-p\pm\sqrt{\Delta}}{2},
\qquad
Y=C_1e^{r_1x}+C_2e^{r_2x}</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span><span>1</span><span>,</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>−</span><span>p</span><span></span><span>±</span><span></span><span><span><span><span><span><span></span><span><span>Δ</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span></span><span>Y</span><span></span><span>=</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>r</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>x</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>x</span></span></span></span></span></span></span></span></span></span></span></span></span>
</li>
<li>
<p>当 <span><span>Δ=0\Delta=0</span><span><span><span></span><span>Δ</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，有两个相等的实重根：</p>
<span><span><span>r1=r2=−p2,Y=(C1+C2x)er1xr_1=r_2=-\frac{p}{2},
\qquad
Y=(C_1+C_2x)e^{r_1x}</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>p</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span></span><span>Y</span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>x</span><span>)</span><span><span>e</span><span><span><span><span><span><span></span><span><span><span><span>r</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>x</span></span></span></span></span></span></span></span></span></span></span></span></span>
</li>
<li>
<p>当 <span><span>Δ&lt;0\Delta&lt;0</span><span><span><span></span><span>Δ</span><span></span><span>&lt;</span><span></span></span><span><span></span><span>0</span></span></span></span> 时，有一对共轭复根：</p>
<span><span><span>r1,2=α±iβ,α=−p2,β=4q−p22r_{1,2}=\alpha\pm i\beta,
\qquad
\alpha=-\frac{p}{2},
\qquad
\beta=\frac{\sqrt{4q-p^2}}{2}</span><span><span><span></span><span><span>r</span><span><span><span><span><span><span></span><span><span><span>1</span><span>,</span><span>2</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>α</span><span></span><span>±</span><span></span></span><span><span></span><span>i</span><span>β</span><span>,</span><span></span><span></span><span>α</span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>p</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span>,</span><span></span><span></span><span>β</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span><span><span><span></span><span><span>4</span><span>q</span><span></span><span>−</span><span></span><span><span>p</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span>
<p>此时</p>
<span><span><span>Y=eαx(C1cos⁡βx+C2sin⁡βx)Y=e^{\alpha x}
\bigl(C_1\cos\beta x+C_2\sin\beta x\bigr)</span><span><span><span></span><span>Y</span><span></span><span>=</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>α</span><span>x</span></span></span></span></span></span></span></span></span><span><span>(</span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>cos</span><span></span><span>β</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>sin</span><span></span><span>β</span><span>x</span><span><span>)</span></span></span></span></span></span>
</li>
</ul><p>（注：式中 <span><span>C1,C2C_1,C_2</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 为任意常数。）</p></section><section><h4>非齐次方程解的结构<a href="#非齐次方程解的结构"><span>#</span></a></h4><p>非齐次方程 <span><span>y′′+py′+qy=f(x)y''+py'+qy=f(x)</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′′</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>p</span><span><span>y</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>q</span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 的<strong>通解</strong>为对应齐次方程通解
<span><span>Y(x)Y(x)</span><span><span><span></span><span>Y</span><span>(</span><span>x</span><span>)</span></span></span></span> 与一个特解 <span><span>y∗(x)y^*(x)</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 之和：</p><span><span><span>y=Y(x)+y∗(x)y=Y(x)+y^*(x)</span><span><span><span></span><span>y</span><span></span><span>=</span><span></span></span><span><span></span><span>Y</span><span>(</span><span>x</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span></span><p><strong>叠加原理</strong>：若非齐次项形如 <span><span>f(x)=f1(x)+f2(x)f(x)=f_1(x)+f_2(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span>，且 <span><span>y1∗y_1^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>1</span></span></span><span><span></span><span><span>∗</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>
为 <span><span>f1(x)f_1(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 的特解，<span><span>y2∗y_2^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span><span>∗</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 为 <span><span>f2(x)f_2(x)</span><span><span><span></span><span><span>f</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 的特解，则总特解为：</p><span><span><span>y∗=y1∗+y2∗y^*=y_1^*+y_2^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>1</span></span></span><span><span></span><span><span>∗</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span><span>∗</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span></section><section><h4>非齐次方程特解设定公式（待定系数法）<a href="#非齐次方程特解设定公式待定系数法"><span>#</span></a></h4><p>根据自由项 <span><span>f(x)f(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span></span></span></span> 的形式，特解 <span><span>y∗y^*</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 严格套用以下模板：</p><ul>
<li>
<p>类型 1：<span><span>f(x)=eλxPm(x)f(x)=e^{\lambda x}P_m(x)</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>λ</span><span>x</span></span></span></span></span></span></span></span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 型。
（<span><span>Pm(x)P_m(x)</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 为 <span><span>xx</span><span><span><span></span><span>x</span></span></span></span> 的 <span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 次多项式。）</p>
</li>
<li>
<p><strong>特解设定公式</strong>：</p>
<span><span><span>y∗=xkQm(x)eλxy^*=x^kQ_m(x)e^{\lambda x}</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span></span></span></span></span><span><span>Q</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>λ</span><span>x</span></span></span></span></span></span></span></span></span></span></span></span></span>
<p>其中 <span><span>Qm(x)=amxm+am−1xm−1+⋯+a1x+a0Q_m(x)=a_mx^m+a_{m-1}x^{m-1}+\cdots+a_1x+a_0</span><span><span><span></span><span><span>Q</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>m</span><span>−</span><span>1</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span><span>m</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>
为与 <span><span>Pm(x)P_m(x)</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>m</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 同次的待定多项式。</p>
</li>
<li>
<p><strong><span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 的取值规则（看 <span><span>λ\lambda</span><span><span><span></span><span>λ</span></span></span></span> 是否为特征根）</strong>：</p>
<span><span><span>k={0,λ 不是特征方程的根,1,λ 是特征方程的单根,2,λ 是特征方程的二重根.k=
\begin{cases}
0, &amp; \lambda\text{ 不是特征方程的根},\\
1, &amp; \lambda\text{ 是特征方程的单根},\\
2, &amp; \lambda\text{ 是特征方程的二重根}.
\end{cases}</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>⎩</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎨</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎧</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span><span><span><span><span><span></span><span><span>0</span><span>,</span></span></span><span><span></span><span><span>1</span><span>,</span></span></span><span><span></span><span><span>2</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>λ</span><span><span> </span><span>不是特征方程的根</span></span><span>,</span></span></span><span><span></span><span><span>λ</span><span><span> </span><span>是特征方程的单根</span></span><span>,</span></span></span><span><span></span><span><span>λ</span><span><span> </span><span>是特征方程的二重根</span></span><span>.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span>
</li>
<li>
<p>类型 2：
<span><span>f(x)=eλx[Pl(x)cos⁡(ωx)+Qn(x)sin⁡(ωx)]f(x)=e^{\lambda x}\bigl[P_l(x)\cos(\omega x)+Q_n(x)\sin(\omega x)\bigr]</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>λ</span><span>x</span></span></span></span></span></span></span></span></span><span><span>[</span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>l</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>cos</span><span>(</span><span>ω</span><span>x</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span><span>Q</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>sin</span><span>(</span><span>ω</span><span>x</span><span>)</span><span><span>]</span></span></span></span></span>
型。
（<span><span>Pl(x),Qn(x)P_l(x),Q_n(x)</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span>l</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span>,</span><span></span><span><span>Q</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 分别为 <span><span>ll</span><span><span><span></span><span>l</span></span></span></span> 次和 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次多项式，取最高次数
<span><span>m=max⁡{l,n}m=\max\{l,n\}</span><span><span><span></span><span>m</span><span></span><span>=</span><span></span></span><span><span></span><span>max</span><span>{</span><span>l</span><span>,</span><span></span><span>n</span><span>}</span></span></span></span>。）</p>
</li>
<li>
<p><strong>特解设定公式</strong>：</p>
<span><span><span>y∗=xkeλx[Rm(1)(x)cos⁡(ωx)+Rm(2)(x)sin⁡(ωx)]y^*=x^ke^{\lambda x}
\bigl[R_m^{(1)}(x)\cos(\omega x)+R_m^{(2)}(x)\sin(\omega x)\bigr]</span><span><span><span></span><span><span>y</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span></span></span></span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>λ</span><span>x</span></span></span></span></span></span></span></span></span><span><span>[</span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>m</span></span></span><span><span></span><span><span><span>(</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>cos</span><span>(</span><span>ω</span><span>x</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>m</span></span></span><span><span></span><span><span><span>(</span><span>2</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>sin</span><span>(</span><span>ω</span><span>x</span><span>)</span><span><span>]</span></span></span></span></span></span>
<p>其中 <span><span>Rm(1)(x)R_m^{(1)}(x)</span><span><span><span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>m</span></span></span><span><span></span><span><span><span>(</span><span>1</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 和 <span><span>Rm(2)(x)R_m^{(2)}(x)</span><span><span><span></span><span><span>R</span><span><span><span><span><span><span></span><span><span>m</span></span></span><span><span></span><span><span><span>(</span><span>2</span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span></span></span></span> 分别是两个
<span><span>mm</span><span><span><span></span><span>m</span></span></span></span> 次待定多项式。</p>
</li>
<li>
<p><strong><span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 的取值规则（看 <span><span>λ±iω\lambda\pm i\omega</span><span><span><span></span><span>λ</span><span></span><span>±</span><span></span></span><span><span></span><span>iω</span></span></span></span> 是否为特征根）</strong>：</p>
<span><span><span>k={0,λ±iω 不是特征方程的根,1,λ±iω 是特征方程的根.k=
\begin{cases}
0, &amp; \lambda\pm i\omega\text{ 不是特征方程的根},\\
1, &amp; \lambda\pm i\omega\text{ 是特征方程的根}.
\end{cases}</span><span><span><span></span><span>k</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>{</span></span><span><span><span><span><span><span><span><span></span><span><span>0</span><span>,</span></span></span><span><span></span><span><span>1</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>λ</span><span></span><span>±</span><span></span><span>iω</span><span><span> </span><span>不是特征方程的根</span></span><span>,</span></span></span><span><span></span><span><span>λ</span><span></span><span>±</span><span></span><span>iω</span><span><span> </span><span>是特征方程的根</span></span><span>.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span>
</li>
</ul><p>需要注意，特解之差是齐次解。</p><p>在做这类题的时候，还需要注意有没有常系数；如果没有常系数，
那么需要设置函数。</p></section><section><h4>微分方程的应用<a href="#微分方程的应用"><span>#</span></a></h4><ul>
<li>
<p>求面积：求曲线围成的面积，往往需要用到微分方程。</p>
</li>
<li>
<p>物理应用：求温度变化等。</p>
</li>
</ul></section></section><section><h3>低级错误（高数）<a href="#低级错误高数"><span>#</span></a></h3><p>在最后，我想说一下和低级错误有关的问题。如果说“研究范式”是思路错误，那么低级错误完全可以避免。</p><section><h4>充分条件，必要条件<a href="#充分条件必要条件"><span>#</span></a></h4><p>A 是 B 的充分条件，说明 A 可以推导 B。</p><p>B 是 A 的必要条件，说明 A 可以推出 B。</p><p>A 的必要条件是 B，说明 A 可以推出 B。</p><p>B 的充分条件是 A，说明 A 可以推导 B。</p></section><section><h4>x 的积分<a href="#x-的积分"><span>#</span></a></h4><span><span><span>∫x dx=12x2+C\int x\,\mathrm{d}x=\frac{1}{2}x^2+C</span><span><span><span></span><span>∫</span><span></span><span>x</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>C</span></span></span></span></span><p>而不是 <span><span>x2+Cx^2+C</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>C</span></span></span></span>。</p></section><section><h4>e 代入 0 与 e 的 xy 次方与 e 的 x 次方乘 e 的 y 次方<a href="#e-代入-0-与-e-的-xy-次方与-e-的-x-次方乘-e-的-y-次方"><span>#</span></a></h4><span><span><span>e0=1≠0e^0=1\ne0</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span>0</span></span></span></span></span><span><span><span>exy=(ex)y≠exeye^{xy}=(e^x)^y\ne e^xe^y</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>x</span><span>y</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span><span>)</span><span><span><span><span><span><span></span><span><span>y</span></span></span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span></span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>x</span></span></span></span></span></span></span></span><span><span>e</span><span><span><span><span><span><span></span><span><span>y</span></span></span></span></span></span></span></span></span></span></span></span></section><section><h4>arctan1<a href="#arctan1"><span>#</span></a></h4><span><span><span>arctan⁡1=π4\arctan 1=\frac{\pi}{4}</span><span><span><span></span><span>arctan</span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>4</span></span></span><span><span></span><span></span></span><span><span></span><span><span>π</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span></section><section><h4>牛莱公式代入漏项<a href="#牛莱公式代入漏项"><span>#</span></a></h4><span><span><span>∫ab(A−B) dx=F(b)−F(a),F′(x)=A(x)−B(x)\int_{a}^{b}(A-B)\,\mathrm{d}x=F(b)-F(a),
\qquad F'(x)=A(x)-B(x)</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>a</span></span></span></span><span><span></span><span><span><span>b</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>(</span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>B</span><span>)</span><span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>F</span><span>(</span><span>b</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>F</span><span>(</span><span>a</span><span>)</span><span>,</span><span></span><span></span><span><span>F</span><span><span><span><span><span><span></span><span><span><span>′</span></span></span></span></span></span></span></span></span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>A</span><span>(</span><span>x</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>B</span><span>(</span><span>x</span><span>)</span></span></span></span></span><p>其中 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 是多个式子的和或差。在进行牛莱公式的代入时，
往往漏了某个或者某几个项从而错误。解决办法为每次计算的时候，
按照 <span><span>(A−B)(A-B)</span><span><span><span></span><span>(</span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>B</span><span>)</span></span></span></span> 的上限减去 <span><span>(A−B)(A-B)</span><span><span><span></span><span>(</span><span>A</span><span></span><span>−</span><span></span></span><span><span></span><span>B</span><span>)</span></span></span></span> 的下限去计算，这样就不会漏项了。</p></section><section><h4>积分区间考虑错误<a href="#积分区间考虑错误"><span>#</span></a></h4><p>做积分相关的题目一定是要把积分区间给写出来。</p></section><section><h4>不等式两边同时求导，<strong>符号不确定</strong><a href="#不等式两边同时求导符号不确定"><span>#</span></a></h4></section><section><h4>懒得检查<a href="#懒得检查"><span>#</span></a></h4><p>做一步算一步，不要懒得检查。</p><p>最后做完了回头得稍微看一遍。</p></section></section></section>
<section><h2>线性代数<a href="#线性代数"><span>#</span></a></h2><p>其实写到这里，发现感觉整理知识点并没有想象中的有用，最多只是过一遍需要的东西以及可能的错误，但是既然这几天被课内占了，也没什么办法，就这样吧！</p><p>线代相比于高数而言，虽说入门难了，但是灵活性不高，主要是各个知识点的串联。</p><p>只要能把知识点串联起来，那么问题就不会很大。</p><p>线代就写得简单一点。</p><section><h3>行列式<a href="#行列式"><span>#</span></a></h3><section><h4>范德蒙行列式<a href="#范德蒙行列式"><span>#</span></a></h4><p>形式需要记住。</p></section><section><h4>行列式计算<a href="#行列式计算"><span>#</span></a></h4><ol>
<li>从行列式中提取常数，需要变为 <span><span>knk^n</span><span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span>A∗A^*</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 的行列式值为 <span><span>∣A∣n−1|A|^{n-1}</span><span><span><span></span><span>∣</span><span>A</span><span><span>∣</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span></li>
<li>分块矩阵的行列式，需要注意如果是主对角线，那么不需要 <span><span>−1-1</span><span><span><span></span><span>−</span><span>1</span></span></span></span>，如果是副对角线，那么是 <span><span>(−1)mn(-1)^{mn}</span><span><span><span></span><span>(</span><span>−</span><span>1</span><span><span>)</span><span><span><span><span><span><span></span><span><span><span>mn</span></span></span></span></span></span></span></span></span></span></span></span></li>
</ol></section><section><h4>行列式串联<a href="#行列式串联"><span>#</span></a></h4><p>可以和求特征向量联系起来来简化计算，典例为 2009 线代真题。</p></section><section><h4>代数余子式求和<a href="#代数余子式求和"><span>#</span></a></h4><p>原理：</p><span><span><span>∑k=1naikAjk={∣A∣,i=j,0,i≠j.\sum_{k=1}^{n}a_{ik}A_{jk}=
\begin{cases}
|A|, &amp; i=j,\\
0, &amp; i\ne j.
\end{cases}</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>k</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span><span>n</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>ik</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>j</span><span>k</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>{</span></span><span><span><span><span><span><span><span><span></span><span><span>∣</span><span>A</span><span>∣</span><span>,</span></span></span><span><span></span><span><span>0</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>i</span><span></span><span>=</span><span></span><span>j</span><span>,</span></span></span><span><span></span><span><span>i</span><span></span><span><span><span><span><span><span></span><span><span><span></span></span></span><span></span></span></span></span></span><span></span><span>=</span></span><span></span><span>j</span><span>.</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></span><p>遇到类似计算“<span><span>aA11+bA12+cA13a A_{11} + b A_{12} + c A_{13}</span><span><span><span></span><span>a</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>11</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>b</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>12</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>c</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>13</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>”的题目，本质就是把矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的第 <span><span>11</span><span><span><span></span><span>1</span></span></span></span> 行元素换成 <span><span>(a,b,c)(a, b, c)</span><span><span><span></span><span>(</span><span>a</span><span>,</span><span></span><span>b</span><span>,</span><span></span><span>c</span><span>)</span></span></span></span> 后的新矩阵行列式。</p></section><section><h4>伴随矩阵的行列式与基本公式<a href="#伴随矩阵的行列式与基本公式"><span>#</span></a></h4><p><span><span>AA∗=A∗A=∣A∣EA A^* = A^* A = |A| E</span><span><span><span></span><span>A</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>A</span><span>∣</span><span>E</span></span></span></span>。</p><p><span><span>∣A∗∣=∣A∣n−1|A^*| = |A|^{n-1}</span><span><span><span></span><span>∣</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>A</span><span><span>∣</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>。</p><p><span><span>∣kA∗∣=kn∣A∣n−1|kA^*| = k^n |A|^{n-1}</span><span><span><span></span><span>∣</span><span>k</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span>∣</span><span>A</span><span><span>∣</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span>（别把 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 提出来时漏了 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 次方）。</p><p>还可以注意，如果题目给了具体的条件，例如 <span><span>aij=−Aija_{ij}=-A_{ij}</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>ij</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>−</span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>ij</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，那么可以通过转换为抽象矩阵来理解。</p></section><section><h4>特征值与行列式 / 迹的关系<a href="#特征值与行列式--迹的关系"><span>#</span></a></h4><p><span><span>∣A∣=∏i=1nλi|A| = \prod_{i=1}^n \lambda_i</span><span><span><span></span><span>∣</span><span>A</span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∏</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>λ</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>（所有特征值的乘积）。</p><p><span><span>tr(A)=∑i=1naii=∑i=1nλi\text{tr}(A) = \sum_{i=1}^n a_{ii} = \sum_{i=1}^n \lambda_i</span><span><span><span></span><span><span>tr</span></span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>∑</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>ii</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>∑</span><span><span><span><span><span><span></span><span><span><span>i</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>λ</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>（所有对角元之和等于特征值之和）。</p></section></section><section><h3>矩阵<a href="#矩阵"><span>#</span></a></h3><section><h4>矩阵的逆与回代<a href="#矩阵的逆与回代"><span>#</span></a></h4><p>尤其要注意，如果不满秩则不可逆，如果题目条件里出现了不可逆的矩阵但是要解，可以注意一下回代。</p><p>即 <span><span>XA=⋯AXA=\cdots A</span><span><span><span></span><span>X</span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>⋯</span><span></span><span>A</span></span></span></span>，那么 <span><span>X−⋯A=0X-\cdots A=0</span><span><span><span></span><span>X</span><span></span><span>−</span><span></span></span><span><span></span><span>⋯</span><span></span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，前者不一定为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p></section><section><h4>秩不等式<a href="#秩不等式"><span>#</span></a></h4><p><span><span>r(A∗)={n,r(A)=n1,r(A)=n−10,r(A)&lt;n−1r(A^*) = \begin{cases} n, &amp; r(A) = n \\ 1, &amp; r(A) = n-1 \\ 0, &amp; r(A) &lt; n-1 \end{cases}</span><span><span><span></span><span>r</span><span>(</span><span><span>A</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>⎩</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎨</span></span></span><span><span></span><span></span></span><span><span></span><span><span>⎧</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span><span><span><span><span><span><span></span><span><span>n</span><span>,</span></span></span><span><span></span><span><span>1</span><span>,</span></span></span><span><span></span><span><span>0</span><span>,</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span><span><span><span><span></span><span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span><span>n</span></span></span><span><span></span><span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span><span>n</span><span></span><span>−</span><span></span><span>1</span></span></span><span><span></span><span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>&lt;</span><span></span><span>n</span><span></span><span>−</span><span></span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span></span></span></span></span></span></p><p>经典的几个秩不等式，尤其是 <span><span>AB=OAB=O</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>O</span></span></span></span> 这个不等式要会。</p><p>对于分块矩阵的初等变换，要注意是不是可逆变换，右乘只能对列变换左乘只能对行变换。</p><p>此外，利用类似“夹逼定理”的思路证明某个矩阵秩的值。</p><p><span><span>r(A+B)≤r(A)+r(B)r(A+B) \le r(A) + r(B)</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span></span><span>+</span><span></span></span><span><span></span><span>B</span><span>)</span><span></span><span>≤</span><span></span></span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span></span></span></span>。</p><p><span><span>r(AB)≤min⁡(r(A),r(B))r(AB) \le \min(r(A), r(B))</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>B</span><span>)</span><span></span><span>≤</span><span></span></span><span><span></span><span>min</span><span>(</span><span>r</span><span>(</span><span>A</span><span>)</span><span>,</span><span></span><span>r</span><span>(</span><span>B</span><span>))</span></span></span></span>。</p><p>若 <span><span>AB=OAB = O</span><span><span><span></span><span>A</span><span>B</span><span></span><span>=</span><span></span></span><span><span></span><span>O</span></span></span></span>，则 <span><span>r(A)+r(B)≤nr(A) + r(B) \le n</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span><span></span><span>≤</span><span></span></span><span><span></span><span>n</span></span></span></span>（<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 为 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的列数 / <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 的行数）。</p><p>西尔维斯特不等式：<span><span>r(A)+r(B)−n≤r(AB)r(A) + r(B) - n \le r(AB)</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>+</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span><span></span><span>−</span><span></span></span><span><span></span><span>n</span><span></span><span>≤</span><span></span></span><span><span></span><span>r</span><span>(</span><span>A</span><span>B</span><span>)</span></span></span></span>。</p><p>需要注意，对于西尔韦斯特不等式，如果 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 形状不一样，那么是 <span><span>−s-s</span><span><span><span></span><span>−</span><span>s</span></span></span></span>，其中 <span><span>ss</span><span><span><span></span><span>s</span></span></span></span> 是 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的列，<span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 的行。</p></section><section><h4>AB=A+B 可以怎么用<a href="#abab-可以怎么用"><span>#</span></a></h4><p>同时 <span><span>+E+E</span><span><span><span></span><span>+</span><span>E</span></span></span></span> 可以化简成乘积的形式。</p></section><section><h4>AB=BA 可以怎么用<a href="#abba-可以怎么用"><span>#</span></a></h4><p>利用特征值。</p></section><section><h4>计算 PA=B 和 AX=B<a href="#计算-pab-和-axb"><span>#</span></a></h4>

<table><thead><tr><th>目标形式</th><th>核心未知量</th><th>构造的分块矩阵</th><th>允许的操作方式</th><th>终极目标形态</th><th>核心原理解析</th></tr></thead><tbody><tr><td><strong><span><span>AX=BAX = B</span><span><span><span></span><span>A</span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span></span></span></span></strong></td><td><span><span>XX</span><span><span><span></span><span>X</span></span></span></span>（解向量/右乘）</td><td><strong><span><span>[A∣B][A \mid B]</span><span><span><span></span><span>[</span><span>A</span><span></span><span>∣</span><span></span></span><span><span></span><span>B</span><span>]</span></span></span></span></strong></td><td><strong>仅初等行变换</strong></td><td><strong><span><span>[E∣X][E \mid X]</span><span><span><span></span><span>[</span><span>E</span><span></span><span>∣</span><span></span></span><span><span></span><span>X</span><span>]</span></span></span></span></strong></td><td><span><span>A−1[A∣B]=[E∣A−1B]A^{-1}[A \mid B] = [E \mid A^{-1}B]</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>[</span><span>A</span><span></span><span>∣</span><span></span></span><span><span></span><span>B</span><span>]</span><span></span><span>=</span><span></span></span><span><span></span><span>[</span><span>E</span><span></span><span>∣</span><span></span></span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>B</span><span>]</span></span></span></span></td></tr><tr><td><strong><span><span>PA=BPA = B</span><span><span><span></span><span>P</span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span></span></span></span></strong></td><td><span><span>PP</span><span><span><span></span><span>P</span></span></span></span>（变换核/左乘）</td><td><strong><span><span>[A∣E][A \mid E]</span><span><span><span></span><span>[</span><span>A</span><span></span><span>∣</span><span></span></span><span><span></span><span>E</span><span>]</span></span></span></span></strong></td><td><strong>仅初等行变换</strong></td><td><strong><span><span>[B∣P][B \mid P]</span><span><span><span></span><span>[</span><span>B</span><span></span><span>∣</span><span></span></span><span><span></span><span>P</span><span>]</span></span></span></span></strong></td><td><span><span>P[A∣E]=[PA∣P]=[B∣P]P[A \mid E] = [PA \mid P] = [B \mid P]</span><span><span><span></span><span>P</span><span>[</span><span>A</span><span></span><span>∣</span><span></span></span><span><span></span><span>E</span><span>]</span><span></span><span>=</span><span></span></span><span><span></span><span>[</span><span>P</span><span>A</span><span></span><span>∣</span><span></span></span><span><span></span><span>P</span><span>]</span><span></span><span>=</span><span></span></span><span><span></span><span>[</span><span>B</span><span></span><span>∣</span><span></span></span><span><span></span><span>P</span><span>]</span></span></span></span></td></tr><tr><td><strong><span><span>YA=BYA = B</span><span><span><span></span><span>Y</span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span></span></span></span></strong></td><td><span><span>YY</span><span><span><span></span><span>Y</span></span></span></span>（解矩阵/左乘）</td><td><strong><span><span>[AE]\begin{bmatrix} A \\ E \end{bmatrix}</span><span><span><span></span><span><span><span>[</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>]</span></span></span></span></span></span></strong></td><td><strong>仅初等列变换</strong></td><td><strong><span><span>[BY]\begin{bmatrix} B \\ Y \end{bmatrix}</span><span><span><span></span><span><span><span>[</span></span><span><span><span><span><span><span><span><span></span><span><span>B</span></span></span><span><span></span><span><span>Y</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>]</span></span></span></span></span></span></strong></td><td><span><span>[AE]A−1=[EA−1]\begin{bmatrix} A \\ E \end{bmatrix} A^{-1} = \begin{bmatrix} E \\ A^{-1} \end{bmatrix}</span><span><span><span></span><span><span><span>[</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>]</span></span></span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>[</span></span><span><span><span><span><span><span><span><span></span><span><span>E</span></span></span><span><span></span><span><span><span>A</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>]</span></span></span></span></span></span></td></tr></tbody></table></section></section><section><h3>向量组<a href="#向量组"><span>#</span></a></h3><section><h4>向量组辨析<a href="#向量组辨析"><span>#</span></a></h4><p>行等价可以推导出等价，列等价可以推导出等价，只有等价推导不出来任何东西，只能说明秩相等。</p><p>假设 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 列等价，那么 <span><span>AQ=BAQ=B</span><span><span><span></span><span>A</span><span>Q</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span></span></span></span>，<span><span>CC</span><span><span><span></span><span>C</span></span></span></span> 和 <span><span>DD</span><span><span><span></span><span>D</span></span></span></span> 行等价，那么 <span><span>PC=DPC=D</span><span><span><span></span><span>P</span><span>C</span><span></span><span>=</span><span></span></span><span><span></span><span>D</span></span></span></span>。</p><p>对于矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span>，假设 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 和 <span><span>BB</span><span><span><span></span><span>B</span></span></span></span> 行等价，那么 <span><span>AX=0AX=0</span><span><span><span></span><span>A</span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 和 <span><span>BX=0BX=0</span><span><span><span></span><span>B</span><span>X</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 同解。</p><p>判断向量组 <span><span>α1\alpha_1</span><span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>α2\alpha_2</span><span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>，<span><span>αn\alpha_n</span><span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是否线性相关，本质上是看等式 <span><span>x1α1+x2α2+⋯=0x_1\alpha_1+x_2\alpha_2+\cdots=0</span><span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 时候有零解，所以拼成矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span>，本质就是齐次线性方程 <span><span>Ax=0Ax=0</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>。如果只有零解，那么线性无关，有非零解，所以线性相关。而 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 做行变换的时候，可以保证解不变。</p><p>对矩阵 A 做初等列变换，那么矩阵列的秩保持不变（也就是说列等价），变了的东西是列向量的线性系数表达。</p><p>对矩阵 A 做初等行变换，那么矩阵行的秩保持不变（也就是行等价），系数关系是保留的，但是里面的东西变了。</p><p>m 个 n 维向量一定是线性相关向量组（m &gt; n）</p></section><section><h4>向量组等价 vs 矩阵等价<a href="#向量组等价-vs-矩阵等价"><span>#</span></a></h4><p>两向量组等价 <span><span>  ⟺  \iff</span><span><span><span></span><span></span><span>⟺</span><span></span></span></span></span> 可以相互线性表出 <span><span>  ⟺  \iff</span><span><span><span></span><span></span><span>⟺</span><span></span></span></span></span> r(I) = r(II) = r(I, II)。</p><p>向量组等价能推出矩阵等价，但矩阵等价推不出向量组等价。</p></section><section><h4>证明向量组线性无关<a href="#证明向量组线性无关"><span>#</span></a></h4><p>利用 k1a1+k2a2+…=0，即定义证明秩不等式，且对于线性无关而言，x1，x2，x3 必须是三个独立的数。</p></section><section><h4>施密特正交化<a href="#施密特正交化"><span>#</span></a></h4><p>设无关向量组为 <span><span>α1,α2,α3\alpha_1, \alpha_2, \alpha_3</span><span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>：</p><p><span><span>β1=α1\beta_1 = \alpha_1</span><span><span><span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></p><p><span><span>β2=α2−(α2,β1)(β1,β1)β1\beta_2 = \alpha_2 - \frac{(\alpha_2, \beta_1)}{(\beta_1, \beta_1)} \beta_1</span><span><span><span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>(</span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span><span>α</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></p><p><span><span>β3=α3−(α3,β1)(β1,β1)β1−(α3,β2)(β2,β2)β2\beta_3 = \alpha_3 - \frac{(\alpha_3, \beta_1)}{(\beta_1, \beta_1)} \beta_1 - \frac{(\alpha_3, \beta_2)}{(\beta_2, \beta_2)} \beta_2</span><span><span><span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>(</span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span><span>α</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>(</span><span><span>β</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span><span>β</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>(</span><span><span>α</span><span><span><span><span><span><span></span><span><span>3</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span><span>β</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>)</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></p></section></section><section><h3>方程组<a href="#方程组"><span>#</span></a></h3><section><h4>方程组串联<a href="#方程组串联"><span>#</span></a></h4><p>对方程组 <span><span>Ax=0Ax=0</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，如果方程组有唯一解，那么解必然为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，如果有无穷解，则计算 <span><span>r(A)r(A)</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span></span></span></span>，通解的个数为 <span><span>n−r(A)n-r(A)</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span></span></span></span>。</p><p>对行列式而言，可以通过计算 A 的行列式来判断 A 是否有唯一解。</p><p>对矩阵而言，如果 x 是一个矩阵，那么可以通过变换解出 n 组解，需要注意这些解的 k 是独立的。</p><p>对于特征值而言，显然有 n-R(A) 个特征值为 0 的特征向量，且特征向量为通解。</p><p>对于方程组 <span><span>Ax=bAx=b</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>b</span></span></span></span>，如果方程组有唯一解，那么 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 的行列式必不为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>，即 <span><span>r(A)=r(A,b)=nr(A)=r(A,b)=n</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>A</span><span>,</span><span></span><span>b</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span></span></span></span>。</p><p>如果有无穷解，那么 R(A)=R(A,b)&lt;n。</p></section><section><h4>解 AB=E<a href="#解-abe"><span>#</span></a></h4><p>假设已知 A，如何求解出所有的 B，只需要按照解方程组的做法，把每一列都解出来即可。</p><p>具体可以表现为：</p><p>将 [A, E]，变换为 [E, P]，然后逐个分析即可。</p></section><section><h4>解的结构补充<a href="#解的结构补充"><span>#</span></a></h4><p>齐次方程通解：<span><span>c1ξ1+⋯+cn−rξn−rc_1 \xi_1 + \dots + c_{n-r} \xi_{n-r}</span><span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>ξ</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>r</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>ξ</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>r</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>。
非齐次方程通解：<span><span>η∗+c1ξ1+⋯+cn−rξn−r\eta^* + c_1 \xi_1 + \dots + c_{n-r} \xi_{n-r}</span><span><span><span></span><span><span>η</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>ξ</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>⋯</span><span></span><span>+</span><span></span></span><span><span></span><span><span>c</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>r</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>ξ</span><span><span><span><span><span><span></span><span><span><span>n</span><span>−</span><span>r</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>（<span><span>η∗\eta^*</span><span><span><span></span><span><span>η</span><span><span><span><span><span><span></span><span><span>∗</span></span></span></span></span></span></span></span></span></span></span> 为非齐次特解）。</p><p>解的线性组合性质：若 <span><span>η1,η2\eta_1, \eta_2</span><span><span><span></span><span><span>η</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>,</span><span></span><span><span>η</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是 <span><span>Ax=bAx=b</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>b</span></span></span></span> 的解，则 <span><span>η1−η2\eta_1 - \eta_2</span><span><span><span></span><span><span>η</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>−</span><span></span></span><span><span></span><span><span>η</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 是齐次方程 <span><span>Ax=0Ax=0</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 的解；<span><span>η1+η22\frac{\eta_1 + \eta_2}{2}</span><span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>2</span></span></span></span><span><span></span><span></span></span><span><span></span><span><span><span><span>η</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>+</span><span><span>η</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span> 依然是 <span><span>Ax=bAx=b</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>b</span></span></span></span> 的解（系数和为 1 则为非齐次解，系数和为 0 则为齐次解）。</p></section><section><h4>公共解与同解<a href="#公共解与同解"><span>#</span></a></h4><p>同解：<span><span>Ax=0Ax=0</span><span><span><span></span><span>A</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 与 <span><span>Bx=0Bx=0</span><span><span><span></span><span>B</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 同解 <span><span>  ⟺  \iff</span><span><span><span></span><span></span><span>⟺</span><span></span></span></span></span> 解空间相同 <span><span>  ⟺  r(A)=r(B)=r(AB)\iff r(A) = r(B) = r\begin{pmatrix} A \\ B \end{pmatrix}</span><span><span><span></span><span></span><span>⟺</span><span></span><span></span></span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span></span></span></span>。</p><p>公共解：联立求解 <span><span>(AB)x=0\begin{pmatrix} A \\ B \end{pmatrix} x = 0</span><span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>A</span></span></span><span><span></span><span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span>，或者求出其中一个方程的通解代入另一个方程检验。</p></section></section><section><h3>特征值与特征向量<a href="#特征值与特征向量"><span>#</span></a></h3><section><h4>判断相似性<a href="#判断相似性"><span>#</span></a></h4><p><span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 可相似对角化 <span><span>  ⟺  \iff</span><span><span><span></span><span></span><span>⟺</span><span></span></span></span></span> <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个线性无关的特征向量。</p><p><span><span>  ⟺  \iff</span><span><span><span></span><span></span><span>⟺</span><span></span></span></span></span> 每个 <span><span>kik_i</span><span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 重特征值，其几何重数 <span><span>n−r(λiE−A)=kin - r(\lambda_i E - A) = k_i</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>r</span><span>(</span><span><span>λ</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>E</span><span></span><span>−</span><span></span></span><span><span></span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>k</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span>（即基础解系包含的向量数等于重数）。</p><p>充分条件：<span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 阶矩阵有 <span><span>nn</span><span><span><span></span><span>n</span></span></span></span> 个互不相同的特征值；或 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 为实对称矩阵。</p><p>若 <span><span>A∼BA \sim B</span><span><span><span></span><span>A</span><span></span><span>∼</span><span></span></span><span><span></span><span>B</span></span></span></span>，则：</p><p>特征值相同，<span><span>∣A∣=∣B∣|A| = |B|</span><span><span><span></span><span>∣</span><span>A</span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>B</span><span>∣</span></span></span></span>，<span><span>tr(A)=tr(B)\text{tr}(A) = \text{tr}(B)</span><span><span><span></span><span><span>tr</span></span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>tr</span></span><span>(</span><span>B</span><span>)</span></span></span></span>。</p><p>秩相等：<span><span>r(A)=r(B)r(A) = r(B)</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span></span></span></span>。</p><p>特征多项式相同：<span><span>∣λE−A∣=∣λE−B∣|\lambda E - A| = |\lambda E - B|</span><span><span><span></span><span>∣</span><span>λ</span><span>E</span><span></span><span>−</span><span></span></span><span><span></span><span>A</span><span>∣</span><span></span><span>=</span><span></span></span><span><span></span><span>∣</span><span>λ</span><span>E</span><span></span><span>−</span><span></span></span><span><span></span><span>B</span><span>∣</span></span></span></span>。</p><p>反之不成立！</p></section><section><h4>求特征值和特征向量的方法<a href="#求特征值和特征向量的方法"><span>#</span></a></h4><p>略去，但是需要注意在解方程的时候必须把每个式子写出来，这样可以大幅降低错误率。</p></section><section><h4>秩为 1 的特征值与特征向量<a href="#秩为-1-的特征值与特征向量"><span>#</span></a></h4><p>若 <span><span>A=αβTA = \alpha \beta^T</span><span><span><span></span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span>α</span><span><span>β</span><span><span><span><span><span><span></span><span><span>T</span></span></span></span></span></span></span></span></span></span></span>（<span><span>α,β\alpha, \beta</span><span><span><span></span><span>α</span><span>,</span><span></span><span>β</span></span></span></span> 为非零列向量）：</p><p><span><span>r(A)=1r(A) = 1</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span>。</p><p><span><span>tr(A)=βTα\text{tr}(A) = \beta^T \alpha</span><span><span><span></span><span><span>tr</span></span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>β</span><span><span><span><span><span><span></span><span><span>T</span></span></span></span></span></span></span></span><span>α</span></span></span></span>。</p><p>特征值为：<span><span>λ1=tr(A)=αTβ\lambda_1 = \text{tr}(A) = \alpha^T \beta</span><span><span><span></span><span><span>λ</span><span><span><span><span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span>tr</span></span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span><span>α</span><span><span><span><span><span><span></span><span><span>T</span></span></span></span></span></span></span></span><span>β</span></span></span></span>，其余 <span><span>n−1n-1</span><span><span><span></span><span>n</span><span></span><span>−</span><span></span></span><span><span></span><span>1</span></span></span></span> 个特征值均为 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>。</p><p><span><span>A2=(βTα)A=tr(A)AA^2 = (\beta^T \alpha) A = \text{tr}(A) A</span><span><span><span></span><span><span>A</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>(</span><span><span>β</span><span><span><span><span><span><span></span><span><span>T</span></span></span></span></span></span></span></span><span>α</span><span>)</span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span><span>tr</span></span><span>(</span><span>A</span><span>)</span><span>A</span></span></span></span>。</p><p>此外还可以注意 <span><span>AA∗AA*</span><span><span><span></span><span>AA</span><span>∗</span></span></span></span> 的相关性质，要记住 AA*=0，当 A 不满秩的时候。</p></section><section><h4>矩阵变换与特征值的变换情况<a href="#矩阵变换与特征值的变换情况"><span>#</span></a></h4><p>通过 aE + B 的方式化简特征值的求解。</p></section><section><h4>两边同时乘上某些东西求特征值<a href="#两边同时乘上某些东西求特征值"><span>#</span></a></h4><p>例如 Aa，然后同时乘上一个 A 可以得到什么，常和证明线性无关一起用。</p></section><section><h4>实对称矩阵<a href="#实对称矩阵"><span>#</span></a></h4><p>特征值全为实数。</p><p>不同特征值对应的特征向量天然正交！</p><p><span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 重特征根必有 <span><span>kk</span><span><span><span></span><span>k</span></span></span></span> 个线性无关的特征向量（实对称矩阵必可对角化！）。</p><p>必存在正交矩阵 <span><span>QQ</span><span><span><span></span><span>Q</span></span></span></span>，使得 <span><span>QTAQ=Q−1AQ=ΛQ^T A Q = Q^{-1} A Q = \Lambda</span><span><span><span></span><span><span>Q</span><span><span><span><span><span><span></span><span><span>T</span></span></span></span></span></span></span></span><span>A</span><span>Q</span><span></span><span>=</span><span></span></span><span><span></span><span><span>Q</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>A</span><span>Q</span><span></span><span>=</span><span></span></span><span><span></span><span>Λ</span></span></span></span>。</p></section><section><h4>向量正交<a href="#向量正交"><span>#</span></a></h4><p>如果是实对称矩阵。</p><p>假设已知 3 个特征值不同，知道 2 个特征向量，那么可以直接通过正交性求出第 3 个特征向量。</p><p>假设已知有 1 个特征值的特征向量，另外两个特征值相同，那么也可以通过正交求出第 2、3 个特征向量。</p><p>使用这个性质的前提是为实对称矩阵。</p></section><section><h4>相似的传递性<a href="#相似的传递性"><span>#</span></a></h4><p>通过相似的传递性可以求一些题目（比较经典）。</p></section></section><section><h3>二次型<a href="#二次型"><span>#</span></a></h3><section><h4>合同<a href="#合同"><span>#</span></a></h4><p>如果一个矩阵是实对称矩阵，那么相似可以推出合同。</p><p>等价：同型且 <span><span>r(A)=r(B)r(A) = r(B)</span><span><span><span></span><span>r</span><span>(</span><span>A</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>r</span><span>(</span><span>B</span><span>)</span></span></span></span>（只需可逆变换 <span><span>PAQ=BPAQ=B</span><span><span><span></span><span>P</span><span>A</span><span>Q</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span></span></span></span>）。</p><p>合同：<span><span>CTAC=BC^T A C = B</span><span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>T</span></span></span></span></span></span></span></span><span>A</span><span>C</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span></span></span></span>（正负惯性指数相同 <span><span>  ⟺  \iff</span><span><span><span></span><span></span><span>⟺</span><span></span></span></span></span> 二次型相同规范型）。</p><p>相似：<span><span>P−1AP=BP^{-1} A P = B</span><span><span><span></span><span><span>P</span><span><span><span><span><span><span></span><span><span><span>−</span><span>1</span></span></span></span></span></span></span></span></span><span>A</span><span>P</span><span></span><span>=</span><span></span></span><span><span></span><span>B</span></span></span></span>（特征值完全相同且能对角化程度相同）。
对于实对称矩阵：相似 <span><span>  ⟹  \implies</span><span><span><span></span><span></span><span>⟹</span><span></span></span></span></span> 特征值相同 <span><span>  ⟹  \implies</span><span><span><span></span><span></span><span>⟹</span><span></span></span></span></span> 正负特征值个数相同 <span><span>  ⟹  \implies</span><span><span><span></span><span></span><span>⟹</span><span></span></span></span></span> 正负惯性指数相同 <span><span>  ⟹  \implies</span><span><span><span></span><span></span><span>⟹</span><span></span></span></span></span> 合同！</p><p>（即实对称矩阵相似必合同，反之不成立）。</p></section><section><h4>正定矩阵判定<a href="#正定矩阵判定"><span>#</span></a></h4><p>二次型正定 <span><span>  ⟺  \iff</span><span><span><span></span><span></span><span>⟺</span><span></span></span></span></span> 矩阵 <span><span>AA</span><span><span><span></span><span>A</span></span></span></span> 正定。</p><p>注意 A 是实对称矩阵</p><p>充要条件：</p><p>特征值全部严格大于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>（<span><span>λi&gt;0\lambda_i &gt; 0</span><span><span><span></span><span><span>λ</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>）。</p><p>顺序主子式全大于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>（各阶行列式 <span><span>Dk&gt;0D_k &gt; 0</span><span><span><span></span><span><span>D</span><span><span><span><span><span><span></span><span><span>k</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>）。</p><p>正惯性指数 <span><span>p=np = n</span><span><span><span></span><span>p</span><span></span><span>=</span><span></span></span><span><span></span><span>n</span></span></span></span>。</p><p>合同于单位阵 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span>（即存在可逆阵 <span><span>CC</span><span><span><span></span><span>C</span></span></span></span> 使得 <span><span>A=CTCA = C^T C</span><span><span><span></span><span>A</span><span></span><span>=</span><span></span></span><span><span></span><span><span>C</span><span><span><span><span><span><span></span><span><span>T</span></span></span></span></span></span></span></span><span>C</span></span></span></span>）。</p><p>必要条件（用来快速排除选项）：主对角元全大于 <span><span>00</span><span><span><span></span><span>0</span></span></span></span>（<span><span>aii&gt;0a_{ii} &gt; 0</span><span><span><span></span><span><span>a</span><span><span><span><span><span><span></span><span><span><span>ii</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>），且 <span><span>∣A∣&gt;0|A| &gt; 0</span><span><span><span></span><span>∣</span><span>A</span><span>∣</span><span></span><span>&gt;</span><span></span></span><span><span></span><span>0</span></span></span></span>。</p></section><section><h4>配方法<a href="#配方法"><span>#</span></a></h4><p>配方法需要一次配凑出来，需要注意对于一个值需要一次配凑出来，否则可能不是可逆变换。</p></section></section><section><h3>低级错误（线代）<a href="#低级错误线代"><span>#</span></a></h3><p>线代的低级错误不算特别多，但是计算量比较大，需要注意做一步算一步。</p><section><h4>某一行加到另一行<a href="#某一行加到另一行"><span>#</span></a></h4><p>只有部分值相加，没有全部相加。</p></section><section><h4>行列式交换<a href="#行列式交换"><span>#</span></a></h4><p>需要加 -。</p></section><section><h4>列向量与行向量的表示<a href="#列向量与行向量的表示"><span>#</span></a></h4><p>需要辨析列乘行和行乘列的记号。</p></section></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/fzu/open-source-rant/</id>
      <title type="text">为什么傻逼总在糟蹋开源</title>
      <published>2026-01-31T00:00:00.000Z</published>
      <updated>2026-01-31T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/fzu/open-source-rant/"/>
      <summary type="text">基于转专业社区维护的真实经历，探讨为何开源项目（泛指）中会出现大量又犟又坏又懒的巨婴用户，以及为何高墙是维护者保护心理防线的唯一手段。</summary>
      <content type="html"><![CDATA[<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>这篇博客本该安排在今年结束后再动笔，奈何最近越想越烦，索性现在就写出来宣泄一下。</p><p>在正文开始前，我得先给自己叠个甲。</p><p>本人并没有维护过什么惊天动地的大型项目，也不是什么技术大牛。我所做的开源，更多是指公开的整理工作，比如整理文档，或者像大家都会做的——整理历年卷和复习资料。</p><p>曾经我认为纯开源的行为是放弃一切收益，做出来的东西就得给别人免费用。</p><p>不过后来随着时间的推进，我逐渐理解了那些成熟项目的运作逻辑。</p><p>以 RustDesk 为例，这套软件本身是免费的，但搭建服务有两种截然不同的方式。</p><p>第一种是你自己去搭建服务。这意味着你需要自己找一台服务器，耐着性子阅读官方文档，如果碰到问题，你需要继续阅读文档或在网络上寻找别人的解决方法。你付出的代价是时间和学习成本。</p><p>第二种是使用官方提供的付费服务。你付钱，别人为你解决麻烦。</p><p>这让我意识到一个很朴素的道理：人还是要吃饭的。开源不等于就要当义工，更不等于要无底线地伺候别人。</p><p>曾经我和很多人一样天真。我认为，如果我花费时间和精力去恩惠他人，或者回馈那些帮助过我的项目，这种善意是可以传递的。正如我曾经受惠于网上的资料，我也希望成为那个传递火炬的人。</p><p>但现实给了我一记响亮的耳光。</p><p>事实是，懂得反过来感恩的人毕竟是少数。大多不表感恩的沉默者其实也无所谓，大家各取所需，互不打扰。</p><p>最让人心寒的是，会有越来越多的傻逼跳出来，肆意践踏你的心血。</p><p>少数的傻逼足以毁掉整个环境。</p><p>过于圣人只会走向极端的圣母，最后被这些人生吞活剥。我想，这也正是为什么像 ALAS 这样的官方社区，如今越来越趋于极端化、不得不竖起高墙的根本原因。</p></section>
<section><h2>什么是蠢，什么是厌蠢<a href="#什么是蠢什么是厌蠢"><span>#</span></a></h2><p>首先，我们需要界定一下这里讨论的对象。</p><p>事实上我不应该用蠢这个词，因为这容易让人误会我在歧视智商。</p><p>当然，对于那些把厌蠢挂在嘴边，标榜自己患有厌蠢症的人，在我看来，那也是一种真蠢。</p><p>如果你仅仅是因为掌握了更多的信息，就把自己的处事经验强加给别人，那不叫聪明，那是傲慢；对于新手来说，不懂是阅历问题，不是智力问题。</p><p>我们这里所要讨伐的蠢，绝非智商高低，而是指一种又犟、又坏、又懒的恶性复合体。</p><p>这种蠢，本质上是认知匮乏与傲慢的叠加。</p><p>在这些人的认知模型里，开源项目并不是开发者好心施舍的礼物，而被他们默认视为一种理所应当的公共服务。这就形成了一种荒谬的比例关系：</p><p>越是不懂技术、越是没有共情能力的人，觉得自己理应被服务的权利感反而越强。</p><p>他们无法想象创作者为了解决一个 Bug、整理一份文档耗费了多少个日夜，他们脑子里只剩下一个简单的逻辑：我按了按钮没反应，就是你的错。</p><section><h3>傻逼三重奏<a href="#傻逼三重奏"><span>#</span></a></h3><p>这群人具体表现为三个特征：</p><ol>
<li>懒。文档明明就在手边，解决方案写得清清楚楚，Ctrl+F 就能搜到的那种，但他们选择视而不见。他们宁愿花时间在群里发一堆问号，张嘴就要喂饭，稍有不顺就大呼小叫。</li>
<li>坏。他们把开源作者当成免费的 24 小时客服，甚至当成欠他们债的奴仆。你这东西怎么这么难用？——一旦需求得不到满足，恶意便随之而来。</li>
<li>犟。这是最要命的。当他们的错误被指正时，为了维护那点可怜且脆弱的自尊心，他们绝不承认自己没看文档，反而要反咬一口，指责作者态度不好、高高在上、圈子排外。</li>
</ol><p>这种人其实是把现实生活中的无力感，发泄到了网络上最好欺负的老好人——开源作者身上。因为他们深知，在网络上骂一个开源作者，几乎不需要付出任何成本。</p></section><section><h3>强调过无数次的事，为什么还会犯<a href="#强调过无数次的事为什么还会犯"><span>#</span></a></h3><p>本质是傲慢。</p><p>这种傲慢源于一种奇怪的优越感：我的时间是时间，你的时间不是时间。</p><p>在他们看来，阅读文档是浪费他们的时间，而你去回答他们弱智的问题则是你应该做的。他们不关心技术细节，不关心社区礼仪，只关心自己的问题有没有在三秒钟内被解决。</p><p>这种傲慢甚至让他们产生了一种错觉：我用你的东西是给你面子。</p></section></section>
<section><h2>转专业<a href="#转专业"><span>#</span></a></h2><p>我们学校的转专业社区完全是学生自发组建的，本质上就是做慈善，不收任何费用，纯粹靠爱发电。</p><p>原本社区里只有学长学姐零散维护的对应想转专业经验贴，每个人都可以投稿。</p><p>但是这些稿件缺乏系统性的转专业常识，只是转去对应专业的经验。</p><p>后来为了方便大家，我花了非常久的时间去优化、整理了一份常识性的文档。</p><p>在去年文档尚未写的时候，我还心存善意，尽量去回答每个人的问题。</p><p>但是今年，当文档已经落地，一切都写得明明白白的时候，我的心态彻底变了。一旦看到有人问出文档里已经写好的常见问题，我就直接开骂。</p><p>毕竟我直接明晃晃地先把不可以问的问题先贴出来了，你还要往枪口上撞，这不是蠢是什么？如果你问的是不常见的、边边角角的问题，我依然乐意解答，但这群人问的往往就是第一行字就写着的答案。</p><p>这种环境逼得人不得不变得冷漠。</p><p>最近发生了更恶劣的事，有一位热心的学姐被无休止的私聊骚扰到崩溃，最后不得不要求本人彻底下架他写的转专业经验贴。</p><p>下架经验贴看起来是很极端的做法，但这背后是多少次的骚扰和理所当然的索取？</p><p>这几年，慢慢把自己的 QQ 号从帖子里下掉、选择隐身的人不在少数。</p><p>有些人就是这样的，他们觉得只要自己发问了，你就必须回答。</p><p>而对于维护者来说，最开始总会有一种莫名其妙的救世主情结：不回答别人的问题心里就难受，总觉得是不是自己没做到位。</p><p>但现在我要说：放心大胆地直接拒绝。</p><p>你的善良，不该成为别人勒索你的筹码。</p></section>
<section><h2>防御性社交<a href="#防御性社交"><span>#</span></a></h2><p>编程领域有一个经典概念叫防御性编程。通俗来说，就是写代码时预设用户会进行各种误操作，比如在输入年龄的地方输入了 ABC，从而提前写好代码来防范报错。</p><p>而当这个概念延伸到开源社区运营时，就变成了防御性社交。</p><p>当一个开源项目做得太好用、门槛降得太低时，必然会吸引大量毫无技术背景的白嫖党。这些用户数量庞大，且产生的噪音——无论是无效的 Issue 还是情绪化的抱怨，都远远超过了他们可能带来的价值。</p><p>在常规状态下，维护者一开始总是试图感化用户，耐心解答，结果往往是被活活累死或气死。</p><p>于是，为了生存，社区不得不进入极端化。</p><p>这就是为什么我们看到很多成熟社区竖起了高墙：</p><ul>
<li>设置极高的入群门槛（答题）；</li>
<li>编写晦涩但详尽的文档（技术需要，筛选机制）；</li>
<li>执行严厉到近乎无情的群规（不看置顶直接飞）。</li>
</ul><p>这看起来激进、高冷，甚至不近人情，但就像细胞膜必须阻挡病毒入侵一样，这其实是维护者为了生存而被迫进行的筛选。</p><p>这里的防御，防御的不仅仅是代码层面的报错，更是为了防止这些傻逼用户的行为，击穿维护者仅存的心理防线。</p></section>
<section><h2>结语<a href="#结语"><span>#</span></a></h2><p>所以，不要责怪开源作者变得冷漠。</p><p>完善文档、提高门槛，本质上是一种筛选机制。</p><p>能读懂文档的，是潜在的同路人；读不懂还不愿意学的，就是必须过滤掉的杂音。</p><p>既然他们不看文档，既然他们缺乏基本的尊重，那竖起高墙，把他们挡在门外，就是对开源热情最好的保护。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/ai/mcm-2025/</id>
      <title type="text">美赛 2025 A 题 F 奖经验贴</title>
      <published>2025-12-31T00:00:00.000Z</published>
      <updated>2025-12-31T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/ai/mcm-2025/"/>
      <summary type="text">记录参加美赛 2025 A 题并获得 F 奖的完整经历，包括选题过程、建模思路、论文撰写，供未来参赛者参考。</summary>
      <content type="html"><![CDATA[<section><h2>更新日志<a href="#更新日志"><span>#</span></a></h2><ul>
<li>2026.05.04：将本文档半迁移至<a href="https://github.com/west2-online/learn-AI/blob/main/tasks(2026)/statistic/statistic-routine.md" target="_blank">西二在线数据分析学习路线 2026 版</a>。该版本增加了关于非数学建模的数据分析讨论，并且对本文档进行严谨表述</li>
<li>2025.12.31：初稿</li>
</ul></section>
<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>前几天，周老师私聊问我要不要分享一下美赛经验，我简单思考了一下就同意了。</p><p>其实即使老师不提，我也打算在考研结束后整理一下这方面的经验发篇博客，既然老师提前找了，那就提前写一篇。</p><p>第一次听说数学建模是在高中的时候。当时读了一本小说《学霸的黑科技系统》，主角带领团队参加数学建模竞赛，最终拿下 O 奖，看得我热血澎湃。自此，一粒种子悄悄种下了——我对大学的其中一个畅想，就是和朋友鏖战几天几夜，产出一篇优秀的论文。</p><p>数学建模对我的大学生涯来说意义重大，或者说我大学期间第一个成就就是数学建模。</p><p>大学是什么时候开始真正变好的呢，其实就在得知自己美赛 F 的那个凌晨，它带领我走出了大学获取成就第一步，随之而来的是厚积薄发。有些事情一旦迈出第一步，后面的路就都很好走，在半年多的时间里，我的成长是巨大的，真正从别人口嗨中的 ✌ 成长为一个还算不错、可靠的学长。</p><p>事实上，我清晰的知道我距离那些大佬至少还差一整个大档次，距离超级大巨佬至少差两个档次。而且我对我自己大学期间的要求，还差一块关键性的拼图（其他拼图已经找到，不过仍在完善）。由于家庭等不可抗力因素，零基础的成长往往比非零基础的成长艰难很多——光是找到适合自己的道路就需要很长的时间，更别说还得亲手去检验这条路的正确性。</p><p>这也是我为什么把这次分享定在“零基础”这三个字上，很多事情，只有真正从“零基础”过来的人才清楚。</p><p>由于职业规划的问题，我决定进行一场伟大的冒险，如果冒险胜利了，我会更新博客，谈谈对零基础的理解以及冒险胜利的感悟。</p><p>希望下一次更新，是成为真正的“传奇”。</p><p>以上。</p><p>我讨厌那种声称要教人搭梯摘星，却在一开始就滔滔不绝讲述宇宙浩瀚的人。</p><p>他们需要的是如何搭建第一级阶梯的木材与钉子，而不是一张描绘了整个银河系的星图。</p></section>
<section><h2>附录<a href="#附录"><span>#</span></a></h2><p><a href="/files/modeling_papers/%E6%9F%9A24%E7%94%B5%E5%B7%A5%E6%9D%AF%E8%AE%BA%E6%96%87.pdf">柚 24 电工杯论文</a></p><p><a href="/files/modeling_papers/%E6%9F%9A24%E5%9B%BD%E8%B5%9B%E8%AE%BA%E6%96%87.pdf">柚 24 国赛论文</a></p><p><a href="/files/modeling_papers/%E6%9F%9A25%E7%BE%8E%E8%B5%9B%E8%AE%BA%E6%96%87.pdf">柚 25 美赛论文</a></p><p><a href="/files/modeling_papers/%E6%9F%9A25%E7%94%B5%E5%B7%A5%E6%9D%AF%E8%AE%BA%E6%96%87.pdf">柚 25 电工杯论文</a></p><p><a href="/files/modeling_papers/%E6%9F%9A25%E5%9B%BD%E8%B5%9B%E8%AE%BA%E6%96%87.pdf">柚 25 国赛论文</a></p><p><a href="/files/modeling_papers/%E6%9F%9A26%E7%BE%8E%E8%B5%9B%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB.pdf">柚 26 美赛经验分享</a></p></section>
<section><h2>会议记录<a href="#会议记录"><span>#</span></a></h2><blockquote><p>由于时间问题，我本人讲解的时候有些东西没有展开来细讲。建议对着 ppt 看，而且有些东西确实没有做到像自己前面说的那样零基础，还是有点忘了初心啊。</p></blockquote><section><h3>凉柚 NH3 部分<a href="#凉柚-nh3-部分"><span>#</span></a></h3><section><h4>引入<a href="#引入"><span>#</span></a></h4><p>老师、同学们晚上好！然后有些人可能不知道我名字，不过看到我头像也大概知道我是谁了。总之很高兴周老师能给我们团队这个机会来分享比赛经验，我们今晚的主题是“零基础速成美赛”。</p><p>这是我们的目录。</p><p>简单看一下我们团队总共参加的比赛，简单看一下就好了，这是我们比赛所有的论文，它都是可以在右下角这个博客中找到。</p><p>然后这是我们比赛中的实录。</p><p>我们直接进行入第二部分：前期准备，也就赛前前期准备，主要就是目的是为了防止大家在比赛期间做一些无意义，或者可以在赛前已经做好的事情。</p><p>这一页的话主要注意一下美赛的时间就可以了，美赛时间是 99 天……它会比国赛多一天。其他这些都看看就好了。</p><p>我们直接来进入主题，我是零基础怎么办？队伍里现在三个人都是零基础，我们都想学东西，但是根本都不知道要学什么。但是大家仔细想，你是零基础吗？</p><p>我这里放了两道题目，第一道是 2025 年全国数学一卷的第 15 题，第二道是 2023 年福建省高考物理的第一题。想象一下你是一个刚刚初中升高中的学生，你第一眼看到这个题目一定很懵逼，但是你肯定不会去害怕这件事情。因为你知道这些解题方法只是你还没学过而已。</p><p>你在小学阶段、初中阶段解过应用题，在高中阶段解过概率大题。以刚刚那两道题为例，卡方检验它是一种相关性分析，而祝融号它是将物体视为质点，它是一种建模的简化方法。</p><p>事实上，数学建模的第一步就是将工程问题转化成数学问题，然后在数学模型的框架下进行求解。那么如何转换成？你在高中阶段刷过大量的物理和数学题，自然知道碰到什么物理题要用什么方法、什么模型。</p><p>大学数学建只不过是将以前熟悉的那套解题方法换成数学建模独有的一套。</p><p>简单总结一下，数学建模就是把实际的工程问题转换成数学模型，然后数学物理方法进行求解这个过程。</p><p>我们最开始的祝融号为零。假设现在有一题让我们要求进入祝融号的速率，那我们的建模就是把祝融号设为质点，以及抽象出它的轨迹，这就是从物理模型转换成数学模型。然后轨迹的长度你需要用高阶微分方程去拟合，这个时候你不可能去用手算微分方程，所以是需要程序去编写，这就是编程。写论文，就是把如何建模和如何求解这一整个过程思路体现出来。</p></section><section><h4>编程环境<a href="#编程环境"><span>#</span></a></h4><p>然后上面既然提到了编程，那我们接下去就来讲一下编程的话。数学建模一般是推荐使用 Matlab 或者 Python，然后优点是这些，大家看一下就好。如果一定要选一个的话，我本人更推荐使用 Python。</p><p>不过事实上，语言只是载体，你选什么语言是没有任何关系的，无所谓。我更想说的是，以我去年的参赛经验来看，很多队伍都会花至少半天的时间浪费在配环境上面。</p><p>无论你选择了什么语言，都是你先把环境配好。以 Python 为例，你至少需要做到这些。我这里推荐 3.12。3 版本，是因为版本比较稳定，就是它不仅是有比较成熟的机器学习库，然后还有去适配那些老的版本的库。你像现在更新的那种 3.14 版本和 3.13 版本，它有些库、有些机器学习库它是没有适配过来的。</p><p>然后不要用 IDLE，界面太抽象了。然后配清华源的话就是为了下速度的，你不配的话会下不动。</p><p>看不懂这些东西也很简单，直接把我这串东西复制粘贴丢给 AI，跟着 AI 一步步配就好。</p><p>这里先简单说一件事情，就是数学建模，它不是一道 OJ 的编程题，它是一道数学应用题。编程是一种简化计算的方法，是快速验证和求解建模思路的工具。</p><p>举一个简单的例子，编程就是用很粗鄙的理解，就是你在高考数学的时候不用笔去计算，而是用计算器去计算。你的思路、你的方法都是你本来脑子里已经有的，计算器能做到只是简化你不必要的麻烦。</p><p>另外，美赛数据分析对应的 C 题，你可以完全一行代码都不用写，而是取什么 SPSS 的数据分析工具、科学分析工具。</p></section><section><h4>AI 选择<a href="#ai-选择"><span>#</span></a></h4><p>前期准备第二步就是找几篇历年美赛的 O 奖论文，年份肯定越近越好。对于国赛来讲，你只要看看摘要，看看关键词，然后再看看大概写什么样子就好。</p><p>美赛的话，别人的论文的摘要都是英文，你简单看看关键词就已经可以了。然后你找几篇你自己看的感觉很厉害的论文。</p><p>至于为什么我们是否放下一个章节来讲，很大程度上这几篇论文直接决定了你后面能走多远。</p><p>精美的论文意味着严谨的排版以及直观可视化的图表，如何排版是留给我的队友 ac6 来讲。</p><p>然后是关于数据方面，A 题和 B 题一般来讲是不会直接提供数据的，得自己去找。那找不到数据怎么办？关于检索和整理数据，这个是留给我的队友 firerater 来讲。</p><p>接下来是我要讲的部分。</p><p>看一下，接下来是我要讲的部分，有关于 AI 的选择。</p><p>最推荐使用的就是 Gemini Pro，其次是 ChatGPT。</p><p>如果你没有魔法的话，国产也是有很多好用的，国产现在能用的我都已经贴在上面。</p><p>然后不要用这些。</p><p>为什么？</p><p>我这边简单列了一下。豆包的训练数据很多来源于抖音，娱乐性来讲的话，豆包它是国内大语言模型肯定是最好的。那理工科乃至代码编辑的能力是一言难尽。同时豆包写出来的文字，它是有一股味道，是难以用于进行那种论文化的表述处理。</p><p>文心一言和 Kimi 的话，属于是两年前国内比较强的，现在已经不行了。腾讯元宝就不要用它的 hunyuan 模型，它就是一个 DeepSeek 换皮。</p></section><section><h4>团队分工<a href="#团队分工"><span>#</span></a></h4><p>然后赛前准备还有一个就是分工问题。</p><p>大家第一次准备建模的时候肯定是看过各种经验贴，知道数学建模大致分工分成：建模手、编程手、论文手。</p><p>传统意义上这三个角色的含义就是字面的字面意思。</p><p>一个人负责建模，一个人负责编程，一个人负责论文。建模的意思就是把题目转换成数学模型，然后在数学模型这个框架下，你得给出解题方法；编程的意思就是说，根据建模所给的方案编写程序来求解问题；论文手的意思就是把这些东西整合成论文给评委看。</p><p>那么更先进的做法，就是每个人大概都得负责两块内容：主要负责一块主要负责一个模块，然后辅助负责一个模块。因为每个人其实都得大概知道对方在做什么，不然你是根本沟通都是沟通不了。</p><p>我们队伍采用的和这两种模式都有区别，或许是 AI 时代下一种尝试吧，但是 AI 时代下，它也绝非是三个 AI 手。</p><p>那在介绍我们组的分工之前，首先我要谈谈关于 AI 的事情。</p><p>那就是保持拥抱 AI，但是保持自己的思考。</p><p>AI 和人一样，他会陷入局部思考。如果完全让 AI 带着你去走的话，他可能会带着你绕一个大圈子。所以你的思路你不能完全跟着 AI 走，但是你的代码其实是可以的。</p><p>最后还有一点要强调的就是不要固执的不去使用 AI。AI 普及之后数学建模的论文，它是整体上升了一整个档次的。就以国赛举例的话，原本省二的论文，现在可能拿省三，就是逐级往下推。</p><p>那么在当前 AI 时代来讲，队伍的核心到底是什么？如果说五年前的话，我可以说是编程手，但是现在的话，我认为是论文手，其次是建模还有打杂的工作，最后才是编程手，因为现在编程的很多东西它都是被 AI 代替了。</p><p>当然我也是承担传统意义上编程手的工作的，它是可以用……有更多的事情，比如说参与建模的讨论。</p><p>然后这方面的话是我们组的分工：我们三个人是共同去讨论建模的。但是有一点需要注意，“杂活”它不是那种帮忙倒水拿外卖的那种。</p><p>他主要是可以在另外两个人需要验证思路的时候，可以做到没有任何的后顾之忧。假设我现在提出了某个想法，想要去验证、搜集数据、整理数据，这种事情就必须你得在一个可观的时间内收集并整理完毕，而我本人只需要负责去处理代码内部的逻辑，我不需要去考虑我的数据的来源。</p></section><section><h4>建模方法论与技能树<a href="#建模方法论与技能树"><span>#</span></a></h4><p>那接下来我要花点时间讲讲，即便你有了数据，你也不会做分析怎么办？这就是涉及到的建模方法。</p><p>首先贴出来，这是学长学姐 PPT 里的两页东西，这个是传统的清风数学建模和司守奎那本教材整理出来的路线，这条路线其实是已经比较成熟的路线。大家看一下就好。</p><p>然后学长学姐的那些，它是比较传统的系统性学习数学建模的东西，那些是属于方法论，它不是一种体系。你现有的各种新东西的那种框架，比如说机器学习这种冲击，这些只学这些肯定是不够的。</p><p>事实上你要掌握的东西，可以归结为基本的数学分析、数据分析框架。这个时候就需要每个队伍至少得了解一种语言，你得会爬虫，你得会数据分析工具库。然后你得会基本的传统回归模型，还有机器学习算法，乃至一些简单的深度学习。然后你需要这些数学知识，还有简单的物理化学素养。</p><p>美赛它尤其是你的 A 题，它不只是考验你的数数据分析框架，还考验你的现场学习能力。</p><p>我们简单来讲一下 Python 爬虫，实际应用中可能会碰到右上角这四种情况。前面三种就不细说了，你现学的话是来不及的。最主要注意一下就是最后这个 API 爬取。有提供 API 的网站，你只需要根据他给好的文档照着文档敲代码，然后就能把它的数据获取下来，就直接下载成一个 Excel，它不需要像前三种情况那样去分析网页的具体情况。你不需要去看网页的源代码。</p><p>然后讲一下，主要讲一下数据分析工具，主要是 Matlab、Numpy 和 Pandas。Matlab 就是 Python 的画笔，然后 Numpy 就是高效运算，Pandas 是 Python Excel。然后 Numpy 不用看，因为更多的库它是基于 Numpy 集成而成的。</p><p>例如接下来我要讲 sk-learn。sk-learn 它不只是封装好机器学习方法，它也封装了很多传统的方法。在调用的时候，你是完全不需要去理解这些方法的内部原理，你只要调库就好了。</p><p>然后这里我点了一下“使用机器学习需谨慎”，我马上讲。</p><p>深度学习这块，大家简单看一下 CNN、RNN、LSTM 就可以了，不要使用 Transformer。Transformer 需要大规模数据支撑。</p><p>另外，这里有的人很重要，数学建模，尤其是美赛的数学建模，他是不喜欢你用机器学习、深度学习这种“通法”。因为这种通法它有点类似于大力飞砖，就是你什么东西都可以去套行深度学或者机器学习。你跑出来效果也肯定是不差的，但是美赛他并不是比拼答案，他比拼的是一些逻辑，以及论文当中一种体现。</p><p>这里有个“私人定制”这四个字，它就是意思比方说你使用了某种机器学习方法，你可以对这道题进行一些特定的优化。</p><p>那么我从爬虫讲到这有什么用？其实对大部分人来讲就是一点用都没有的东西。你只需要对前面这些东西留点印象就可以了。</p></section><section><h4>建立方法表<a href="#建立方法表"><span>#</span></a></h4><p>系统性准备建模，其实对于大部分人来讲是一个伪命题。首先是关于教材，司守奎那本教材已经很老，已经偏老了，你不可能使用层次分析法这种问题你去解决你现在那么一个庞大的问题。还有常用的方法全都是被用烂的方法，而且很多跟不上时代，也不符合美赛那种基调。</p><p>时间的话，就是大家都在准备期末考，花时间听讲座已经非常难得了。然后学习成本，我刚刚讲的那套得学一年。</p><p>爬虫我前面有讲过，美赛直接找数据集就可以了，不需要你手动去爬。手动爬太浪费时间。配环境的话你得自己去配，你现在就可以拖出来配了。</p><p>你现在要做的事情是什么？你现在需要做的事情就是提前先整理一张“方法表”。就是可以去包含就是之前学长学姐他们整理的那两个比较传统的数学建模，还有包括我刚列出那些的东西。</p><p>你需要整理一张方法表，然后把每个方法它对应的解决的是什么问题？它的优缺点是什么？它的改进方案是什么？</p><p>你这些东西你是至少得有的，你不一定会，你是得有。因为美赛它其实是开卷考，你很多东西你都可以现场去把这些东西去匹配到题目。美赛它非常考验你的现学能力。</p><p>当然，你如果想系统性的去学的话，你就至少需要做到所有我上面提到的东西，从编程手的角度出发，这样你才是一个合格的编程手：从学长学姐留档那些传统建模，爬虫数据分析，机器学习，乃至些深度学习。不过事实上你学这些东西的底层原理之后，你在用的时候也不用管你底层实现。sk-learn 这个库封装的非常完善，所以本质上学了和有一张方法表的没学没什么区别。</p><p>接下来就是数学，大家都学过高数吧？会微积分和微分方程够了。微分方程。</p><p>然后物理会受力分析就行。</p><p>其他学科都是数学和物理套题转化成数学或者物理模型，够了。可以。</p><p>到现在为止，大家都已经相当于掌握了很多东西了，握了我 PPT 里展示的这些，然后马上就能掌握更多的东西。</p></section><section><h4>比赛流程实战<a href="#比赛流程实战"><span>#</span></a></h4><p>我接下来将以比赛历程的角度来讲讲整个美赛的流程。</p><p>美赛从早上六点开始，你首先你也不用六点整起床，你可能八九点起床，其实也没什么问题。你需要做的事情就是和队友集合，非常重要。因为美赛那几天你会碰到各种各样的问题，最大的问题都是跟队友的问题，不是数学建模问题？美赛碰到最严重的问题永远是队友问题。</p><p>接下来是翻译跟选题，我这里就是刚刚再次强调一下队友的重要性，队友他是不是各干各的、相互联系。大家多交流，然后相互之间包容一下，只要队友之间不出矛盾是什么问题都能解决的。你只要在 99 小时内产出一篇论文，你不吵架，你就已经我感觉能超过 50% 的队伍了。</p><p>翻译的话，谷歌翻译、微软翻译、有道翻译、大模型。然后查找国外资料的话就是“沉浸式翻译”这个插件。不要用国内这些翻译。然后或者等大概你开赛几个小时之后，老师会发翻译。</p><p>翻译完之后选题。D、E、F 这三题我们没做过就不讨论。然后美赛他采取的是按照人数、报名人数来划分奖项，所以 A B C 三题排序就是长这样。然后 A 报的人最少，一般占 20%，但是报的人大佬也是比较多的。</p><p>A 题 O 奖我稍微纠正一下周老师吧，A 题 O 奖 其实就只有五个。他是没有十个，他就只有五个。然后 A 题连续，B 题 离散，C 和大数据相关。然后嘛……A、B 题对数学、物理有一定素养，然后 C 题就是考基本数据分析问题。不过 A B 题它其实也是有大量的数据分析。</p><p>然后你现在已经选好题目了，你得开始解题。你解题，这个时候你就得掏出你之前准备好的 O 奖论文，翻到目录，然后你对比一下每张 O 奖论文的目录。其实架构都是长这个样子的：</p><p>问题背景、问题重述、方法概要、问题假设，还有符号的定义，我这里没写出来这个部分，然后接下来是建模的主体，就是这两部分内容。然后最后是敏感性分析、误差分析、模型优缺点、参考文献。</p><p>为什么我之前找到那几篇 O 奖论文直接决定了你的上限？对很多大一新生来讲，美赛期间他写的论文是你这辈子写的第一篇建模论文，和正统的学术论文它是有一定差别的。你如果完全按照学术论文那套东西去写的话，反而会效果不好。</p><p>所以你需要照着 O 奖作文去写。你整个美赛期间你要做的事情是什么？就是“抄”你找的那几篇欧奖论文。就我的意思不是让你去抄欧奖论文的思路，你得去抄他们的排版，抄他们的架构，还要抄他们你进行到推进到哪里，这部分大概要干嘛。</p><p>然后这几部分内容就是仿照以前论文写就可以，这个 ac6 细讲。这里简单讲一下问题假设是什么。</p><p>例如一开始提到了祝融号，你能力不够的话，可以把它假设成质点去做。今年国赛的 A 题，它就是一个导弹射击问题。你可以把它考虑成质点，你也考虑成质点肯定是会扣分的，就注意一下就可以了。然后这里假设运行过程中不会出现任何的机械性故障，先可以写一下。</p></section><section><h4>AI 辅助建模与代码编写<a href="#ai-辅助建模与代码编写"><span>#</span></a></h4><p>这里是我今天要讲的重点，就是讲一下 AI 辅助建模和 AI 写代码。</p><p>讲 AI 辅助建模前，我先首先讲一下大语言模型，它是怎么去识别文件和图片。例如 Gemini Pro 或者国内的智谱，它是原生的支持和图片的理解。还有 DeepSeek 这种图片它是基于 OCR。OCR 的意思就是，它会先识别成文字之后，然后再把字识别出来的文字，再喂给 AI。AI 它并不会原生的去理解图片是什么意思。如果你要直接拖文件进去问的话，不要用 DeepSeek，因为它就是原生它是不理解文件的。</p><p>但是其实更建议你，自己先把文件转成图片，以文字的形式输入给 AI。AI 它对文文字的理解一般来讲是会高于图片。</p><p>然后讲一下 AI 处理能力。Web 端的 AI，它是被限制了输出长度的。无论 AI 它能力有多强，你一下让他回答太多东西，它的输出就是处于那种宏观层面上的解释。</p><p>像对于数学建模，你需要体现你思辨性和层次性的东西。如果你一次性输入的话，它只会给你一个简单……它只会给你一个方法，然后他也不会去深入解释这个方法到底是什么，然后也没更不会有那种多种方法比较这种问题。</p><p>最简单解决方法就一点点传。Web 端的 AI，它都是有那种上下文管理。</p><p>输出更好的话可以有个提示词工程，这也不细讲。</p><p>讲完 AI 的东西，我们来讲一讲你为什么需要知道上面这些东西，我刚刚讲的 AI 的处理能力和 AI 的识别问题。</p><p>数学建模的第一步，它是分析比赛的知道赛题怎么从工程问题转换成数学问题，分析高考物理题那样子去分析。我相信对于一个经历过高考的学生来讲，打破对数学建模恐惧之后去认真分析它是不难的。</p><p>你不知道怎么转换的话，你丢进去问一下 AI。</p><p>然后转化为数学模型之后，然后你接下来去看一下你这道题里面有没有你“方法表”里面的什么东西可以去适配去解决的。那更大的可能性，尤其是做 A 题跟 B 题的来讲，是不会出现的，或者你自己根本都分析不出来这道题他要考的是什么东西。然后接下来你又可以去问人家（指 AI）。</p><p>你需要注意，然后你需要注意什么？你需要的注意鉴别这些东西的使用。因为有可能就是你自己提供那些表它有可能有问题，有可能就是单纯的 AI 提供的这些东西它本来就是错的。</p><p>然后这里需要尤其注意，之前有跟小登交流过这个东西，不要去大篇幅的介绍你的模型是什么。例如你去大篇幅的去介绍微分方程的来源，或者你用的方法来推的。除非这个方法是你原创的。你用出来的方法，你只要不是原创，那一定是别人的工具。你不需要花篇幅去介绍别人的工具，你只需要在最后的附录里面贴出来，你找不到这篇……找到这个工具的来源，就或者说贴出来那篇论文就可以了。在真正写论文的时候，你只需要介绍这个工具的作用就可以，你是不需要关心工具的原理。你写工具的原理，它大概率就是判你凑字数。</p><p>然后美赛它是讲究创新问题。最难的方法是最难的创新，也是最好的创新，就是自己“搓”一套理论出来去适配问题。例如我们去年，我们组名义上的论文手，他就是基于电场和磁场的理论搓出来了一套摩擦场理论去适配问题。不一定你论文手就是全组最弱的那一个，恰恰相反，我们组的论文手还是全组物理和数学素养最高的那一个。</p><p>但是这种方法它风险很大，如果你说出来的东西有问题，那么就很可能是完全不如传统做法。</p><p>最简单的创新方法，你只要对着各种方法排列组合一下，给它用出来就好了。</p><p>到现在为止，我们来总结一下数学建模的建模部分的全流程：</p><ol>
<li>在问题一，你把工程问题转换成数学的模型。你基于数学模型框架，你使用了一种方法去求解，你或许可以用多种方法求解之后找出最好的那一个。这些东西都是可以体现在论文里面的，你不需要找到一个最好最优解法之后，然后再写进论文里面。</li>
<li>然后第二问就是沿用上一问的数学模型，然后发现这个老方法在新方法上不适配，改造了这个方法现在适配。</li>
<li>然后第三问是你填补了一下数学模型。</li>
<li>第四问就是你发现原来你整个问题全都是有漏洞的，那你只需要前面也不需要全部推翻重启，你只需要在这个方……就是你只需要在当前问题进行修改就好了。</li>
</ol><p>然后最后体现在论文的时候，在里面的时候，你只需要完整的把我刚刚讲的那个流（流程）写进去就好。我刚刚讲的，你完全不需要直接贴出你的最优解，你直接贴出来……就直接贴出来最优解的那种论文，它是没有那种层次性、没有层次性和思辨性。</p><p>到现在为止，我们有关于建模的问题已经解释清楚了，我们这里也是澄清几个概念。工程问题转化成数学模型，和利用数学模型靠方法去求解，这是建模的两个阶段，你不能给它混起来去谈。然后下面才是用代码来编写求解问题。</p><p>思路就是用的上文所说，就第二阶段那些思路。下面就是讲一下怎么用 AI 来编写代码，也就是如何使用已经被讨论出来的思路去写代码。</p><p>首先介绍两个概念，第一个概念是函数。大家现在都……大家都是学过数学函数的，在接触编程的时候，你接触过编程上的函数。你现在用的生成式 AI，本质上它也就是一个 <span><span>f(x)=ωx+bf(x) = \omega x + b</span><span><span><span></span><span>f</span><span>(</span><span>x</span><span>)</span><span></span><span>=</span><span></span></span><span><span></span><span>ω</span><span>x</span><span></span><span>+</span><span></span></span><span><span></span><span>b</span></span></span></span> 的一个函数，只不过 <span><span>ω\omega</span><span><span><span></span><span>ω</span></span></span></span> 和 <span><span>bb</span><span><span><span></span><span>b</span></span></span></span> 它都是高维矩阵。</p><p>其次是接口的概念，计算机有个概念叫接口。这里看要看的简单看一下就好了，这部分就是主要就是这里。主要就是要理解给出来的接口是无状态的，你不需要去关心内部的细节，你只需要关心这个东西——就接口，它是怎么用就可以了。上面全都听不懂的就都无所谓，你只需要知道，就是你在 AI 让你给你函数的时候，你不需要关注这个接口的内部细节，你只需要关心这个接口怎么用，你只需要关心接口。第一是怎么用？二是它的效果到底是什么？</p><p>然后这里有个很不恰当的例子，简单看一下。总而言之，你让 AI 写代码，你得知道这个函数的输入输出是什么？你得知道这个函数怎么用，然后你还有我之前讲的，你得想办法让这个函数在你的那……在你本地的 IDE 里面跑起来。你只需要知道这些其实就够了。</p><p>我个人认为怎么让本……怎么在本地跑起来，对大多数来讲，大多数人来讲问题是最大的。</p><p>然后谈一谈“降智”。用 AI 的时候，你会碰到降智，有两种情况：第一种情况是官方本身给你限制了，那这没办法；另一种是你用这个窗口太多次了，上下文过多导致的有一种污染。例如你永远都解决……就你永远让 AI，就即便你把那个 Bug 点出来是什么了，你发给 AI，AI 也永远解决不好。这时候最简单的解决方法就是让 AI 自己总结一下本轮对话的重点，把你的文件和重点全都重新喂给一个新的对话，它就没有上下文污染。</p><p>还有个问题，AI 跑不出来代码怎么办？你还记得我最开始讲的一件事吗？数学建模它不是一道 OJ 形式的编程题，它是一道数学应用题。并且美赛它是不需要交任何的代码和附件，所以你只需要提交论文就好了。你编程手的作用进一步弱化，你 AI 跑不出代码，其实是无所谓的，你只要把论文“糊”好，就完全是可以的。</p><p>然后你现在为止，你只要去重复我刚刚所说的建模以及就 AI 建模和 AI 代码过程，你重复这两个部分，你的建模部分就可以很好的被撑起来。重点其实就是去讨论你的层次性和思辨性的。</p></section><section><h4>赛中危机处理与论文修正<a href="#赛中危机处理与论文修正"><span>#</span></a></h4><p>有两个问题，接下来下面是两个问题。</p><p>第一个问题是交流崩溃。美赛的第三个、第三天晚上，距离美赛结束还有 3、4 个……十个小时，我们直接谈崩了。大概就是我刚刚有说过 ac6 他是找到了一个直接“搓”出来一套理论去写一到三问，但是如果这个理论要去四套五、适配五到八问的话，我们会写不完所有的题目。当时我们压力很大，在那里直接吵了半个多小时。</p><p>然后后来就是他回去睡觉，我和黄幸星在那里，在那边搜网络上的那种解法，然后看一下五到八问怎么补救。然后最后讨论出来就是五到八问就不用……就最后讨论出来就五到八问就不用那个理论了，就是只用传统模型，然后最后用 CNN 跑一遍对比，然后直接给结论。</p><p>后面第二天的时候大家就整理好心情继续。就如果碰到那种交流崩溃的情况，大家就各自冷静一下。千万不要产生放弃的念头！</p><p>和交流崩溃一起出现的问题，思路错误。最严重的就是全篇思路错误。如果你第一天刚开始的时候就错了，那你可以大……那你可以放心大胆的推翻重来。那如果是最后一天错了，那也就只能“曲线救国”，弥补一下。在你发现错误开始地方直接往后说，前面的思路它都不是最优解，我这里提出了一个更好的方法。</p><p>今年国赛是由于我的失误思路走错了，最后半天的时候才发现问题，把最后一问改了，然后最后再摘要强调一下。那就是国赛 A 题是那年是……今年国赛 A 题是五问，我们一整篇论文，只有第五问的后半部分解法是对的，其他都是错的，或者说有问题，但是这样也是能拿省一。你你……他要你写论文就写这种东西，他要的不是你的最优解，他要的是体现你的思辨性、层次性和创新。</p><p>最后敏感性分析和误差性分析，就是美赛这是一个很公式化的东西，大家照着抄就好了。</p><p>在我的部分结束之前，我简单讲一下摘要。摘要它是一整篇文章最重要的部分，你至少花三个小时去修改你的摘要。三个人一起盯着电脑改，花三个小时改，不是一个人改。我们组的习惯是花六个小时，然后盯着摘要就一直逐字逐句在那边改。即便你通一整篇都是狗屁不通的东西，你的摘要至少得是合格的。</p><p>美赛，还有包括国赛的评审，他都是就看摘要。美赛的话，它就是 M 奖以下都是国内评的，只有评 O 的他才会发给美国佬。国内的评审论文也是只看你的摘要，就感觉摘要写的太烂了，他后面可能就不看了。摘要长度的话就是只要超过八分之五，并且不超过一页就可以了，我这里 ppt 可能写的有点问题。</p><p>我的部分就到这里，然后接下来时间是交给我的队友 firerater，他主要负责的部分是检索，还有整合信息。</p></section></section><section><h3>firerater 部分<a href="#firerater-部分"><span>#</span></a></h3><p>好好。现在好，我现在共享屏幕。打开 PPT。Ok 那我现在接着上面 凉柚 NH3 所讲的内容，我来讲一下关于网络检索和信息收集的部分。</p><p>我来先毕竟说明是我当时是首次参加美赛，是首次参加建模比赛。我在其中起到的作用是比较辅助性的，所以我做的是信息收集部分，这一点在美赛中可能。在 a 题我们当时所选的前景下，因为数据缺失，所以我起到了一定作用。然后我在这边分享一下我当时的经验，因为我当时确实是以初学者没有经验的。角色进入这个比赛，我们看首先信息收集，我们先看我们一般会遇到我们上网查东西，我们主要是。一方面我们可能会去借鉴网络上的一些，一方面是参考文献，我们会在网络上去寻找，另一方面就是数据集，我将针对这两个。</p><p>我在比赛期间，我也是针对数据集和参考文献去进行检索，同时在其中摒弃一些不需要的，不应该参考的部分提取其中的精华来讲，首先就是这个网络上有一些建模思路，特别是 B 站上或者可能知乎。我把它播放一下网络上的建模思路，只能取其精华，或者说不建议看，因为发出来的人很多是抱着盈利性目的，他想。给你，他想获利，他想由粗制滥造，或者说速成出来的东西给你，让自己获利。思路大家都看到了，你不建议用，只能取其中一点点可以验证，还可以验证你思路激发你思路的部分，不要不能照抄，或者如果你。顺着他思路来可能会误导你。</p><p>那么我接下来讲，我的部分就是这个建模师，这个是比较重要的，不能去，我在信息收集的时候，我所摒弃的就是这一部分不能去轻信网络上包括 B 站。知乎还有一些突然冒出来的 CSDN 上面的这种网络上的思路部分，然后我们看可以借鉴哪些部分，然后我再介绍一下我所做的事情。</p><p>我零基础的针对当时所选的这个题目去做数据收集，还有一些信息的收集，那么我可能在其中起到主要大作用，就是 at 的数据集的下载处理。去处理，那么 A 题是关于楼梯古代楼梯磨损的一个题目，他的数据非常少，当时花了两天我才勉强找到当时好像。数据匹配性比较高，我做数据集的筛选和拆解，然后从网络上下载了大概 50G 的点云图数据。然后使用它相应的可视化软件，有个叫 cloudcompare 的软件筛选出了十句左右的，有包含楼梯的这种数据，它是点云图，它是我以前不熟悉没见过的一种数据，然后我再现学现用去按需分割出一些需要的部分去细化调仓，然后。给到编程论文手那边去提取数据分析数据，那么这就是我当时就初学者进去，没有一些编程。阅读论文经验的时候，我所做的事情它是相对费时费力的，但是这个数据找到了，可以说当时那个情景下。</p><p>黑体不提供数据，找到这样一个数据集，它的数据很详尽，它有对应的内容。针对古代建筑这个稀缺数据，我们找到数据。这样的情景下，我觉得数据找到的是一个重要的强心剂，它能够增强整个队伍的信心。</p><p>那么我以初学者角度现在下面讲。检索资料的建议和现学现用的建议，检索资料就是刚刚提到的参考文献的检索和数据局的检索在网络上主要是在浏览器上进行查找下载。然后还有可能去学习它里面的一些现有的处理方法，直接现学现用我们我刚刚说的点云图数据之前都没见过这个东西。怎么样去快速的学习这种数据的处理方法去把它快速的提取出我们所需要的部分。给到队友去静下来进行论文的编写和优化，然后这是现学现用的建议，我主要起的辅助作用。</p><p>我第一次讲可能不是很好，我们只是参考一下，不要太在意我里面的一些细节错误，接下来。第一点是资料检索建议刚刚老师和队友也提到了，在没有数据的情况下。我刚刚提到我们当时进行到第二天我才找到数据时间，总体上是很紧迫的，我找到数据的时候大家也是比较。惊讶的很难找，可能说周围的大家基本上没有数据，网络上也查不到有人说什么自己有数据，可能有人找到数据拿出来卖了，但是甚至没有看到这样的言论，数据非常稀缺。</p><p>我要所说的就是我怎么找到数据的就是首先有一个很重要的大局观，因为数据很难找，然后我们题目又比较多。部分题目它难度在后面依赖前提，或者说难度上升。你的分析，你的思辨性，层次性可能体现在和前面一题的。这个联系上面，那么此时你如果花费所有时间去找数据之后又找不到，这是很不好的，所以我起辅助作用，我找数据是在其他队友让我没有后顾之忧的情况下，我去进行这样的数据查找。</p><p>在你们如果是初学者，特别是对于大一新生还有经验缺失的同学，如果找不到数据，我建议是。及时开始配合队友就是验证一些不需要数据的部分去验证一些思路就写一些论文的其他部分推进进度推进最能够帮助你推进进度的部分。而不是花大量的时间去资料检索，我虽然讲这部分，但是这是我要提的，如果找不到那很难受。这就是避免沉没成本，或者说你应该同步。你如果要找数据，你可以同步的去验证一些你后面不需要数据的部分去推进这种进度。</p><p>然后当时甚至因为大部分同学找不到题目的数据，他们用了蒙特卡洛模拟之类的方法去模拟数据，好多网上可能给出的思路也是这样的思路。有一些不能参考思路，也许很多队伍用了，但是其实能够找到数据集是最好的，那么我下面再讲一下。</p><p>首先我们一定要找数据，我们确定了找数据必要性，如果大部分题目都依赖数据的话，我们去检索数据，我们有以下建议，我们刚刚说过，我们是主要依赖浏览器进行数据。查找检索下载，那么我们检索的时候，浏览器就建议使用比较建议使用这两个是首先他们是偏国外的浏览器他们。不是国内的我们使用国外浏览器的原因主要是以下两个。</p><p>首先国内的浏览器很多，它比较不支持插件的这种使用就是浏览器。它可以配置插件，包括刚刚提到的 凉柚 NH3 提到的论文翻译插件，网页论文翻译插件，这是你在下载论文前你查看论文。关键词摘要的时候，你可能会经常用到的一个工具，刚刚提到说叫沉浸式翻译，这个插件，我安装在了 edge 浏览器上面，而国内的一些浏览器？不支持这个东西，或者说很难配置 a9 浏览器比较方便，然后有了这个插件，你可以很方便的去进行网页翻译，然后查看它的内容，这是检索的时候。一个比较关键的地方，你有了这样的好的工具，用了比较好的工具，好的浏览器，你可以更好的检索。</p><p>然后是它还有一些插件，比如说网页资源下载有一些。网站它可能比较下载它权限制的比较严，有的工具插件，它可以爬取网站上的东西。这是其他的强大插件，所以使用这两个浏览器，有助于提高你的效率，能够让你更好的检索。</p><p>当你是一个初学者的时候。请记住少用国内浏览器多使用这两个或者其他的动手的工具，那么还有第二个原因是国内浏览器内核是比较低的，它可能使用它的时候。检索速度会变慢，同时他们默认的搜索引擎就是浏览器，一个是你使用的浏览器内核，另一个是浏览器，它的搜索引擎。搜索引擎，有的浏览器会限制它或者默认使用某一些搜索引擎，这样的搜索引擎，国内的搜索引擎，它很有可能会出现大量广告。覆盖掉我们所要找的参考论文，数据集。这两个最重要的东西可能会被大量广告以及神秘的没有用的思路文章给覆盖掉，从而你很难找到数据集。我们建议使用这种 C 浏览器之类的和配合搜索引擎。</p><p>第二点，搜索引擎配合搜索引擎来进行检索。搜索引擎主要是这两个更常用的是 bing 这个搜索引擎是微软开发的这个搜索引擎。我在上面，我在下一页有贴图在并和这种百度上面国内引擎上面所收集到的内容一眼就可以看出来它的这种内容的纯净性，你在并上面找一个数据集你。你看到好多链接，好多国外的链接，他直接给你贴出来了，而且大部分查到的数据局网站，它是公益性的公开性的，你可以很从上面大批的去查找你所要的东西，然后才能从其中。去筛选出你所需要的数据集。</p><p>那么这是 2.1 个是检索用浏览器，一个是搜索引擎，并且这里多提一点就是必要情况下有一些数据局网站可能得使用魔法工具才能够下载。当时在下载点云图数据的时候，似乎在注册方面就是有的网站，它可能限制你的下载，你可能注册的时候要需要用到。相应的工具你才能注册成功，从而获得下载权限。</p><p>那么这一些插件刚刚提到的像沉浸式翻译这个插件，还有一些下载插件，你。去看一些教程，你可以去寻找，因为我看到后面的安排，里面学长学姐也会讲一些相应的数据检索部分，我这里就。以初学者的角度给大家留一个印象，不细讲对应的插件，网络条件可以赛前准备好并熟悉他们。你可以先试一试。去下一篇论文去适应打开 nature 或者一些数据平台去尝试一遍，有个手感印象。你可以结合后面学长学姐所说的内容。更好的理解，更好的使用工具。</p><p>总结这一页就是用 edge 浏览器用 bing，这是我的配置，我一般是这样配置的 edge 浏览器使用 bing 搜索引擎，然后下一页这我贴的这个。网页搜索在百度和 Bing 引擎上面搜索这两个搜索雷达点云图数据集百度先给了一个广告，然后下面是。CSDN 的不是直接的链接，或者说点进去好多链接用不了以及各种广告，百度明显不建议用，然后 B 这边你看一下子就可以找到这些。百度上检索不到的数据集，他们免费可以下载你要点进去详细的看你去大批量的检索，看有没有适合你的，很多网站是很友好的，你去注册完之后。你可以免费的下载，它有一些数据集。</p><p>还有一个部分就是有一些数据一看量它的占空，它所占空间。很大，我当时下载点云图数据的时候，似乎在注册方面就是有的网站，它可能限制你的下载，你可能注册的时候要需要用到。我找到的点云图数据，每一个基本上都在 20G 以上，然后解压你下载到的大小是一个压缩包，你还要解压它解压出来是双倍的空间，你需要充分的准备你的存储空间你才能够。下载完你才能够打开它，然后才能找到你想要的部分，更加细化精化。</p><p>然后我们刚刚提到我们去找数据集，我们在病上面看到这些好多都是英文名字的，还有外国这种整理出来的数据集，我们为什么要找这样的数据集，我们推荐找英文来源的公开数据集，为什么？因为像百度这里它直接推送了一些 CSDN 网站上的文章，好多也是抱着盈利目的，有的可能贴到把自己的微信公众号链接贴在那边，然后让大家去什么关注扫描。最后竹篮打水一场空没找到数据集浪费的时间，在美赛期间时间紧张的时候，这种网站。会浪费自己的时间。</p><p>然后。这些网站自身有数据自身免费，但是可能会浪费你的时间，他们可能会进入一些你下载不到东西的网站。而且很可能就是盗版来自于我们说的英文来源的公开数据集的，然后他还可能跑到一些直接收费直接跳广告的界面，这边可能不说你。遇到好多情况就是浪费你的时间，所以不建议去看这种类似 CSDN 网站上面的有数据局的文章，可以稍微看一眼看看。里面有提到什么，但是不要点它链接，或者说看到它有广告之后直接关闭界面，不要多看这种浪费时间，强烈建议检索英文数据集，并且搭配刚刚提到的沉浸式翻译之类的汉化插件检索。来提高效率。</p><p>并且好多数据局网站它提供的是浏览器直接下载途径，也就是刚刚提到的数据集好多，它的内存占用内存很大。然后你从国内的，要么他让你网盘下载，要么让你去关注微信公众号去途径让你下载都不如浏览器直接下载，直接迅速浏览器下载，直接使用你的宽带下载它。速度优于你去花时间开会员，或者说好多情况下的下载，我当时下载点云数据网站直接提供浏览器下载。虽然有 20G，但是每一个数据集大概没有超过半个小时就下载完了，那么不要去尝试去花钱去开通很多什么网盘会员去下载所谓的数据集，因为他们。难以看见他们真正的作用有效性。</p><p>我刚我等一下会展示一个网站，它是我当时检索时的网站，它上面可以直接看到点云图，它直接给你提供预览界面，这样的网站是很好的。你可以直接看到这数据集是不是你想要的，他有没有你想要的东西，这种网站很好，你可以去尝试搜索更多这样的网站，而不是下载看不见内容的这种网盘里的文件，然后花钱花时间下下来。打开发现不是一所要的东西，这是浪费时间的，没有效率的。</p><p>那么电视病人（但是别人）刚刚说的上面有一些什么数据集文件，还有提到一些什么建模思路的那种想法。不建议看，但是你在后面我要提到的是现学现用软件的学习的部分，你可以参考其中的一些内容，比如我刚刚提到的处理点云数据时使用的是。Cloud compare 这个软件它其中有一步是调整我们点云图的朝向，它需要去进行欧拉角旋转这样的。好像比较特殊的操作，我是在其他的途径没有找到他的学习内容的，我是在 CSDN 上面某一篇文章，小众文章上面找到了这一个资料的。所以 CSDN 上面可以参考一些软件入门学习的部分。</p><p>然后是现学现用的部分，我们刚刚提到网络上的思路不参考，而网络上有参考文献。他们往往搭配的思路出现，那么思路那些很多是他们论文在参考文献之前出现的，他们把一些。那种参考文献里面的东西组织一下，然后贴进去就发出来了，但是也没有参考文献的精华，你在数据缺失参考文献缺失，比如我当时的。古代建筑楼梯磨损这一块很少有相关的论文，当你自己检索不到更多论文时。你可以去参考所谓的完整论文，他们给出的参考文献，尝试从参考文献里面别人的参考文献。找到想要的东西，很多文章参考文献，它有又有自己的参考文献，你可以一直找你从这个角度出发。你就可以去更好的去发现想要的参考文献，这是参考文献大于网络上思路的部分思路，大部分模仿千篇一律参考文献，它是。很多是来自权威网站，权威期刊，这些参考文献是值得参考的，那么我们做的事情是更好的阅读参考文献。</p><p>我们要找参考文献刚刚说的是数据缺失参考文献很少情况下我们。去参考别人的，一般情况下，我们是自己检索关键词的。我们看我们所需，比如说我们的轴心磨损，我们就检索磨损这个东西。磨损它可以转换成英文关键词，然后去检索，然后去找相应的论文按类下载，然后保存打印。我可能讲的速度比较慢，我讲快一点，然后我们可以获得相应的 pdf 文件，然后我们还可以去查看网络上提到的一些就是我刚才说的那些参考文献，别人有提到的，我们去看一下以及一些重要的关键词，我们去检索。</p><p>我在 open heritage 这个是数据局网站，我在上面去查找楼梯的直接查这个关键词，没有找到，但是我在其他人提到参考文献关键词的时候，我。看到说有一些建筑这种名字，然后我去搜索，我就搜索到想要的东西，所以现学现用部分可以去参考别人一些关键词。</p><p>这是这一页的部分，然后这是我当时的一些看的网课知识课，这是现学现用部分的软件学习部分去学习参考一些网课就是。这一页总结这精简总结就是现学现用我们要学软件，学一些处理方法的时候，最好方法最快的方法就是类似期末速通，我们去看网课，然后找教程确实有时候可以参考 CSDN 支付这些部分，然后。不懂的部分让 ai 教你这三个三毛斧下来，你可以去学习一些相应的东西，那么我这个软件平时难以接触，但是可以通过这样的方法去疏通去学习，然后可以提取我们想要的有效部分。</p><p>然后 CSDN 可以提供一些小众内容帮助你学习，然后这个总结就是选择合适的浏览器，检索引擎，找到想要的数据文献。然后搭配 ai 助力软件，你可能是很陌生的，需要从零到一处理学习，但是提前把这些准备好，你去安装好，它像刚刚 凉柚 NH3 提到的，你先去搭配好你的编程环境之类的，让代码能在本地跑起来，以及这些插件安装好，提前去下一个论文，然后准备一些网络环境重要的工具账号。你就可以更加熟悉工具的使用，提高自己的效率，提前准备好能保证比赛期间不堵塞，然后不要去把自己一些关键信息输进去，可能会泄露。</p><p>这是我的部分，下面可以交给队友来讲，我先退出共享。谢谢。</p></section><section><h3>ac6 部分<a href="#ac6-部分"><span>#</span></a></h3><section><h4>引入（绘图与排版）<a href="#引入绘图与排版"><span>#</span></a></h4><p>我这边就接着他讲讲绘图与排版。首先声明一下，现在的数学建模就是以论文手为核心，这是之前我队友说过的，论文是建模比赛的“脸”，是一个“颜值”。评委老师可能只关注你的论文，他根本不关注你数据的来源，你的方法可能也会关注，但是重要的是论文与排版。首先声明一下，这篇是我的个人见解，可能里面部分观点有点极端了，先叠个甲。</p><p>一个建议是一定不要抱着“先建模，然后代码验证，再写论文”的方法。换到高中数学的话，就是一定要先看题目，然后思考怎么解题，然后在草稿纸上把题解完，然后最后再填到答题卡上——这种做法在数学建模比赛中是不可取的，主要是因为来不及。</p><p>这个时间是非常紧张的，有的时候可以建模和论文一同进行。毕竟比如说你的队友在建模的时候，你的论文里可以把一些模型假设，或者一些基本的一些架构先打好。</p><p>这里很多人——美赛是包括很多大一学生——是他们的第一篇论文。第一篇论文，建模论文和普通论文还是有一些区别的。特别是美赛建模论文，就是偏向教科书、杂志这种类型的，要图文并茂，或者是有图有公式。</p><p>像这边是人教版数学九年级的，就是花里胡哨一点。我们的绝大多数书可能是有西方教科书的模式的，但是特别是练习册，包括教学方法，很多都是一些老式的“苏联模式”：就是老师一昧的堆砌概念，定义 1.1 就是什么极限的定义，然后公式 1.1 什么微积分基本定理，然后引理……整本书都是堆砌公式。</p><p>但在你的论文里面，一定不要出现完全堆砌公式的情况。你要注重生活情景，而生活情景、生活主题、社会热点问题，它恰恰就是数学建模的一个过程。比如说我们高中数学用复利问题引入自然对数 <span><span>ee</span><span><span><span></span><span>e</span></span></span></span>，或者用种群增长模型引入这个微分方程，用刚刚的比萨斜塔引入这个简单的解直角三角形。</p><p>你在论文里体现，不能直接体现解直角三角形——上来第一句话就是“我们可以考虑这个解直角三角形”，这是非常突兀的。你要先做一个介绍，一种引入。这是常规的方程中用震荡电路来表现这个微分方程，来引入微分方程，这有一个过渡，不会那么突兀。</p><p>数学本身是为解决问题而发明的工具，我们把它教成了一个抽象体系，然后再去找应用，这似乎本末倒置了。而这个建模比赛就恰恰反映了这个应用是一个抽象它的本身。是先有问题，再有数学，而不是先有数学，然后我们再找这个应用。人类的公然认知是从情景到总结，而不是先有公理，再有应用的。</p></section><section><h4>关于图片的分类与绘制<a href="#关于图片的分类与绘制"><span>#</span></a></h4><p>然后我这边分为几类：</p><p>第一类：图表和公式</p><p>首先就是有关作图的。因为是零基础，我这边就以一个初学者的角度来讲一下这种图。包括这种教科书的图，你怎么做？这个图就很简单，网上随便找一个比萨斜塔的图片，然后拿进 PPT 里面画两个箭头，这种图相信绝大多数人都会做。</p><p>我这边图片分为四个模块：</p><ol>
<li><strong>凑字数的图（充版面的图）</strong>：就是一页文字中你可能绝大部分都是文字，你要用两张图来充版面，让你的这个论文不那么单一。我这边讲的论文是以 Word 文档为主体的。</li>
<li><strong>反映数据的图</strong>：这也是老师或者是一些网课特别强调的，数据反映的比较直观。如果用一张表或者用文字叙述的话，可能不会像图片这么直观。这里紫色的线的震荡比绿色这个线震荡明显要大，如果用数据或者图表阐述的话，没有那么直观。</li>
<li><strong>流程图</strong>：类似于思维导图，就是展示文章架构，就是展示你的解题思路的一种图。</li>
<li><strong>示意图</strong>：跟这个充版面的图其实是差不多的。示意图分类可能很多了，包括受力分析图、几何的画画（函数图像或者抛物线、投篮球的图像），包括前面这个祝融号飞船的航海图像，就是示意图。</li>
</ol><p>美赛对于论文的写作、图片的绘制是重视度非常高的。这跟国赛是不一样的，国赛可能更注重你的结果，更注重你的那个方法。你的文章可能可以堆砌，可以像“苏联模式”这样堆砌公理、堆砌方法，或者像你高中考试写作业的时候那样。但是美赛一定不行的，一定要有优雅的配图和排版。美赛偏向于是一个杂志，很多图主要是为了美观。</p></section><section><h4>详细讲解各类图片<a href="#详细讲解各类图片"><span>#</span></a></h4><ol>
<li>展现数据的图形</li>
</ol><p>这边我认为数据图最主要的是数据，而不是折线用什么红色白色、这个点是散点图还是什么。主要就是数据如何获得。</p><p>展示数据的图片有很多，一种就是用 Excel，对于初学者来说最简单就是 Excel。比如今天的天气，这周的天气最高气温 15 度、最低气温 5 度……然后画成一张折线图。这是用 Excel 可以做到的，也是非常简单的。</p><p>当然也可以使用 Matlab、Python，就是喂给他数据，然后他给你生成图像。也可以使用网站工具作图，也可以直接把那个数据归给 AI，然后让 AI 给你进行美化。但是要注意一点，你把数据丢给 AI，或者是让 AI 生成图片的时候，它可能会对图片进行“二次创作”。它可能不是跟你喂的数据完全一致，会有些出入或者有些美化，就要注意一点。</p><p>专业的软件，我这里就不讲解了，一般都是现学现用，比如 Origin 这种美化数据的软件。</p><p>你要知道的你需要几种图表，一般来说就是：<strong>柱形图、折线图、散点图、饼图和热力图</strong>。</p><ul>
<li>柱形图、折线图和饼图是大家小学初中包括高中都特别常用的。</li>
<li>散点图主要就是展示两个变量之间的相关性。比如青年就业率和结婚率的关系，这种叫相关性，就可以画散点图，可以加拟合线或者线性回归之类的。</li>
</ul><p>展示量化关系就是这种图片。当然不仅限于这几种图片，可以用一些组合图或者是一些你自创的图片。</p><ol>
<li>流程图（思维导图）</li>
</ol><p>我这边最容易上手的就是 PPT 上面的画图。PPT 这边直接插入形状，给它调成黑色，然后用简单的箭头在这里连接，就可以简单的作图了。</p><p>这个流程图重要的是你的思路，你怎么搭的框架。就比如说青年失业率和结婚率的关系，你需要注意的是，输入到输出中间的思路是什么？这其实是你的建模过程。</p><p>就比如说祝融号，你要建模成一个质点，这个是如何建模的？你要体现这个思路。比如说这个祝融号在航海中特别小，这些相当于模型假设。主要是理清思路，而如何理清思路，就是有已知条件和输出。</p><p>中间的假设条件（Assumption）可能是在一定程度下是平稳的，或者是什么移民条件很平稳，然后可以简化成什么模型。就是输入一个东西，产生一种框架。比如无人机的位置，这个投档位置相当于中间变量，引爆位置都是中间变量。</p><p>基本的建模流程图可以笼统一点，也可以详细一点。这其实是一个等到大题的流程图，你每道小题流程图可以再详尽一点。就是讲这里基本建模的时候可以拆开来，如何建模、针对性优化，这只是一个在问题分析后面一个总的建模。把你用到的大体模型给它展示一下就可以了。具体的求解方法，包括灵敏度分析或者误差分析，展示一下就可以了。</p><ol>
<li>示意图</li>
</ol><p>示意图也很多样，像这种受力分析图，或者是日历图，或者是时间的年代图。</p><p>主要就是根据题目的要求。如果题目是一个电学图，你肯定要画电路图试一下；如果题目是一个几何题，或者是什么钟摆，你可能是要画几何图这样试一下；或者是受力分析图。</p><p>必要时候，你们第一天，特别是第一天没什么思路的时候，可以直接手写手绘示意图，在草稿纸上画一下这种图，再在 PPT 或者是一些软件上面做这种图片。或者是你实在没办法，把手绘的扫描成一个文档、扫描成一个图片，然后贴在你的论文里面。</p><ol>
<li>水图（充版面的图像）</li>
</ol><p>就比如说我们高等数学中的欧拉头像，或者说语文书上一些奇奇怪怪的建筑图，或者什么杜甫头像，大西洋日报里面的一些浮夸的图像。</p><p>有些图像你没什么意义，删掉也是可以的，它放在那里的意义就是吸引人的眼球，就是为了充版面，这就是这种“水图”的意义。像这个谜语图，你完全可以用两行字来介绍一下这个谜语是什么，但他用了这幅图，配色还特别的丰富。</p><p>这种图片就是充版面的。而这种图如何找？一种就是你可以直接上网搜索，但是上网搜索后面在你论文后面一定要标记信息来源（谷歌搜索或者是哪个链接）。</p><p>还有一种，水图不宜过多，不要整篇文章全是水图，这样显得论文很空洞。而且不要放一些无关的水图，有些人这个论文里面把你们三个合照放进去，这不行的。</p></section><section><h4>表格与符号说明<a href="#表格与符号说明"><span>#</span></a></h4><p>第二个就是表格，一个很重要的就是 <strong>Notation（符号说明）</strong>。</p><p>这里表格尽量用<strong>三线表</strong>。这边展示一下三线表如何用：</p><ul>
<li>你插入一个几行几列的表格。</li>
<li>把它全框线设置成无框线。</li>
<li>然后第一行的上面（上横线）设置一磅，然后下横线也设置一磅。</li>
<li>这里表头可以设置 0.5 磅或者 0.75 磅，这无所谓。</li>
</ul><p>一个是符号（Symbol），然后描述（Description）和单位（Unit）。</p><ul>
<li>符号：比如说 <span><span>viv_i</span><span><span><span></span><span><span>v</span><span><span><span><span><span><span></span><span><span>i</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span> 表示速度，尽量用新罗马体（Times New Roman），斜体。</li>
<li>单位：尽量是正体，不要斜体。</li>
<li>描述：尽量就是三线表，也不要全框线，显得很杂乱，三线表还是比较美观的。</li>
</ul><p>关于符号说明（Notation），可以把全文反复用到的符号声明一遍，不要每个符号都声明，显得这个文章会非常的臃肿（一个 Notation 占了半页或者占了一面）。有些参数、有些系数，整篇文章你只用了一次或者只用了两次，你只需要在那个公式下面描述一下这个参数是什么意思就可以了，不要单独的放在 Notation 这里。</p><p>这个 Notation 尽量不要超过半页，如果超过了，你尽量可以删减一下，把一些不重要的删减一下，就是美观问题。</p><p>关于表格还有第二个作用，就比如说有些数据你枚举的非常费劲，或者它的规律性特别强。比如说这个无人机，它三台无人机投放，然后三个坐标、三个遮蔽时长、三个速度。你用文字描述的话可能会一大段，但是你不一定描述的清楚也不明显，你就可以列一张表，或者是做一个图（当然我这里建议列表）。这个表格你可以自定义，比如这里写速度，这里写方向，也没有问题，把同类型的给它合并起来。关于表格比文字是更直观的，文字有的时候让人不想看，让人厌倦。</p></section><section><h4>公式编辑<a href="#公式编辑"><span>#</span></a></h4><p>关于公式，对于初学者来说公式就这两种：</p><ol>
<li><strong>Office 自带插入公式</strong>：利用 Office 这里的插入公式，基本上你的所有符号都能枚举出来，或者上下标也是可以的。对于初学者来说已经很够用了。当然有些排版可能不好看，比如这个分数线、指数可能不够规范。</li>
<li><strong>MathType 插件</strong>：比如 <span><span>lim⁡(1+1/n)n=e\lim (1 + 1/n)^n = e</span><span><span><span></span><span>lim</span><span>(</span><span>1</span><span></span><span>+</span><span></span></span><span><span></span><span>1/</span><span>n</span><span><span>)</span><span><span><span><span><span><span></span><span><span>n</span></span></span></span></span></span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>e</span></span></span></span>。用 MathType 生成的是新罗马体，和 Office 自带的字体不一样，教科书是更偏向于这个新罗马体的。包括矩阵，这边自带的也是可以直接声明矩阵的。</li>
</ol><p>还有一种就是用 AI 生成公式。所以你再笨的话，你就用手写，把公式手写出来，或者说你看到那个网上找或者 AI 生成的一些公式，你看不懂，你把公式手写出来，然后再让 AI 给它生成成这种 LaTeX 代码。这行代码在 Word 文档里面（如果有插件）可以直接转化成这个公式。</p><p>这是公式的问题，尽量要会编辑一些简单的公式，复杂的公式其实也没必要。</p><p>然后就是关于公式，你要完善每一个公式的说明。就是一大串公式之后，你要完善好这个 <span><span>EE</span><span><span><span></span><span>E</span></span></span></span> 指代的是什么？<span><span>aa</span><span><span><span></span><span>a</span></span></span></span> 指代的是什么？<span><span>CC</span><span><span><span></span><span>C</span></span></span></span> 和 <span><span>RR</span><span><span><span></span><span>R</span></span></span></span> 分别指代的是什么？</p><p>还有就是不要堆砌公式。不要一版面全是公式，然后后面一版面又全是图表，前面一版面又全是文字，这样显得排版非常的不合理。</p></section><section><h4>论文架构<a href="#论文架构"><span>#</span></a></h4><p>下一页就是整篇文章的架构。这分为：</p><ol>
<li><strong>Introduction</strong>（问题背景、问题重述、分析）</li>
<li><strong>Assumption</strong>（基本假设）</li>
<li><strong>Notation</strong>（符号说明）</li>
<li><strong>Body</strong>（主体内容，Part 4 &amp; 5）</li>
<li><strong>Evaluation</strong>（模型的评价）</li>
<li><strong>Conclusion</strong>（结论）</li>
</ol><p>目录也是要有的，分一级标题、二级标题、三级标题这样子。</p><p><strong>Part 1</strong>: 模型的背景、问题的分析和大体的方法。你大体的思路要在第一部分里就体现出来，不要磨磨唧唧的最后一段才体现你的建模方法。这是不可取的，尽量在开头或者摘要的时候就体现出来。全文的框架（思维导图）尽量堆在前面，让评委一眼就能看到你在干什么。</p><p><strong>Part 2 &amp; 3 (Assumption &amp; Notation)</strong>: 模型的假设。比如说比萨斜塔可以假设它是直立的，不是一个拱桥；也可以假设每层楼高是一样的；或者那个祝融号可以假设它是一个质点。</p><ul>
<li>符号说明刚刚讲过了，就是把全文主要的符号给它列举起来。</li>
</ul><p><strong>Part 4 &amp; 5 (Body)</strong>: 正文内容。注意一下必要的误差分析和敏感性分析。基本上你的模型都不会是完好无损的，都会有误差。</p><ul>
<li><strong>敏感性分析</strong>：就是调整参数，你的模型结果会不会变，变多少？</li>
<li><strong>误差分析</strong>：就是你这个模型预测的结果，接不接近。</li>
</ul><p><strong>Part 6 (Evaluation)</strong>: 模型的评估。列举几条模型的优缺点，或者是可能的运用、推广、改进之类的。</p><p><strong>Part 7 (Conclusion)</strong>: 模型的结论。这边有一个要注意的就是，包括模型假设、评估和结论，<strong>结论要写在前面</strong>。尽量把结论写在前面，不要一段文字在这里堆砌不知所云。</p><ul>
<li>有些人写一大段，既写了他干净清爽，又写了他勤洗头，又写了他形象端正……你想表达什么？要尽量把点写在前面。</li>
<li>还有优缺点不要前后矛盾了。</li>
<li>可能的推广：如果你的模型特别简单，尽量写推广；如果你的模型特别新颖，就可以写应用。</li>
</ul></section><section><h4>摘要写作<a href="#摘要写作"><span>#</span></a></h4><p>然后就到了最重要的一点：我们现在论文错字连篇，96 个小时过后，你的论文还是什么都不会，前后矛盾，图文不搭，公式乱码的情况下，只剩三个小时了。现在你要干什么？</p><p><strong>你现在当务之急要做的就是改摘要</strong>。把摘要给它改的像一篇人写的出来的东西。当务之急是改摘要。</p><p>摘要怎么写？摘要其实就类似于八股文，我这里摘要分成三个部分：</p><ol>
<li>
<p><strong>第一段</strong>：主要就是一两句话引出你的背景，引出你的问题。不要太多，不要超过两行。然后再两句话写出你贯穿全文的方法、总问题、总方法、主要模型。这两段加起来不要超过四句。</p>
</li>
<li>
<p><strong>第 2、3、4 段</strong>：针对你的每一个问题都简要的概述一下。</p>
<ul>
<li>首先简要概述一下你这个问题想干什么。</li>
<li>然后你用了什么思路，用了什么模型，用了什么算法，解决了什么问题。</li>
<li>如何优化这个问题。</li>
<li>把非常明确的东西放在摘要里，不要把一些模棱两可的东西写在摘要上。</li>
<li>摘要一定要“能量度”高，一定要每一句话都不能有语病的，不要啰嗦。</li>
<li>主要过程、主要关键步骤就是在中间这几段。</li>
</ul>
</li>
<li>
<p><strong>最后一段</strong>：交代你全文的特色，对应的就是模型的优缺点，或者说模型的推广。也是两三句即可。</p>
</li>
</ol><p>摘要里 11 个字：<strong>就是要凝练，一定要简明扼要</strong>。</p></section><section><h4>字体与排版<a href="#字体与排版"><span>#</span></a></h4><p>最后是关于字体字号问题。</p><p>首先美赛对论文其实是没有什么要求的，只要字体字号让阅卷老师看得清楚就可以了。</p><ul>
<li>我建议正文的字号大小是<strong>小四</strong>。</li>
<li>摘要这种一级标题比二级标题要大，二级标题比三级标题要大。</li>
<li>摘要标题用<strong>小三</strong>。</li>
<li>加粗不加粗我觉得无所谓。</li>
</ul><p>我推荐四五种字体：</p><ul>
<li><strong>衬线字体</strong>：就相当于宋体，比如 <strong>Times New Roman</strong>。尽量正文就是 New Roman。</li>
<li><strong>无衬线字体</strong>：相当于黑体，比如 Arial。标题或者图表的话可以用这个字体。</li>
<li><strong>等宽字体</strong>：比如 Courier New，用于代码可能多一点。</li>
<li>不要使用突兀花哨的字体，在正文里一定不要使用。</li>
</ul><p>我这边就到这里！后面是交给我队长（<strong>凉柚 NH3</strong>）的第六部分，给我队长总结一下。</p></section></section><section><h3>总结<a href="#总结"><span>#</span></a></h3><p>凉柚 NH3：</p><p>最后，就总简简单很简单的总结一下，最后就体验就是一个关于绘图的话，就反正你就现在你可以用 ai 生成，你可以生成。这个我不细讲了这篇 ppt 里面非常多的图，都是用 ai 有一些可能看得很明显，但是有一些就是我特地加的 prompt，让它变得非常不明显，看出来人。</p><p>然后最后一点就是有关于 AI 的使用问题，我们那个时候是 25 年年初那个时候最强的 AI 是 chatgpt4，4o 的话，它是有次数使用限制的次数限制非常严格。反正无论你使用什么 ai 工具，反正就是保持自己的思考。</p><p>另外要注意的就是 ai 它是有使用次数上限的，比如说学生认证后的 Gemini 3 Pro 还一天请求次数上限是 100。然后我们分享就到这里，接下来是有没有 qa 我也不知道你们有没有问题要问，因为因为我前面以为时间不够，我讲的会比较紧，后面我两位队友会讲的会松一点，没有的话就这样吧。</p></section><section><h3>后续：总结与问答<a href="#后续总结与问答"><span>#</span></a></h3><p>周老师：</p><p>来看一下其他同学有没有什么要问的？</p><p>因为说实话，不管他们整个团队，整个分享都非常细。大家一定要注意，他是从整个的初学者的角度，就是说从他们自己刚开始美赛建模过程当中的一些经验。</p><p>包括我听下来之后，我感觉好像有一种身临其境的感觉，可以感觉到他们在一整个比赛过程当中，他们的队伍到底是怎么样在磨合，或者怎么样去把这个任务给它完成。我是可以感受到这一点，不知道在座听的同学会不会感受到这些点。</p><p>他们的准备 PPT 里面也给了很多大家以后会经常问到的问题，比如说：</p><ul>
<li><strong>关于论文格式</strong>：按道理，我们的论文它的格式有什么限制？刚才 ac6 同学说了，它只有个页码的限制，还有摘要的页码限制、目录的一些页码限制，但是里面到底你用什么样的字体，或者什么样的一个字号，是没有硬性限制的。</li>
<li><strong>关于图文配合</strong>：很关键一点就是你怎么样通过文字、图表进行好好的配合，添加一些色彩等等，怎么让你的整篇论文看起来赏心悦目。</li>
<li><strong>核心竞争力</strong>：最关键一定有你自己的内核，有自己的创新的东西。这是最关键的。</li>
</ul><p>其他同学还有没有什么要问的？所以这些东西是一个很难得的机会哈，但有些我是感觉如果你有去体会，或者最近有在认真准备的同学，你就会感受到一些问题。</p><p>在这个问题里，我刚才也跟大家强调过了，我觉得刚才 <strong>凉柚 NH3</strong> 提的一个非常关键：</p><ol>
<li><strong>研读欧奖论文</strong>：你在准备过程当中，你到底选取了多少篇优秀的欧奖论文？你选取的欧奖论文，你对它研读到了什么程度？这会影响到你最终能走得多远。言外之意，我到底给我自己整个的团队、整个建模过程里面，我花了多少时间准备？我们的研读到底是研读到什么程度？</li>
<li><strong>关于选题</strong>：总共有六道题，当然大部分的队伍都会选择前面的三道题。刚才也给了一个比例，选 C 题的比例更高，因为不管怎样，你在什么专业当中，你 C 题多多少少都会能够把它完整的完成，它的整个的专业性可能稍微会偏弱一点，更多的是一种比较广泛的、大家能够接受的思考。</li>
<li><strong>赛前准备</strong>：在现在这个阶段里面，你该怎么去准备？这是一个非常关键的事情。所有的这些工具，怎么样挑出来觉得适合你们团队的？或者你所选择的努力的一个方向，基本上在这之前都有一个很明确的方向。哪一些题、哪一些类型比较适合你们自己队伍的，你们都必须要把这个事情做到前头来。包括排版的一些工具，还有我们的一些公式的使用，这些东西对你们来说上手都是超级快的，只要你用心的去做这么一件事情，都可以很好的去完成它。</li>
</ol><p>你看他的整个分享，也是我们之前在做去年美赛的时候，就是针对“数据”这个问题。他就告诉大家，他的一整个思考：他怎么去选工具，怎么样去一个流程。我觉得听下来，能够感受得到就是在身临其境的。在那种好像大家都在没办法找到数据的情况下，我怎么做到我去突围？我能够队伍能够找到一个比较不错的数据？别人找不到我能找得到。</p><p>而且里面也说了，<strong>千万不要去听信网络上所对应的分享</strong>。我可以告诉大家一个非常关键的点：</p><ul>
<li><strong>避坑指南</strong>：只要是网络上分享的那些方法，基本在评审的时候都会规避。因为那些方法都不是不靠谱，或者都不是一些很成熟的方法。</li>
<li><strong>独立思考</strong>：你想，很多方法都是题目一出来一两个小时他就有思路了，如果是这么简单的话，那我也不需要说大家去建模了。所有的东西全部都是 AI 去做，或者全部都是按照这一个套路做，绝对不是这么回事的。他只是给你抛一些诱饵，让你去咬这个钩，一旦咬了这个钩，你就发现你后面就完全就深陷其中了。</li>
</ul><p>不管怎样，我觉得他今天讲了一个非常关键点：<strong>每支队伍你在拿到题目的时候，一定得有自己的思维。</strong></p><ul>
<li><strong>工具的主动权</strong>：一定要你把所有的所能用到的工具，一定得能够“为你所用”，为你队伍所用。不能被所有的工具，比如被 AI 牵着鼻子走。如果你一整篇论文给出来都是 AI 的味道，那你这论文肯定被灭了，基本上你肯定是走不远的。</li>
<li><strong>现学现用</strong>：你要让 AI 变成你的一个工具。当然，有些可能说碰到一些题目，我得现学现用，你得知道我怎么样、以什么样的渠道去现学现用。这些东西平时你都必须去练习。</li>
</ul><p>说点实话，我就不知道大家听完之后你们的感受到底是什么。我看有些同学可能就没有太多认真去听这方面的一些分享，好像感觉现在还有时间、我可以放回放等等。我是觉得很多东西就一定得是“现在学，现在感受”，直接把这问题给他解决掉了。</p><p>同学们还没什么问题？如果没什么问题的话，我们今天这支队伍的分享就到这里哈。</p><p>感谢你们三位同学哈，非常感谢花了很多时间去做准备，也给大家提供了非常精彩的一个报告，好，谢谢你们！</p><p>我刚刚说了，那当然那个内容我还是算了，放在明天说吧，那今天的时间也不早了，那我就不多说了哈。那我们今天的分享就到这里。好同学们，这我们就退出会议了哈。</p><p>梁老师，大家退出会议有什么问题都可以在群里面都问，都可以问。</p><p>梁老师：</p><p>好，那就这样子。</p><p>周老师：</p><p>梁老师再见哈，好，新年快乐！梁老师快新年了，再过差不多两个小时。</p><p>梁老师：</p><p>好，再见，新年快乐！</p><p>周老师：</p><p>好。</p></section></section>
<section><h2>爬取腾讯会议会议纪要的脚本<a href="#爬取腾讯会议会议纪要的脚本"><span>#</span></a></h2><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>import</span><span> time</span></div></div><div><div><div>2</div></div><div><span>from</span><span> selenium </span><span>import</span><span> webdriver</span></div></div><div><div><div>3</div></div><div><span>from</span><span> selenium.webdriver.chrome.service </span><span>import</span><span> Service</span></div></div><div><div><div>4</div></div><div><span>from</span><span> selenium.webdriver.common.by </span><span>import</span><span> By</span></div></div><div><div><div>5</div></div><div><span>from</span><span> selenium.webdriver.common.keys </span><span>import</span><span> Keys</span></div></div><div><div><div>6</div></div><div><span>from</span><span> selenium.webdriver.common.action_chains </span><span>import</span><span> ActionChains</span></div></div><div><div><div>7</div></div><div><span>from</span><span> webdriver_manager.chrome </span><span>import</span><span> ChromeDriverManager</span></div></div><div><div><div>8</div></div><div><span>from</span><span> bs4 </span><span>import</span><span> BeautifulSoup</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>def</span><span> </span><span>scrape_tencent_meeting_keyboard</span><span>(</span><span>url</span><span>):</span></div></div><div><div><div>11</div></div><div><span>    </span><span># 1. 启动浏览器</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>options </span><span>=</span><span> webdriver.</span><span>ChromeOptions</span><span>()</span></div></div><div><div><div>13</div></div><div><span><span>    </span></span><span>options.</span><span>add_argument</span><span>(</span><span>"--log-level=3"</span><span>)</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>options.</span><span>add_argument</span><span>(</span><span>"--mute-audio"</span><span>)</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span><span>    </span></span><span>driver </span><span>=</span><span> webdriver.</span><span>Chrome</span><span>(</span><span>service</span><span><span>=</span><span>Service</span><span>(</span><span>ChromeDriverManager</span><span>().</span><span>install</span><span>()), </span></span><span>options</span><span><span>=</span><span>options)</span></span></div></div><div><div><div>17</div></div><div><span>    </span><span># 窗口尽量拉高，这样一屏能容纳更多内容，减少滚动次数</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>driver.</span><span>set_window_size</span><span>(</span><span>1000</span><span>, </span><span>900</span><span>)</span></div></div><div><div><div>19</div></div><div>
</div></div><div><div><div>20</div></div><div><span><span>    </span></span><span>unique_sentences </span><span>=</span><span> {}</span></div></div><div><div><div>21</div></div><div>
</div></div><div><div><div>22</div></div><div><span>    </span><span>try</span><span>:</span></div></div><div><div><div>23</div></div><div><span>        </span><span>print</span><span>(</span><span>f</span><span>"正在打开页面：</span><span>{</span><span>url</span><span>}</span><span>"</span><span>)</span></div></div><div><div><div>24</div></div><div><span><span>        </span></span><span>driver.</span><span>get</span><span>(url)</span></div></div><div><div><div>25</div></div><div>
</div></div><div><div><div>26</div></div><div><span>        </span><span>print</span><span>(</span><span>"等待页面完全加载 (8 秒)..."</span><span>)</span></div></div><div><div><div>27</div></div><div><span><span>        </span></span><span>time.</span><span>sleep</span><span>(</span><span>8</span><span>)</span></div></div><div><div><div>28</div></div><div>
</div></div><div><div><div>29</div></div><div><span>        </span><span>print</span><span>(</span><span>"正在尝试点击文字区域以获取焦点..."</span><span>)</span></div></div><div><div><div>30</div></div><div>
</div></div><div><div><div>31</div></div><div><span>        </span><span># --- A. 关键步骤：点击文字，获取焦点 ---</span></div></div><div><div><div>32</div></div><div><span>        </span><span>try</span><span>:</span></div></div><div><div><div>33</div></div><div><span>            </span><span># 找到第一行文字的容器</span></div></div><div><div><div>34</div></div><div><span><span>            </span></span><span>first_text </span><span>=</span><span> driver.</span><span>find_element</span><span>(By.</span><span>CSS_SELECTOR</span><span>, </span><span>"div[class*='minutes-module-paragraph']"</span><span>)</span></div></div><div><div><div>35</div></div><div><span>            </span><span># 点击它，确保当前网页的“活动元素”是这个文字区</span></div></div><div><div><div>36</div></div><div><span><span>            </span></span><span>ActionChains</span><span>(driver).</span><span>move_to_element</span><span>(first_text).</span><span>click</span><span>().</span><span>perform</span><span>()</span></div></div><div><div><div>37</div></div><div><span>            </span><span>print</span><span>(</span><span>"焦点锁定成功，准备开始按键阅读..."</span><span>)</span></div></div><div><div><div>38</div></div><div><span>        </span><span>except</span><span> </span><span>Exception</span><span> </span><span>as</span><span> e:</span></div></div><div><div><div>39</div></div><div><span>            </span><span>print</span><span>(</span><span>f</span><span>"点击失败，尝试直接点击 Body: </span><span>{</span><span>e</span><span>}</span><span>"</span><span>)</span></div></div><div><div><div>40</div></div><div><span><span>            </span></span><span>driver.</span><span>find_element</span><span>(By.</span><span>TAG_NAME</span><span>, </span><span>'body'</span><span><span>).</span><span>click</span><span>()</span></span></div></div><div><div><div>41</div></div><div>
</div></div><div><div><div>42</div></div><div><span><span>        </span></span><span>last_count </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>43</div></div><div><span><span>        </span></span><span>no_new_data_attempts </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>44</div></div><div>
</div></div><div><div><div>45</div></div><div><span>        </span><span># --- B. 循环：模拟按“下”键 + 抓取 ---</span></div></div><div><div><div>46</div></div><div><span>        </span><span># 既然是长会议，我们多循环几次</span></div></div><div><div><div>47</div></div><div><span>        </span><span>for</span><span> i </span><span>in</span><span> </span><span>range</span><span>(</span><span>300</span><span>):</span></div></div><div><div><div>48</div></div><div><span>            </span><span># 1. 抓取当前屏幕数据</span></div></div><div><div><div>49</div></div><div><span><span>            </span></span><span>page_source </span><span>=</span><span> driver.page_source</span></div></div><div><div><div>50</div></div><div><span><span>            </span></span><span>soup </span><span>=</span><span> </span><span>BeautifulSoup</span><span>(page_source, </span><span>"html.parser"</span><span>)</span></div></div><div><div><div>51</div></div><div>
</div></div><div><div><div>52</div></div><div><span><span>            </span></span><span>rows </span><span>=</span><span> soup.</span><span>select</span><span>(</span><span>"div[class*='minutes-module-row']"</span><span>)</span></div></div><div><div><div>53</div></div><div><span>            </span><span>for</span><span> row </span><span>in</span><span> rows:</span></div></div><div><div><div>54</div></div><div><span><span>                </span></span><span>speaker_elem </span><span>=</span><span> row.</span><span>select_one</span><span>(</span><span>"div[class*='speaker-name']"</span><span>)</span></div></div><div><div><div>55</div></div><div><span><span>                </span></span><span>current_speaker </span><span>=</span><span> speaker_elem.</span><span>get_text</span><span>(</span><span>strip</span><span>=</span><span>True</span><span>) </span><span>if</span><span> speaker_elem </span><span>else</span><span> </span><span>None</span></div></div><div><div><div>56</div></div><div>
</div></div><div><div><div>57</div></div><div><span><span>                </span></span><span>sentences </span><span>=</span><span> row.</span><span>select</span><span>(</span><span>"span[class*='sentence-module_sentence']"</span><span>)</span></div></div><div><div><div>58</div></div><div><span>                </span><span>for</span><span> sent </span><span>in</span><span> sentences:</span></div></div><div><div><div>59</div></div><div><span><span>                    </span></span><span>sid </span><span>=</span><span> sent.</span><span>get</span><span>(</span><span>"data-sid"</span><span>)</span></div></div><div><div><div>60</div></div><div><span><span>                    </span></span><span>text </span><span>=</span><span> sent.</span><span>get_text</span><span>(</span><span>strip</span><span>=</span><span>True</span><span>)</span></div></div><div><div><div>61</div></div><div><span>                    </span><span>if</span><span> sid:</span></div></div><div><div><div>62</div></div><div><span>                        </span><span>if</span><span> sid </span><span>not</span><span> </span><span>in</span><span> unique_sentences:</span></div></div><div><div><div>63</div></div><div><span><span>                            </span></span><span>unique_sentences[sid] </span><span>=</span><span> {</span></div></div><div><div><div>64</div></div><div><span>                                </span><span>"sid"</span><span>: </span><span>int</span><span>(sid),</span></div></div><div><div><div>65</div></div><div><span>                                </span><span>"speaker"</span><span>: current_speaker,</span></div></div><div><div><div>66</div></div><div><span>                                </span><span>"text"</span><span>: text</span></div></div><div><div><div>67</div></div><div><span><span>                            </span></span><span>}</span></div></div><div><div><div>68</div></div><div><span>                        </span><span>elif</span><span> unique_sentences[sid][</span><span>"speaker"</span><span>] </span><span>is</span><span> </span><span>None</span><span> </span><span>and</span><span> current_speaker:</span></div></div><div><div><div>69</div></div><div><span><span>                            </span></span><span>unique_sentences[sid][</span><span>"speaker"</span><span><span>] </span><span>=</span><span> current_speaker</span></span></div></div><div><div><div>70</div></div><div>
</div></div><div><div><div>71</div></div><div><span>            </span><span># 2. 进度判断</span></div></div><div><div><div>72</div></div><div><span><span>            </span></span><span>current_count </span><span>=</span><span> </span><span>len</span><span>(unique_sentences)</span></div></div><div><div><div>73</div></div><div><span>            </span><span>if</span><span><span> i </span><span>%</span><span> </span></span><span>10</span><span><span> </span><span>==</span><span> </span></span><span>0</span><span>: </span><span># 每 10 次报个平安</span></div></div><div><div><div>74</div></div><div><span>                </span><span>print</span><span>(</span><span>f</span><span>"🔄 第 </span><span>{</span><span>i</span><span>}</span><span> 轮按键 | 已收集句子：</span><span>{</span><span>current_count</span><span>}</span><span>"</span><span>)</span></div></div><div><div><div>75</div></div><div>
</div></div><div><div><div>76</div></div><div><span>            </span><span>if</span><span><span> current_count </span><span>==</span><span> last_count:</span></span></div></div><div><div><div>77</div></div><div><span><span>                </span></span><span>no_new_data_attempts </span><span>+=</span><span> </span><span>1</span></div></div><div><div><div>78</div></div><div><span>                </span><span># 连续 20 次没新数据才算到底，因为按键滚得慢</span></div></div><div><div><div>79</div></div><div><span>                </span><span>if</span><span><span> no_new_data_attempts </span><span>&gt;=</span><span> </span></span><span>20</span><span>:</span></div></div><div><div><div>80</div></div><div><span>                    </span><span>print</span><span>(</span><span>"连续多次没有新内容，判断已到底部。"</span><span>)</span></div></div><div><div><div>81</div></div><div><span>                    </span><span>break</span></div></div><div><div><div>82</div></div><div><span>            </span><span>else</span><span>:</span></div></div><div><div><div>83</div></div><div><span><span>                </span></span><span>no_new_data_attempts </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>84</div></div><div>
</div></div><div><div><div>85</div></div><div><span><span>            </span></span><span>last_count </span><span>=</span><span> current_count</span></div></div><div><div><div>86</div></div><div>
</div></div><div><div><div>87</div></div><div><span>            </span><span># 3. 物理操作：按下方向键 (Arrow Down)</span></div></div><div><div><div>88</div></div><div><span>            </span><span># 每次循环按 5 次下键，模拟快速阅读</span></div></div><div><div><div>89</div></div><div><span>            </span><span>try</span><span>:</span></div></div><div><div><div>90</div></div><div><span>                </span><span># 使用 ActionChains 连续按键</span></div></div><div><div><div>91</div></div><div><span><span>                </span></span><span>actions </span><span>=</span><span> </span><span>ActionChains</span><span>(driver)</span></div></div><div><div><div>92</div></div><div><span>                </span><span>for</span><span> _ </span><span>in</span><span> </span><span>range</span><span>(</span><span>5</span><span>):</span></div></div><div><div><div>93</div></div><div><span><span>                    </span></span><span>actions.</span><span>send_keys</span><span>(Keys.</span><span>ARROW_DOWN</span><span>)</span></div></div><div><div><div>94</div></div><div><span><span>                </span></span><span>actions.</span><span>perform</span><span>()</span></div></div><div><div><div>95</div></div><div>
</div></div><div><div><div>96</div></div><div><span>                </span><span># 或者尝试 PageDown，如果 Down 太慢的话</span></div></div><div><div><div>97</div></div><div><span>                </span><span># actions.send_keys(Keys.PAGE_DOWN).perform()</span></div></div><div><div><div>98</div></div><div>
</div></div><div><div><div>99</div></div><div><span>            </span><span>except</span><span> </span><span>Exception</span><span> </span><span>as</span><span> e:</span></div></div><div><div><div>100</div></div><div><span>                </span><span># 有时候焦点丢了，重新点一下 Body</span></div></div><div><div><div>101</div></div><div><span><span>                </span></span><span>driver.</span><span>find_element</span><span>(By.</span><span>TAG_NAME</span><span>, </span><span>'body'</span><span><span>).</span><span>send_keys</span><span>(Keys.</span><span>ARROW_DOWN</span><span>)</span></span></div></div><div><div><div>102</div></div><div>
</div></div><div><div><div>103</div></div><div><span>            </span><span># 稍微停顿，给网页加载时间 (非常重要，太快会跳过)</span></div></div><div><div><div>104</div></div><div><span><span>            </span></span><span>time.</span><span>sleep</span><span>(</span><span>0.5</span><span>)</span></div></div><div><div><div>105</div></div><div>
</div></div><div><div><div>106</div></div><div><span>        </span><span># --- C. 结果整理 ---</span></div></div><div><div><div>107</div></div><div><span>        </span><span>print</span><span>(</span><span>"正在拼接完整记录..."</span><span>)</span></div></div><div><div><div>108</div></div><div><span><span>        </span></span><span>sorted_sids </span><span>=</span><span> </span><span>sorted</span><span><span>(unique_sentences.</span><span>keys</span><span>(), </span></span><span>key</span><span>=</span><span>lambda</span><span> </span><span>x</span><span>: </span><span>int</span><span>(x))</span></div></div><div><div><div>109</div></div><div>
</div></div><div><div><div>110</div></div><div><span><span>        </span></span><span>final_results </span><span>=</span><span> []</span></div></div><div><div><div>111</div></div><div><span><span>        </span></span><span>current_block </span><span>=</span><span> {</span><span>"speaker"</span><span>: </span><span>"未知说话人"</span><span>, </span><span>"text"</span><span>: </span><span>""</span><span>}</span></div></div><div><div><div>112</div></div><div>
</div></div><div><div><div>113</div></div><div><span>        </span><span>for</span><span> sid </span><span>in</span><span> sorted_sids:</span></div></div><div><div><div>114</div></div><div><span><span>            </span></span><span>item </span><span>=</span><span> unique_sentences[sid]</span></div></div><div><div><div>115</div></div><div><span><span>            </span></span><span>speaker </span><span>=</span><span> item[</span><span>"speaker"</span><span>]</span></div></div><div><div><div>116</div></div><div><span><span>            </span></span><span>text </span><span>=</span><span> item[</span><span>"text"</span><span>]</span></div></div><div><div><div>117</div></div><div>
</div></div><div><div><div>118</div></div><div><span>            </span><span>if</span><span> </span><span>not</span><span> speaker:</span></div></div><div><div><div>119</div></div><div><span><span>                </span></span><span>speaker </span><span>=</span><span> current_block[</span><span>"speaker"</span><span>]</span></div></div><div><div><div>120</div></div><div>
</div></div><div><div><div>121</div></div><div><span>            </span><span>if</span><span><span> speaker </span><span>!=</span><span> current_block[</span></span><span>"speaker"</span><span>]:</span></div></div><div><div><div>122</div></div><div><span>                </span><span>if</span><span> current_block[</span><span>"text"</span><span>]:</span></div></div><div><div><div>123</div></div><div><span><span>                    </span></span><span>final_results.</span><span>append</span><span>(current_block)</span></div></div><div><div><div>124</div></div><div><span><span>                </span></span><span>current_block </span><span>=</span><span> {</span><span>"speaker"</span><span>: speaker, </span><span>"text"</span><span>: text}</span></div></div><div><div><div>125</div></div><div><span>            </span><span>else</span><span>:</span></div></div><div><div><div>126</div></div><div><span><span>                </span></span><span>current_block[</span><span>"text"</span><span><span>] </span><span>+=</span><span> text</span></span></div></div><div><div><div>127</div></div><div>
</div></div><div><div><div>128</div></div><div><span>        </span><span>if</span><span> current_block[</span><span>"text"</span><span>]:</span></div></div><div><div><div>129</div></div><div><span><span>            </span></span><span>final_results.</span><span>append</span><span>(current_block)</span></div></div><div><div><div>130</div></div><div>
</div></div><div><div><div>131</div></div><div><span>        </span><span>return</span><span> final_results</span></div></div><div><div><div>132</div></div><div>
</div></div><div><div><div>133</div></div><div><span>    </span><span>except</span><span> </span><span>Exception</span><span> </span><span>as</span><span> e:</span></div></div><div><div><div>134</div></div><div><span>        </span><span>print</span><span>(</span><span>f</span><span>"执行失败：</span><span>{</span><span>e</span><span>}</span><span>"</span><span>)</span></div></div><div><div><div>135</div></div><div><span>        </span><span>return</span><span> []</span></div></div><div><div><div>136</div></div><div>
</div></div><div><div><div>137</div></div><div><span>    </span><span>finally</span><span>:</span></div></div><div><div><div>138</div></div><div><span><span>        </span></span><span>driver.</span><span>quit</span><span>()</span></div></div><div><div><div>139</div></div><div>
</div></div><div><div><div>140</div></div><div><span>if</span><span> </span><span>__name__</span><span><span> </span><span>==</span><span> </span></span><span>"__main__"</span><span>:</span></div></div><div><div><div>141</div></div><div><span><span>    </span></span><span>target_url </span><span>=</span><span> </span><span>""</span></div></div><div><div><div>142</div></div><div>
</div></div><div><div><div>143</div></div><div><span><span>    </span></span><span>results </span><span>=</span><span> </span><span>scrape_tencent_meeting_keyboard</span><span>(target_url)</span></div></div><div><div><div>144</div></div><div>
</div></div><div><div><div>145</div></div><div><span>    </span><span>if</span><span> results:</span></div></div><div><div><div>146</div></div><div><span>        </span><span>print</span><span>(</span><span>"</span><span>\n</span><span>"</span><span><span> </span><span>+</span><span> </span></span><span>"="</span><span>*</span><span>30</span><span>)</span></div></div><div><div><div>147</div></div><div><span><span>        </span></span><span>filename </span><span>=</span><span> </span><span>"tencent_meeting_final_v2.txt"</span></div></div><div><div><div>148</div></div><div><span>        </span><span>with</span><span> </span><span>open</span><span>(filename, </span><span>"w"</span><span>, </span><span>encoding</span><span>=</span><span>"utf-8"</span><span>) </span><span>as</span><span> f:</span></div></div><div><div><div>149</div></div><div><span>            </span><span>for</span><span> item </span><span>in</span><span> results:</span></div></div><div><div><div>150</div></div><div><span>                </span><span># 简单清洗一下格式</span></div></div><div><div><div>151</div></div><div><span><span>                </span></span><span>clean_text </span><span>=</span><span> item[</span><span>'text'</span><span><span>].</span><span>replace</span><span>(</span></span><span>'</span><span>\n</span><span>'</span><span>, </span><span>' '</span><span>)</span></div></div><div><div><div>152</div></div><div><span><span>                </span></span><span>line </span><span>=</span><span> </span><span>f</span><span>"[</span><span>{</span><span>item[</span><span>'speaker'</span><span>]</span><span>}</span><span>]: </span><span>{</span><span>clean_text</span><span>}</span><span>\n</span><span>"</span></div></div><div><div><div>153</div></div><div><span>                </span><span>print</span><span><span>(line.</span><span>strip</span><span>()[:</span></span><span>60</span><span><span>] </span><span>+</span><span> </span></span><span>"..."</span><span>)</span></div></div><div><div><div>154</div></div><div><span><span>                </span></span><span>f.</span><span>write</span><span>(line </span><span>+</span><span> </span><span>"</span><span>\n</span><span>"</span><span>)</span></div></div><div><div><div>155</div></div><div><span>        </span><span>print</span><span>(</span><span>f</span><span>"</span><span>\n</span><span>处理完成，内容已保存到 </span><span>{</span><span>filename</span><span>}</span><span>。"</span><span>)</span></div></div><div><div><div>156</div></div><div><span>    </span><span>else</span><span>:</span></div></div><div><div><div>157</div></div><div><span>        </span><span>print</span><span>(</span><span>"</span><span>\n</span><span>未获取到内容，请检查页面状态或登录态。"</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/alas/debian-waydroid/</id>
      <title type="text">树莓派 5 部署 ALAS</title>
      <published>2025-12-14T00:00:00.000Z</published>
      <updated>2025-12-14T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/alas/debian-waydroid/"/>
      <summary type="text">记录在树莓派 5 上部署 ALAS 的完整过程，包括环境准备、依赖兼容问题、排错过程与最终解决方案，供同类场景参考。</summary>
      <content type="html"><![CDATA[本文已加密保护，请访问网站查看。]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/ai/learning-path-2025/</id>
      <title type="text">有关 AI 学习路线的思考</title>
      <published>2025-10-19T00:00:00.000Z</published>
      <updated>2025-10-19T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/ai/learning-path-2025/"/>
      <summary type="text">探讨 AI 学习路线的设计思路，分析西二 AI 考核的合理性与不足，并提出一条适合未来 AI 学习者的路线图，涵盖基础、应用与科研等多个层面。</summary>
      <content type="html"><![CDATA[本文已加密保护，请访问网站查看。]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/fzu/overview/</id>
      <title type="text">福州大学转专业总介绍</title>
      <published>2025-06-27T00:00:00.000Z</published>
      <updated>2025-06-27T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/fzu/overview/"/>
      <summary type="text">福州大学转专业总介绍，包含你能想到的所有问题、想不到的问题，供有意转专业的同学参考。</summary>
      <content type="html"><![CDATA[<section><h2>维护提示<a href="#维护提示"><span>#</span></a></h2><p>本页内容以 <a href="https://docs.qq.com/doc/DQ2p3cmdkem9GbEV5" target="_blank">腾讯文档</a> 为准，页面是整理后的展示版。更新流程如下：</p><ol>
<li>腾讯文档改完后「导出为 Word」，覆盖本目录下的 <code>福州大学本科生转专业政策Q&amp;A（面向2026年转专业）.docx</code></li>
<li>在 Firefly 仓库根目录（有 <code>package.json</code> 的那一层）执行 <code>pnpm docx-report</code></li>
<li>按报告修改对应的句子和表格行。只改排版（空行、callout、加粗、中英文间加空格）不会被判为差异，比对时会忽略空白与标点</li>
<li>报告里属于「导入时的结构改写」的条目，确认无误后执行一次 <code>pnpm docx-report --accept</code>，当前差异会记入本目录的 <code>.docx-sync-baseline.json</code>，之后不再重复报</li>
</ol><p>其他参数：<code>--out=report.md</code> 把报告写入文件、<code>--strict</code> 有差异时以非零码退出（可接 CI）、<code>--from=前言</code> 指定比对起点、<code>--threshold=0.6</code> 调整「修改」的相似度阈值。</p><p>注意：文档里新增的图片不会自动搬进 <code>assets/</code>，报告只会提示图片数量不一致，需要手动保存后按 <code>![描述](./assets/文件名.png)</code> 插入。</p></section>
<section><h2>福州大学转专业 Q&amp;A 文档<a href="#福州大学转专业-qa-文档"><span>#</span></a></h2><div><div><div></div><div>文档提示</div></div><div><p>下方为在线文档预览。若遇到加载较慢或排版异常，可 <a href="https://docs.qq.com/doc/DQ2p3cmdkem9GbEV5" target="_blank">点击此处直接在新窗口打开原文档</a>。</p></div></div><div>

</div></section>
<section><h2>转专业交流群公告<a href="#转专业交流群公告"><span>#</span></a></h2><p>新生必读：</p><p>新生请务必先仔细阅读下方的资料，99% 的问题都能在这里找到答案。</p><ol>
<li>高招信息，包含官方资讯群聊：<a href="https://mp.weixin.qq.com/s/XYNOLxZsyJZIT1lZk_gkIQ?click_id=1696258911" target="_blank">https://mp.weixin.qq.com/s/XYNOLxZsyJZIT1lZk_gkIQ?click_id=1696258911</a></li>
<li>福州大学本科生转专业政策核心 Q&amp;A，覆盖了绝大部分政策疑问：<a href="https://docs.qq.com/doc/DQ2p3cmdkem9GbEV5" target="_blank">https://docs.qq.com/doc/DQ2p3cmdkem9GbEV5</a></li>
<li>历年转专业通知，转专业细则，转专业拟同意名单，培养计划等：<a href="https://pi.terraria.ink/@s/13OZhE1u" target="_blank">https://pi.terraria.ink/@s/13OZhE1u</a></li>
<li>历年转专业经验分享网站，由历年转专业成功的学长学姐们整理，若经验贴与文档内容相悖，则以文档为准：<a href="https://run.w2fzu.com" target="_blank">https://run.w2fzu.com</a>（若链接在 QQ 内无法直接打开，请复制到浏览器访问）</li>
<li>如果要在群里提问（例如程序哪里错了），请附上题目，源码，你的思考和尝试，以聊天记录的形式转发到群里，并且做好无人回答的准备</li>
</ol></section>
<section><h2>前言<a href="#前言"><span>#</span></a></h2><p>为了伟大的开源事业。—— by ShaddockNH3</p><p>福州大学（Fuzhou University）有着极为人性化的转专业政策，如此良心的转专业政策在全国上下的高校寥寥无几。该政策允许学生在大一上学期三个月的时间里，通过公平竞争，实现专业的跨越式提升。</p><p>具体而言，一名高考排名约 14000 名（以 2023 年福建省为基准）并进入相对普通专业 (生物工程) 的学生，有机会成功“卷”入通常需要高考排名 7000 名才能录取的优势专业（智能电网）。这种层次的提升，最直观的体现是：相当于花了不到半年的时间，为自己的高考成绩增加了 20 至 30 分。</p><p>本问答旨在帮助新生快速、准确地理解福州大学本科生转专业的核心政策与规定，以便进行理性、审慎的学业规划。内容严格依据现有信息整合，请认真阅读。</p><div><div><div></div><div>Note</div></div><div><p>根据历史经验并出于理性决策的考虑，本群将不提供具体的专业报名推荐。转专业涉及个人兴趣、能力与风险评估，建议由本人独立判断并承担相应选择结果。如果想对专业有更深入的了解，请查阅群链接培养计划了解课程安排，然后针对对应的课程，去 b 站检索，不要打扰学长学姐（大家都很忙），当然如果有热心学长学姐为你解释，回过头来你也不要去喷他/她。</p><p>由于信息量大且此后有表格，建议使用电脑端（电脑端方便使用目录和 ctrl+f 进行查询）进行访问，手机端访问建议关闭深色模式/夜间模式。</p></div></div><p>下文中如出现与示例字体相同的标注内容，均表示已过时信息，仅作历史参考保留：示例字体</p><p>本文档最初由 ShaddockNH3 创建于 2025.6.27，至年底完成绝大多数的文档撰写。期间由 blueinsane 修正补充。由于老登陆续要工作 or 考研，因此有什么文档的错误问题需要修复，找当前文档维护者。</p><p>以下是文档情况，蓝色下划线为 github 链接：</p><ul>
<li>文档创建整理：ShaddockNH3，QQ 号：1813469946</li>
<li>文档修正：blueinsane，QQ 号：1979594177</li>
<li>当前文档维护者：Schariac125，QQ 号：3321095604</li>
<li>其他贡献者：BoluoLover Schariac125 LYanl7 Penty-d 莲</li>
</ul><p>此外，群 bot 可以输入/help 指令查询功能。如有需要新增的功能或想法，找 1813469946、3042538328、2826259696。（请找第 2 个，老登在考研，第 3 个在维护福 uu）。</p><p><strong>如果你认为本群的目的是为了盈利，管理员可以收获工资，请立刻退出本文档，并且退出群聊。</strong></p><p>还需要注意的是，对应的转专业经验贴网站的经验贴质量层次不齐，部分经验贴有大量的事实错误，如经验贴内容与本文档存在冲突或不一致之处，请以本文档所述政策与说明为准。</p><p>此外，招生办老师对于政策的理解远不如本文档，如其所述与本文档存在冲突或不一致之处，请以本文档所述政策与说明为准。</p></section>
<section><h2>模块零：提问与回馈<a href="#模块零提问与回馈"><span>#</span></a></h2><section><h3>正确的提问方式<a href="#正确的提问方式"><span>#</span></a></h3><p>为提高信息获取与沟通效率，请在提问前优先完成以下步骤：</p><ol>
<li>通读本文档：本文档覆盖了转专业绝大部分的共性问题。（善用文档自带的目录/大纲功能，文字查询功能，或使用 ctrl+F 进行关键字检索）</li>
<li>查阅群文件以及经验贴：针对具体专业的备考内容与细节，请优先查阅群文件，并参考经验分享网站中对应专业的帖子。</li>
<li>请不要使用大语言模型把本文档输入后令其解答，如果你这么做了，获取到不准确的信息后果自负。</li>
</ol><div><div><div></div><div>Note</div></div><div><p>注意：由在校学生整理的历年转专业经验分享网站，可能无法直接通过 QQ 打开。如遇此情况，请将链接复制至浏览器中访问。若浏览器提示证书过期，可选择“高级”并继续访问。</p></div></div><p>此外，由于转专业的经验贴质量层次不齐，部分经验贴有大量的事实错误，如经验贴内容与本文档存在冲突或不一致之处，请以本文档所述政策与说明为准。</p><p>以下形式的提问将不会得到解答：</p><ul>
<li>我现在是零基础，转软件工程/转电子信息/冲数智实验班会困难吗？需要额外补习吗？</li>
<li>转专业和原专业有关系吗/想问一下有没有土木转到数智综合班的学长学姐？</li>
<li>从建筑转到计算机容易吗/物信最好转的是什么专业/报的人比较少的？</li>
<li>想转去车辆工程，考核的内容具体是什么？</li>
<li>我现在排名 15000，想先选一个相对差一点的专业，冲着转专业进入福大，可行吗？</li>
<li>面向泉州/专业 999 组可以转其他/500 组吗？</li>
<li>我想转电气，暑假就开始来得及吗？</li>
<li>土木是 500 的吗/有没有具体专业对应的代号码？</li>
<li>有历年卷吗（没有官方发布的历年卷，网站上有回忆题）</li>
<li>面试的老师会刁难人吗/我应该担心面试吗/面试具体会问什么？</li>
<li>转专业结束后，原本尚未修习的课程该怎么办？</li>
<li>其他已在本文档中明确说明的问题</li>
</ul></section><section><h3>回馈<a href="#回馈"><span>#</span></a></h3><p>为传承宝贵的转专业备考经验，也是为后来的学弟学妹们提供清晰指引，我们诚挚地邀请各位在转专业成功后撰写一份个人经验分享。您的每一份付出都将是后来者路上的明灯，感谢支持。</p><p>投稿请发给群管理方糖（QQ 号：1710564415），建议采用 markdown 格式投稿，亦可采用 txt 或 docx 等可阅读格式。投稿时注意，“级”指的是入学时间，“届”指的是毕业时间</p><p>对于转到计算机相关专业的同学鼓励研究如何自己投稿，参考资料详见附录 7</p></section></section>
<section><h2>模块一：核心政策与原则<a href="#模块一核心政策与原则"><span>#</span></a></h2><section><h3>Q1：福州大学转专业的选拔原则和主要依据是什么？<a href="#q1福州大学转专业的选拔原则和主要依据是什么"><span>#</span></a></h3><p>A：转专业工作严格遵循“公平、公正、公开”的基本原则。根据学校及学院发布的相关说明，转专业选拔录取不直接依据学生原专业的课程绩点（GPA）进行排名，而是以学校或学院统一组织的转专业笔试与面试成绩作为主要录取依据。</p></section><section><h3>Q2：转专业的具体考核内容是什么？<a href="#q2转专业的具体考核内容是什么"><span>#</span></a></h3><p>A：各学院转专业的具体考核项目、考核标准及相关要求并不统一，请以群文件中汇总的《2025 各学院转专业细则》为准。</p><p>需要特别说明的是：</p><ol>
<li>大一、大二、大三学生均具备转专业资格。</li>
<li>所谓“24 级考试”“23 级考试”，并非指 2023 年或 2024 年举行的转专业考试，而是指在同一转专业周期内，分别面向不同年级学生设置的考核内容。</li>
</ol><p>以 2024 年转专业周为例：大一学生参加面向 24 级的考核，大二学生参加面向 23 级的考核</p><p>以 2024 年数学学院数学类专业转专业为例：</p><ol>
<li>大一转专业：考试科目为高等数学，计划录取 12 人；</li>
<li>大二转专业：考试科目为高等数学与线性代数，计划录取 3 人。</li>
</ol><p></p><figure><img alt="2024 年数学学院转专业考核示例" loading="lazy" width="1018" height="564" src="/_astro/math-2024-notice.B1ubY5R__Z2dgNXF.webp" /><figcaption>2024 年数学学院转专业考核示例</figcaption></figure><p></p><p>有关考核用书及考试范围的说明，详见附录 3。</p></section><section><h3>Q3：转专业工作在何时进行？<a href="#q3转专业工作在何时进行"><span>#</span></a></h3><p>A：</p><ul>
<li>申请与考核阶段：一般安排在大学一年级第一学期/大学二年级第一学期/大学三年级第一学期。</li>
<li>正式转入阶段：经审批通过后，学生将于对应年级的第二学期进入新专业学习。</li>
</ul><p>更为详细的时间安排，请参见模块七 Q4。</p></section><section><h3>Q4：录取人数的最多 20% 是什么意思<a href="#q4录取人数的最多-20-是什么意思"><span>#</span></a></h3><p>指的是转入专业当年人数的百分比，例如计算机专业收 230 人，那最多就是收 23x2＝46 人（学院保留权利可以远低于 20%，例如计算机专业，只收 10%，但电气专业收 20%，具体见下文模块五）</p></section><section><h3>Q5：为什么我查阅不到转专业政策变动的文件（即由 10% 升至 20%）？教务处对转专业下发的最新通知在哪里查看？<a href="#q5为什么我查阅不到转专业政策变动的文件即由-10-升至-20教务处对转专业下发的最新通知在哪里查看"><span>#</span></a></h3><p>A：关于转专业比例由 10% 调整至 20% 的相关政策文件，教务处共发布过两次通知：</p><ol>
<li>第一次发布于 2025 年 5 月末；</li>
<li>第二次发布于 2025 年 10 月末。</li>
</ol><p>相关通知需通过校园网环境访问方可查阅。第二次发布的原始通知截图（2025 年 10 月末）已整理并收录于附录 1。</p></section></section>
<section><h2>模块二：申请资格与范围<a href="#模块二申请资格与范围"><span>#</span></a></h2><section><h3>Q1：哪些学生具备申请转专业的通用资格？<a href="#q1哪些学生具备申请转专业的通用资格"><span>#</span></a></h3><p>A：在符合学校规定的基本条件前提下，包括国家专项、地方专项（省级农村专项，地矿类除外）、高校专项（高校农村专项）、少数民族预科生在内的各类在册本科生，原则上均具备申请转专业的资格。</p></section><section><h3>Q2：哪些情况下，转专业被限制？<a href="#q2哪些情况下转专业被限制"><span>#</span></a></h3><p>A：以下几类学生：</p><ul>
<li><strong>区域单列招生</strong>：面向福州、厦门、泉州等区域单列招生录取的学生，入学后仅可在对应面向区域招生的专业范围内申请转专业；如区域招生范围发生变化，以学生录取当年招生章程为准。</li>
<li><strong>地矿类专业</strong>：录取至地质工程、资源勘查工程、采矿工程、矿物加工工程专业的学生，仅可在上述四个专业之间申请转专业；其中，地质工程专业自 25 级起新增为不可转出院外的专业。</li>
<li><strong>普通类/艺术类互转</strong>：普通类专业与艺术类专业之间不得相互申请转专业；其中，美术学类、设计学类专业亦不得与音乐学专业申请互转。</li>
<li><strong>培养模式限制（医学/合作办学）</strong>：因培养模式差异，学生不得申请转入临床医学专业；此外，中外合作办学项目及闽台高校联合培养人才项目相关专业，原则上不参与普通转专业流程。（简要说明：医学院中，药学等专业在程序上可转入、转出；临床医学专业仅允许转出，不允许转入。）</li>
</ul></section><section><h3>Q3：哪些学生明确规定不允许转专业？<a href="#q3哪些学生明确规定不允许转专业"><span>#</span></a></h3><p>A：以下项目或身份的学生，明确不参与转专业：</p><ul>
<li>国家有明确规定，或在录取前已与学校形成书面约定的；</li>
<li>中外合作办学项目及闽台合作项目学生；</li>
<li>定向生、高水平运动队等特殊类型招生的学生；</li>
<li>本科四年级及以上在读学生。</li>
</ul></section><section><h3>Q4：我是 999 考生，可以转 500 类专业吗？<a href="#q4我是-999-考生可以转-500-类专业吗"><span>#</span></a></h3><p>A：可以。只要不属于 Q2、Q3 所列受限或禁止情形，文科类高考生同样可以申请转入理工科类专业。</p><p>例如：汉语言文学专业转入软件工程专业。</p><p>需要注意的是，部分转入专业对高考科目背景（如是否修习物理）有明确要求，相关要求将在各学院转专业细则中注明。</p></section><section><h3>Q5：院内和院外学生转某个学院会有差别吗？<a href="#q5院内和院外学生转某个学院会有差别吗"><span>#</span></a></h3><p>A：不会，在选拔和录取程序上并不会有任何差别。唯一的差别可能在于大二的同学在转专业录取后部分学院院内学生可不用降级修读。</p></section><section><h3>Q6：我是 24 级的地质工程专业，可以转专业吗？<a href="#q6我是-24-级的地质工程专业可以转专业吗"><span>#</span></a></h3><p>A：可以。地质工程专业转专业范围的相关限制自 25 级起生效，24 级学生仍按照此前规定执行。</p><p>需要注意的是，此处仅指转专业资格范围，转专业名额及其他具体要求仍以最新政策为准。</p></section><section><h3>Q7：我挂过科，大二还能转专业吗？<a href="#q7我挂过科大二还能转专业吗"><span>#</span></a></h3><p>A：可以。福州大学不限制挂过科的转专业（存在大量先例），唯一需要注意的是，老师肯定会拷打你这一科为什么会挂。</p></section><section><h3>Q8：当兵可以转专业吗？<a href="#q8当兵可以转专业吗"><span>#</span></a></h3><p>A：可以。服兵役学生在完成相关手续并返校后，原则上具备申请转专业的资格。</p><p>根据原文件表述，相关学生属于优先择录情形，但具体仍需在当年转专业许可框架内执行。</p><p>服兵役通常涉及较长时间跨度（约 2 年服役 + 可能产生的学业顺延 + 本科培养周期 4 年）。如选择服兵役，建议基于个人长期规划与职业目标作出理性决策，而非仅将其视为转专业途径，如果想当兵就要打算留伍，而不是转专业。</p><p>关于兵役政策的更详细说明，以及“受限于许可框架”的具体含义，详见附录 4。</p></section></section>
<section><h2>模块三：风险评估与理性建议<a href="#模块三风险评估与理性建议"><span>#</span></a></h2><section><h3>Q1：申请转专业存在哪些主要风险？<a href="#q1申请转专业存在哪些主要风险"><span>#</span></a></h3><p>A：转专业过程中主要存在以下两类风险：</p><ol>
<li>竞争风险：转专业名额有限，选拔过程具有竞争性，申请转专业并非必然成功。</li>
<li>决策风险：转专业应基于个人兴趣、能力结构及长期学业规划进行理性决策。若盲目跟风或判断失误，可能在后续学习中面临适应困难，相关情况在实际案例中并不罕见。</li>
</ol></section><section><h3>Q2：转专业的难度与学生当前所在的专业有关吗？<a href="#q2转专业的难度与学生当前所在的专业有关吗"><span>#</span></a></h3><p>A：需要明确的是，在具备转专业资格的前提下，转专业的整体难度与学生原所在专业通常关联不大。</p><p>福州大学转专业过程中不设置原专业绩点（GPA）门槛，转出环节亦无额外限制。实际难度主要取决于拟转入专业本身的考核要求与竞争情况，具体包括：</p><ul>
<li>部分学院在笔试环节设置最低合格分数线，未达到该分数线者将不进入后续选拔；</li>
<li>部分专业报考人数较多、竞争激烈，而可供转入的名额相对有限。</li>
</ul></section><section><h3>Q3：对于即将入学的新生，在学前规划上有何建议？<a href="#q3对于即将入学的新生在学前规划上有何建议"><span>#</span></a></h3><p>A：建议新生在入学前的假期中，合理安排时间进行社会实践、考取驾驶证，或对意向专业进行系统了解。</p><p>一般不建议过度提前学习大学阶段的专业课程内容，过早、高强度的学业投入可能导致后续学习兴趣下降，未必符合长期学习效果的最优预期。</p></section><section><h3>Q4：冲着转专业来福大，可行吗？<a href="#q4冲着转专业来福大可行吗"><span>#</span></a></h3><p>A：不作推荐，请自行抉择。</p><p>从制度层面看，转专业在理论上是可行的，但仍存在较强的不确定性。建议在报考阶段优先选择自身能够接受的初始专业，在此基础上再理性评估转专业的可行性与风险。</p></section><section><h3>Q5：推荐何时开始备考转专业？<a href="#q5推荐何时开始备考转专业"><span>#</span></a></h3><p>A：由于学生个人基础与学习能力差异较大，本文档不对具体备考起始时间作统一推荐。</p><p>一般情况下，除校级实验班等特殊项目外，不建议准大一新生在暑假初期即开始系统性备考转专业。</p><p>学业规划应由学生结合自身实际情况自主判断：</p><ul>
<li>基础相对薄弱者，可能需要更长的准备周期；</li>
<li>长期高强度、单一内容的备考，也可能在后期出现效率下降或心理疲劳。</li>
</ul><p>在作出转专业决策前，建议充分评估失败风险。将未来学业发展完全寄托于名额有限、竞争激烈的一次选拔考试，通常不属于理性选择。</p></section><section><h3>Q6：有没有历年学长学姐的开始准备时间？<a href="#q6有没有历年学长学姐的开始准备时间"><span>#</span></a></h3><p>A：由于学生个体在学习能力、知识基础等方面差异较大，历年并不存在统一或具有普遍适用性的备考起始时间。相关个人经验可参考经验贴内容，但不作为统一建议。</p></section></section>
<section><h2>模块四：前辈经验警示与常见失误<a href="#模块四前辈经验警示与常见失误"><span>#</span></a></h2><p>以下内容基于历届学生在转专业过程中的真实经历与实际案例整理而成，所列事项均有明确先例。请务必认真阅读并引以为戒。</p><ul>
<li>
<p><strong>转专业须通过教务处系统正式报名。</strong> 转专业并非直接参加考试，需在教务处系统中完成报名流程（路径一般为：各类申请→转专业申请）。报名时间通常在 11 月中旬开放，具体时间以当年通知为准，届时将第一时间在群内同步。</p>
<p></p><figure><img alt="教务处系统中的转专业报名入口" loading="lazy" width="1213" height="629" src="/_astro/jwc-signup-entry.B15gUuf__Z1V5ptc.webp" /><figcaption>教务处系统中的转专业报名入口</figcaption></figure><p></p>
</li>
<li>
<p><strong>转专业考试严禁任何形式的作弊行为。</strong> 转专业考试属于学校正式组织的选拔性考试，考试纪律与处理标准严格。一经发现作弊行为，将依据学校相关规定进行严肃处理，产生取消转专业资格、纪律处分，并且影响正常毕业与学位授予的严重后果。请务必高度重视考试诚信问题。</p>
</li>
<li>
<p><strong>报名前务必确认本人是否具备转专业资格。</strong> 历年存在个别学生准备至报名阶段才发现自身仅具备院内或组内转专业资格的情况，请务必提前核对政策，避免无效准备。</p>
</li>
<li>
<p><strong>注意核对考试校区与具体考场安排。</strong> 曾出现考生误将考场校区混淆（旗山校区与铜盘校区）的情况，请提前确认考试地点并合理规划出行时间。</p>
</li>
<li>
<p><strong>严格注意考试开始时间，避免迟到。</strong> 部分转专业考试安排时间较早，请提前做好作息与出行安排，避免因迟到影响考试资格。</p>
</li>
<li>
<p><strong>核实考试日期，避免时间记错。</strong> 历年曾出现将考试日期混淆（如将周六记为周日）的情况，建议提前将考试时间写入日程提醒，确保万无一失。</p>
</li>
</ul></section>
<section><h2>模块五：近年变化与不确定性<a href="#模块五近年变化与不确定性"><span>#</span></a></h2><section><h3>Q1&lt;2025&gt; 级转专业的转专业政策在名额上有哪些重大调整？<a href="#q1-级转专业的转专业政策在名额上有哪些重大调整"><span>#</span></a></h3><p>A：政策已进行大幅度调整，名额显著增加：</p><ol>
<li>大一转专业：最大可接收人数由专业人数的 10% 提升至 20%。</li>
<li>大二转专业：最大可接收人数由专业人数的 3% 提升至 5%。</li>
<li>大三转专业：最大可接受人数由专业人数的 0% 提升至 3%。</li>
</ol><div><div><div></div><div>Note</div></div><div><p>注意：最大接受人数不等于会直接把接受人数提升至上限，例如 24 年计算机专业收 23 人，今年即便提升为 20%，也可能不会直接提升为上限，即收 45 至 50 人。目前已经应验！转电气人数录取 42，但是转计仍是 23！</p></div></div></section><section><h3>Q2：政策调整对预测录取情况有何影响？<a href="#q2政策调整对预测录取情况有何影响"><span>#</span></a></h3><p>A：影响较大。</p><p>由于转专业名额基数发生变化，往年报录比数据的参考价值已明显下降。</p><p>同时，历年转专业中普遍存在“大小年”现象，即部分专业在不同年份之间报考人数波动较大，缺乏稳定、可预测的规律。</p><p>在上述背景下，2025 级转专业的实际录取情况整体不确定性较高。任何基于往年数据形成的“报录比预测”，均仅能作为有限参考，不适用于特殊或个别情况。</p></section><section><h3>Q3：改考问题<a href="#q3改考问题"><span>#</span></a></h3><p>A：需要注意，随着 25 级转专业细则的发布，部分专业已对考试科目或考试范围进行了调整。请务必以最新细则为准，避免按照往年范围备考。</p><p>其中，拟转入计算机相关专业的同学，可重点参考附录 8，提前了解并准备机考相关内容。</p></section><section><h3>Q4：报录比问题<a href="#q4报录比问题"><span>#</span></a></h3><p>A：鉴于 Q2 所述原因，以及历年转专业报考真实人数由教务处统一管理、不对外公开，本次转专业工作将不提供考前报录比预测。</p><p>同时，本文档亦不提供具体专业、小类或大类的报考推荐。各专业的真实报考人数通常仅能在考试临近阶段或考试结束后才能较为准确地获知。</p></section><section><h3>福州大学部分热门专业 25 年大一转专业情况汇总表<a href="#福州大学部分热门专业-25-年大一转专业情况汇总表"><span>#</span></a></h3><p>注：以下数据均为非官方经验值，从历年转专业同学处一一收集，仅供参考，不代表最终录取情况。</p><p>（手机端需要左右滑动获取全部信息）</p>

<table><thead><tr><th>专业大类</th><th>方向</th><th>25 年转专业</th><th>历史趋势参考</th><th>关键备注与分析</th></tr></thead><tbody><tr><td>计算机类</td><td>计科</td><td>5&lt;1&gt;</td><td>24 年:4&lt;1&gt; / 23 年:4&lt;1&gt; / 22 年:5&lt;1&gt; / 21 年:5&lt;1&gt;</td><td>核心竞争群体稳定，且近年核心群体竞争更加激烈。25 级笔试分公式：笔试分=55+ 机考分/20。如，机考 400 分，那笔试分就是 75，机考满分 800 分。面试环节相对重要</td></tr><tr><td>计算机类</td><td>软工</td><td>约 2&lt;1&gt;</td><td>24 年:2&lt;1&gt; / 23 年:4&lt;1&gt; / 22 年:3&lt;1&gt;</td><td>呈现一定的“大小年”规律，且需要考虑到大三大四学费翻倍。报录比看似和计科相差巨大，但实际上二者的进面分相差并不大，且考的是同一套试题（意味着进面难度与计科相当）</td></tr><tr><td>计算机类</td><td>信安</td><td>13&lt;5&gt;</td><td>/</td><td>不稳定</td></tr><tr><td>计算机类</td><td>大数据</td><td>11&lt;5&gt;</td><td>/</td><td>不稳定</td></tr><tr><td>计算机类</td><td>AI</td><td>11&lt;5&gt;</td><td>/</td><td>不稳定</td></tr><tr><td>电气类</td><td>电气</td><td>25 报录比&lt;5&gt; 进 1</td><td>24 年:3&lt;1&gt; / 23 年:5&lt;1&gt; / 22 年:5&lt;1&gt; / 21 年:6&lt;1&gt;</td><td>25 年扩招，但竞争依旧激烈</td></tr><tr><td>电气类</td><td>小类（自动化，智能电网）</td><td>25 报录比&lt;3&gt; 进 1</td><td>/</td><td></td></tr><tr><td>物信类</td><td>电信</td><td>5.5&lt;1&gt;（进面分 82）</td><td>24 年&lt;5&gt;.5&lt;1&gt; / 23 年&lt;4&gt;.5&lt;1&gt; / 22 年:4&lt;1&gt;</td><td>依据 25 年进面需要的笔试分数，电信 82 分，另外三个小类都不高于 76 分，具体分数线由于统计样本太少未知。其余小类比较冷门，以下是 25 年报录比：光电 2&lt;1&gt;、应物 3&lt;5&gt;、数综 5&lt;5&gt;、量子 1&lt;3&gt;</td></tr><tr><td>物信类</td><td>集电</td><td>3.3&lt;1&gt;</td><td>24 年:5&lt;1&gt; / 23 年:4&lt;1&gt; / 22 年:5&lt;1&gt;</td><td>依据 25 年进面需要的笔试分数，电信 82 分，另外三个小类都不高于 76 分，具体分数线由于统计样本太少未知。其余小类比较冷门，以下是 25 年报录比：光电 2&lt;1&gt;、应物 3&lt;5&gt;、数综 5&lt;5&gt;、量子 1&lt;3&gt;</td></tr><tr><td>物信类</td><td>微电</td><td>4&lt;1&gt;</td><td>24 年:5&lt;1&gt; / 23 年:5&lt;1&gt;</td><td>依据 25 年进面需要的笔试分数，电信 82 分，另外三个小类都不高于 76 分，具体分数线由于统计样本太少未知。其余小类比较冷门，以下是 25 年报录比：光电 2&lt;1&gt;、应物 3&lt;5&gt;、数综 5&lt;5&gt;、量子 1&lt;3&gt;</td></tr><tr><td>物信类</td><td>电科</td><td>3.5&lt;1&gt;</td><td>24 年：4&lt;1&gt; / 23 年：2&lt;1&gt;</td><td>依据 25 年进面需要的笔试分数，电信 82 分，另外三个小类都不高于 76 分，具体分数线由于统计样本太少未知。其余小类比较冷门，以下是 25 年报录比：光电 2&lt;1&gt;、应物 3&lt;5&gt;、数综 5&lt;5&gt;、量子 1&lt;3&gt;</td></tr><tr><td>数学类</td><td>数学</td><td>不到 1 进 1</td><td>24 年：4&lt;1&gt; / 23 年：4&lt;1&gt;</td><td>往年报录情况较为稳定，无斩杀</td></tr><tr><td>机械类</td><td>机械及小类</td><td>25 报录比：机制：2&lt;1&gt;；车辆：17&lt;14&gt;；机器人 15&lt;14&gt;</td><td>24 年:3&lt;1&gt; / 23 年:2&lt;1&gt; / 22 年:1&lt;1&gt;</td><td>属于老工科，尚可但绝非优的专业。近年受到报了即录取的传言影响，24 年报录比剧增。面试环节相对重要。因试卷大多为高数历年卷原题，满分考生超过总共录取人数，存在大量笔试满分考生未被录取，非满分考生录取的情况（24 大一转专业 21 个笔试满分只录取了 9 个）</td></tr><tr><td>法学类</td><td>法学</td><td>报录比：约 1.8&lt;1&gt;</td><td>24 年：约 5&lt;1&gt; / 21 年：10&lt;1&gt;</td><td>25 年扩招</td></tr><tr><td>经管类</td><td>经管</td><td>24 报录比：经验值为不到 5 进 1</td><td>21 年：10&lt;1&gt;</td><td>近年有所颓势</td></tr><tr><td>经管类</td><td>会计</td><td>24 报录比：约 5&lt;1&gt;</td><td></td><td></td></tr><tr><td>化学类</td><td>化学</td><td>24 报录比：1&lt;1&gt;</td><td></td><td>即使是不到 1 进 1，笔试不及格依旧斩杀</td></tr><tr><td>待补充</td><td>。。。</td><td></td><td></td><td></td></tr></tbody></table><p>注：</p><ul>
<li>化学与化工是两个概念，二者不在一个学院，不要将之混淆。化学是基础学科，属于理科，是福州大学王牌专业。</li>
<li>本群不提供任何转专业推荐的原因见 24 机械转专业热度，人云亦云的信息不可尽信。</li>
<li>报录比经验值不可尽信，如 25 级软工报录比看似和计科相差巨大，但实际上二者的进面分相差并不大，且考的是同一套试题。</li>
<li>未上榜的学院不等于没竞争，只是未收集到数据。但是大概率就是零竞争。</li>
<li>关于分数问题，一方面是教务处有些年公布有些年未公布，另一方面是教务处不会公布一整份成绩表，纯靠人力自行收集。</li>
</ul></section></section>
<section><h2>模块六：校级实验班（2026 级）<a href="#模块六校级实验班2026-级"><span>#</span></a></h2><p><strong>重要说明：</strong></p><p>校级实验班相关政策每年差异较大，且具有较强的时效性。最权威、最准确的信息来源为 2026 级录取通知书（见附录 6）以及开学前 2–3 天由学校发布的正式招收文件。</p><p>本模块所整理内容基于已公开资料与往年信息汇总，仅作为参考。后续如获取到更新或更正信息，将及时进行调整与补充。</p><p><strong>提示说明（非政策条款）：</strong></p><p>校级实验班通常培养方向明确、课业压力较大。例如，数智实验班在培养路径上限死方向，只能打 ACM（算法竞赛）或者搞科研。若原专业已为计算机相关专业，建议结合自身发展目标，审慎评估是否报名。</p><section><h3>Q1：校级实验班是什么？和普通专业有何不同？<a href="#q1校级实验班是什么和普通专业有何不同"><span>#</span></a></h3><p>A：校级实验班是学校设立的拔尖与精英化培养项目，通常具有较高课业强度，部分班级实行末位淘汰或动态调整机制。</p><p>校级实验班在培养体系上独立于普通转专业流程，一经转入，视为脱离原专业培养序列。</p><p>其主要优势在于：更集中的教学资源配置以及相对较多的保研名额（以本校推免为主）。</p><p>校级实验班选拔一般安排在开学初面向全校进行，与 11 月组织的普通转专业互不冲突。</p></section><section><h3>Q2：有哪些校级实验班？分别是什么方向？人数有多少？<a href="#q2有哪些校级实验班分别是什么方向人数有多少"><span>#</span></a></h3><p>A：</p><ul>
<li>数理综合实验班：数学 + 物理（50 人）</li>
<li>数理金融实验班：数学 + 金融（50 人）</li>
<li>数智实验班（24 新增）：计算机 + 人工智能（40 人）</li>
<li>化学嘉锡实验班：化学拔尖培养（20-25 人）</li>
</ul></section><section><h3>Q3：申请校级实验班需要什么资格？如何考核？<a href="#q3申请校级实验班需要什么资格如何考核"><span>#</span></a></h3><p>A：申请校级实验班的前提是具备模块二 Q1 所述的基本身份资格。</p><p>校级实验班的报名条件与考核方式每年均可能调整。最准确的信息以录取通知书所附说明及开学前发布的正式文件为准。</p><p>根据往年情况，校级实验班通常对以下条件之一或多项提出要求：</p><p>较高的高考成绩（具体分数线每年不同）；相关学科竞赛获奖经历（竞赛门槛相对稳定）。</p><p>一般建议具备扎实学科基础的学生报考。对于部分培养强度较高的实验班（如数智实验班、嘉锡化学实验班），不建议完全零基础的学生参与。</p><p>2026 级校级实验班报名门槛（前二为高考分数要求）：</p>

<table><thead><tr><th>校级实验班</th><th>报名门槛（满足一个即可）</th><th></th><th></th></tr></thead><tbody><tr><td>数理综合班</td><td>数学 105 英语 110</td><td>物理 80 或理综 260</td><td>省级以上数学或物理奥赛获奖者</td></tr><tr><td>数理金融班</td><td>数学 105 英语 115</td><td>数学 120</td><td>英语 130</td></tr><tr><td>数智班</td><td>数学 115 英语 120</td><td>数学 130</td><td>数学奥赛或 NOIP 省级三等奖及以上</td></tr><tr><td>嘉锡班</td><td>数学 115 英语 115</td><td>英语 135</td><td>省二等奖及以上学科竞赛获奖者或全国“英才计划”学员</td></tr></tbody></table><p>说明：以下门槛信息仅适用于当前已公布资料，最终以官方文件为准。</p></section><section><h3>Q4：在哪里可以找到更详细的报名要求？<a href="#q4在哪里可以找到更详细的报名要求"><span>#</span></a></h3><p>A：当年的权威报名与考核文件以录取通知书及学校后续发布的正式通知为准。往年资料可在群文件中查阅，仅供参考</p></section><section><h3>Q5：加入校级实验班后，可以退出吗，或者可以转到其他专业吗？<a href="#q5加入校级实验班后可以退出吗或者可以转到其他专业吗"><span>#</span></a></h3><p>A：不可以。</p><p>学校在学生成功转入校级实验班后，会签署相关培养协议，其中包含限制再次转专业的条款。具体内容以当年签署协议为准。</p></section><section><h3>Q6：申请校级实验班需要的部分高考科目分数或竞赛门槛要求何时公布？<a href="#q6申请校级实验班需要的部分高考科目分数或竞赛门槛要求何时公布"><span>#</span></a></h3><p>A：校级实验班的具体分数线或竞赛门槛通常在开学前数日内公布。有意向的同学可在开学前留意群内精华信息及学校通知。</p></section><section><h3>Q7：其他实验班<a href="#q7其他实验班"><span>#</span></a></h3><p>A：目前校级实验班仅包括数理综合、数理金融、数智实验班及嘉锡化学实验班。</p><p>其余实验班多为院级实验班，仅面向本学院学生招生，开设时间与选拔方式不固定。相关信息请以各学院官网发布内容为准，本文档不再展开说明。</p><p>Q8-Q10 具有极强的时效性，请注意。</p></section><section><h3>Q8：报名方式<a href="#q8报名方式"><span>#</span></a></h3><p>A：2026 级：9 月 6 日 17&lt;00-9&gt; 月 7 日 16&lt;30&gt;，登录福州大学本科教学管理系统（<a href="https://jwcjwxt2.fzu.edu.cn:82/login.htm" target="_blank">https://jwcjwxt2.fzu.edu.cn:82/login.htm</a>），点击各类报名 - 实验班报名</p><p></p><figure><img alt="实验班报名入口" loading="lazy" width="1934" height="905" src="/_astro/exp-class-signup.CRJrisF6_Z1Ssj4z.webp" /><figcaption>实验班报名入口</figcaption></figure><p></p></section><section><h3>Q9：咨询群<a href="#q9咨询群"><span>#</span></a></h3><p>A：</p><p>2026 级实验班咨询群如下</p><ul>
<li>数理金融班：1106407979</li>
<li>数智实验班：1007304149</li>
<li>数理综合班：1107247226</li>
<li>嘉锡化学拔尖班：549200093</li>
</ul></section><section><h3>Q10：实验班时间线<a href="#q10实验班时间线"><span>#</span></a></h3><p>报名时间：9 月 6 日 17&lt;00&gt;—9 月 7 日 16&lt;30&gt;</p><p><strong>数理金融班：</strong></p><p>召开招生宣讲会。</p><ul>
<li>时间：9 月 6 日 16&lt;30&gt;</li>
<li>地点：铜盘校区 B208 室。其他校区学生可通过腾讯会议线上参加咨询会，腾讯会议 ID：409-980-188。</li>
</ul><p>公布参加面试学生名单：9 月 8 日 15 时通过教务处网站公布面试名单</p><p>学生参加面试，报到、签承诺书。</p><ul>
<li>时间：9 月 9 日 8&lt;30&gt; 开始</li>
<li>地点：铜盘校区 B505 室。</li>
</ul><p>以上报名、面试请务必携带身份证或学生证等有效证件。</p><p>公示拟入选学生名单。学校 9 月 11 日通过教务处网站公示拟入选数理金融实验班学生名单。</p><p><strong>数智实验班：</strong></p><p>招生咨询会。</p><ul>
<li>时间：9 月 6 日 14:00-15&lt;30&gt;</li>
<li>地点：福州大学铜盘校区科技报告厅 B。线上：腾讯会议：543-127-569。。</li>
</ul><p>“综合能力测试”考试。</p><ul>
<li>时间：9 月 8 日 18:30-21&lt;30&gt;</li>
<li>地点：福州大学铜盘校区 A203、A205 机房（具体考场座位安排请提前半小时到达 A205 门口查看）。</li>
</ul><p>公布参加面试学生名单：9 月 9 日通过教务处网站公布面试名单</p><p>面试时间：9 月 10 日 8:30-12&lt;30&gt;</p><ul>
<li>地点：计算机与大数据学院三号楼 501、502、509 机房，面试后报到、签署承诺书（附件 3）提交负责老师。</li>
</ul><p>公示拟入选学生名单时间：9 月 11 日 17 时前通过教务处网站公示拟入选数智实验班学生名单。</p><p><strong>数理综合班：</strong></p><p>召开招生咨询会。</p><ul>
<li>时间：9 月 6 日 19&lt;00&gt;—20&lt;30&gt;</li>
<li>地点：铜盘校区 B503 室。</li>
</ul><p>学生参加综合能力测试考试。</p><ul>
<li>综合能力测试时间 9 月 8 日 19:00-20&lt;00&gt;；</li>
<li>地点：铜盘校区，A502、A503、A505 室。</li>
</ul><p>公布参加面试学生名单：9 月 9 日通过教务处网站公布面试名单</p><p>面试时间：9 月 9 日 19&lt;00&gt;</p><ul>
<li>地点：物理与信息工程学院 111 室（思源厅）集合，具体面试教室另行通知。</li>
</ul><p>面试结束后签承诺书（附件 2）、报到，地点：物理与信息工程学院 318 室。</p><p>以上报名、考试、面试请务必携带身份证等有效证件。</p><p>公示拟入选学生名单：9 月 11 日 17 时前通过教务处网站公示拟入选数理综合班学生名单。</p><p><strong>嘉锡化学班：</strong></p><p>召开招生宣讲会。</p><ul>
<li>时间：9 月 6 日 9&lt;30&gt;—11&lt;30&gt;</li>
<li>地点：铜盘校区 B112 教室。</li>
</ul><p>学生参加“化学能力测试”考试。</p><ul>
<li>时间：9 月 8 日 10:00-11&lt;30&gt;</li>
<li>地点：铜盘校区 B111。</li>
</ul><p>公布参加面试学生名单：9 月 9 日通过教务处网站公布面试名单</p><p>学生参加面试，报到、签承诺书。</p><ul>
<li>时间：9 月 9 日 19:00-21&lt;00&gt;，具体地点另行通知。</li>
</ul><p>以上报名、考试、面试请务必携带身份证或学生证等有效证件。</p><p>公示拟入选学生名单：9 月 11 日 17 时前通过教务处网站公示拟入选嘉锡化学拔尖班学生名单。</p></section></section>
<section><h2>模块七：关键时间节点<a href="#模块七关键时间节点"><span>#</span></a></h2><section><h3>Q1：校级实验班的选拔何时进行？<a href="#q1校级实验班的选拔何时进行"><span>#</span></a></h3><p>A：校级实验班的选拔一般安排在开学初（入学第一周左右）进行，涉及数理综合班、数理金融班、嘉锡化学实验班及数智实验班。</p><p>学生完成报名后，会在较短时间内陆续安排笔试与面试，具体以当年通知为准。</p></section><section><h3>Q2：其他普通专业的选拔何时进行？<a href="#q2其他普通专业的选拔何时进行"><span>#</span></a></h3><p>A：普通专业的转专业选拔一般安排在 11 月中旬进行。报名结束后约一周内陆续组织笔试与面试，12 月初左右公布转专业结果。</p><p>注：具体日期无需过度担心，届时群内会有高年级同学同步发布详细提醒与流程说明。</p></section><section><h3>Q3：我暑假就开始准备转专业可以吗？<a href="#q3我暑假就开始准备转专业可以吗"><span>#</span></a></h3><p>A：是否在暑假开始准备转专业，主要取决于个人学习基础与学习投入意愿。不同同学准备起点差异较大，本文档不作统一时间推荐。</p><p>具体学长学姐的准备节奏可参考经验贴内容。</p></section><section><h3>Q4：有没有更具体的时间线？<a href="#q4有没有更具体的时间线"><span>#</span></a></h3><p>A：以下时间线为笔者个人经历示例（2023 级，车辆工程转计算机类），仅用于帮助理解转专业在整个学期中的大致位置，不构成对后续年级的时间承诺。</p><ul>
<li>2023 年 8 月 27（26）日：报道，报道有两天</li>
<li>2023 年 8 月 28 日＋两至三日：数理综合班，数理金融班等实验班开始报名录取</li>
<li>2023 年 8 月 28 日至 2023 年 9 月 3 日：新生适应周</li>
<li>2023 年 9 月 4 日至 2023 年 9 月 20 日：军训</li>
<li>2023 年 9 月 12 至 2023 年 9 月 18：英语四级报名（越早越好，早的能抢到铜盘名额）</li>
<li>2023 年 9 月 21 日至 2023 年 9 月 24 日：新生再教育，学生手册考试</li>
<li>2023 年 9 月 25 日至 2023 年 9 月 28 日：开始上课（没上高数）</li>
<li>2023 年 9 月 29 日至 2023 年 10 月 8 日：中秋国庆放假</li>
<li>2023 年 10 月 9 日开始，正式上课（才开始上高数）</li>
<li>2023 年 10 月 19 日：教务处发放转专业通知，土木等学院会在 11 月中旬才通知</li>
<li>2023 年 11 月 5 日：高数小测（第一章）</li>
<li>2023 年 11 月 7 日：教务处发放转专业细则</li>
<li>2023 年 11 月 9 日至 2023 年 11 月 11 日：运动会（三至四天没课）</li>
<li>2023 年 11 月 14 日至 2023 年 11 月 18 日：转专业报名</li>
<li>2023 年 11 月 21 日：计算机学院学院通知处发放考试安排</li>
<li>2023 年 11 月 26 日：早上九点至十一点，笔试（科报厅 b）</li>
<li>2023 年 11 月 29 日：计算机学院学院公示处下午三点出面试名单</li>
<li>2023 年 11 月 30 日：晚 6 点半开始，面试（旗山校区）</li>
<li>2023 年 12 月 2 日：下午三点，计算机学院学院公示处发放拟录取名单</li>
</ul><p>注意：</p><ol>
<li>24 级转入计算机类专业的考试安排在高等数学期中考试之后，且当年未设置高数第一章小测；</li>
<li>25 级因开学时间较晚，整体教学周历有所压缩，各时间节点（如报名、考试等）可能提前、调整或发生变化，请务必以届时发布的官方通知为准。</li>
</ol></section><section><h3>Q5：我实在害怕忘记重要流程怎么办<a href="#q5我实在害怕忘记重要流程怎么办"><span>#</span></a></h3><p>A：可参考附录 5 中整理的转专业申请周防遗漏备忘清单。</p><p>请务必携带学生证等有效证件。如未携带学生证，可打印一份本科教务处管理系统中的个人信息页面以备核验。</p><p>一定要带齐，学院楼附近连待了两三年的老登都可能会走错。距离学院楼最近的打印机在教学区，小登会用的概率很低。</p><p>2025 年 11 月帮没带申请表的，来计面试的，打印大致极限花了 15 分钟左右，骑电瓶、p 图（教务处默认打印的 pdf 是 2 张，得 p 成一张）、找打印机、回去，到的时候刚好开始面试，正好赶上。</p><p>26 转专业本人肯定是不会去现场转悠的😅小登自求多福。</p></section></section>
<section><h2>模块八：转专业进行时（申请 - 笔试/面试 - 公示）<a href="#模块八转专业进行时申请---笔试面试---公示"><span>#</span></a></h2><section><h3>Q0：如果现在专业的班委或辅导员问你转专业意向怎么办？<a href="#q0如果现在专业的班委或辅导员问你转专业意向怎么办"><span>#</span></a></h3><p>A：回答不想转专业即可。若诚信作答，会引发一系列麻烦，包括但不限于约谈，劝说。</p><p>请注意，你的转专业权利保留在自己手里，请保持清醒的思考。</p><p>但也需要注意，转专业是一个非常重大的决策，切记不可随波逐流去转专业。</p></section><section><h3>Q0.5：通知哪里可以第一时间得知？<a href="#q05通知哪里可以第一时间得知"><span>#</span></a></h3><p>A：请耐心等待，转专业通知发布时间一般会间隔很紧，部分专业往往前一天发布考试名单后一天就考。所以请多留意福州大学相关专业的专业网站（例如福州大学计算机与大数据学院官网）以及教务处官网。当然也可以多留意群 bot 和精华消息。</p></section><section><h3>Q1：我可以同时申请多个专业的转专业吗？<a href="#q1我可以同时申请多个专业的转专业吗"><span>#</span></a></h3><p>A：不可以。在同一次转专业申请中，仅可填报一个学院的一个目标专业（含实验班），且不存在调剂或补录机制。</p></section><section><h3>Q2：如果我参加了开学初的“校级实验班”选拔但失败了，还能参加 11 月的普通转专业吗？<a href="#q2如果我参加了开学初的校级实验班选拔但失败了还能参加-11-月的普通转专业吗"><span>#</span></a></h3><p>A：可以。</p><p>“校级实验班选拔”与 11 月开展的“普通转专业”属于两个相互独立的选拔流程。即使在开学初参加校级实验班选拔未通过，也不影响后续正常报名并参与普通转专业选拔。</p><p>需要注意的是，目前仅数理综合实验班对外开放普通转专业路径；其余校级实验班（如数智实验班），一般仅通过本专业内部绩点排名等方式进行动态调整，不参与普通转专业流程。</p></section><section><h3>Q2.5：转专业报名后，申请表怎么办？<a href="#q25转专业报名后申请表怎么办"><span>#</span></a></h3><p>A：转专业在哪里报名请见模块四。</p><p>转专业报名成功后，教务处会自动生成一个“打印”的按钮，可以打印申请表。绝大多数情况下，申请表只需要面试提交即可，上面提交之前不需要给任何人签字（你自己除外），表格上的日期基本填面试日期即可（或者交了这张表的日期）。</p><p>注意，系统默认的 pdf 基本都是两张，请使用 p 图工具或者 pdf 编辑器，将两张整合为 1 张纸。</p></section><section><h3>Q2.6：转专业报名后是否可以撤回或替换申请？<a href="#q26转专业报名后是否可以撤回或替换申请"><span>#</span></a></h3><p>A：在报名时间内，可以撤销或者替换</p></section><section><h3>Q3：转专业的地点在哪里？<a href="#q3转专业的地点在哪里"><span>#</span></a></h3><p>A：不同学院的笔试与面试地点安排有所不同。</p><p>一般情况下，转入计算机学院的笔试多安排在大一所在校区（铜盘校区），其余学院的转专业笔试多在旗山校区进行；面试通常统一安排在旗山校区。</p><p>具体笔试与面试地点将于 11 月中旬由各学院在官网发布正式通知，请以当年文件为准。</p></section><section><h3>Q4：旗山校区在哪里<a href="#q4旗山校区在哪里"><span>#</span></a></h3><p>A：打开地图软件，搜索福州大学旗山校区东门/北门，那里距离教学区最近。</p><p>如果想要吃饭，请在下方进行选择</p><ul>
<li>搜索福州大学旗山校区北门，并且详见附录 2 的前往路线以及注意事项</li>
<li>搜索福州大学旗山校区生活区一区，那里是距离教学区最近的生活区，有 KFC</li>
<li>搜索福州大学旗山校区生活区三区，除非为了吃麦当劳，否则不推荐，距离教学区过远</li>
</ul></section><section><h3>Q5：有没有前往面试的具体路线<a href="#q5有没有前往面试的具体路线"><span>#</span></a></h3><p>A：可参考附录 2 中整理的路线示意。以计算机学院三号楼为例，已提供较为详细的到达说明（从东门/北门出发都有）</p></section><section><h3>Q6：我需要过多的担心面试吗？<a href="#q6我需要过多的担心面试吗"><span>#</span></a></h3><p>A：总体而言，笔试成绩在转专业选拔中占据主导地位。在多数学院中，只要笔试成绩具有明显优势，面试通常不会成为主要淘汰因素。</p><p>但仍需注意以下情况：</p><ul>
<li>个别学院（如机械学院）历年面试权重相对较高，建议认真准备；</li>
<li>在竞争激烈、分数接近录取线的情况下（如计科笔试排 23）附近的人分数相差不大，面试极有可能出现反杀情况。</li>
</ul><p>因此，建议在确保笔试准备充分的同时，对面试保持必要重视。</p><p>对于想转计院的小登，如果你在初高中阶段打过算法竞赛，或者搓过什么有意思的东西（例如 galgame 原型机），都可以讲，但确保你讲的东西是你会的。</p><p>如果你有基础，面试模板的自我介绍可以如下：</p><p>我是 xxx，原专业 xx，我在初高中阶段干了什么（直接说项目，扯一分钟）。</p><p>如果你零基础，请务必保证诚实，但也请不要说出零基础这三个字，说保证可以做到。</p></section><section><h3>Q6.1：面试的具体流程具体是怎么样的？<a href="#q61面试的具体流程具体是怎么样的"><span>#</span></a></h3><p>A：具体得看各个学院的安排，详细见经验贴（例如有些学院需要英文自我介绍等）</p><p>计算机学院：按照笔试从高到低进行面试，面试首先中文（当然你也可以自己选择英文）自我介绍，然后老师使用中文提问，使用中文回答。直至没有问题老师问你你还有什么问题，或者 5min 到后，面试结束（这部分内容待补充和整理）</p></section><section><h3>Q7：我是大二转专业的，一定是需要降转吗？<a href="#q7我是大二转专业的一定是需要降转吗"><span>#</span></a></h3><p>A：</p><p>首先需要明确，降转需要从旗山搬回铜盘。</p><p>一般情况下，大二转专业需按规定降转年级。</p><p>目前已知的例外情况主要包括：</p><ul>
<li>转入计算机学院；</li>
<li>物理与信息工程学院内部专业互转（如应用物理学转电子信息）；</li>
<li>机械学院内部专业互转。</li>
</ul><p>需要特别注意的是，如符合上述可不降转情形且明确不接受降转，请在相关沟通环节中明确、清晰表达个人意愿。</p><p>往年曾出现因表述模糊而被默认降转、且在公示期内无法更改，最终只能放弃转专业资格的情况。</p><p>关于平转与降转的具体先例，可参考群文件《2025 转专业拟录取通知》。</p></section><section><h3>Q7.5：我是大一转专业的，我需要提供绩点或者降转吗？<a href="#q75我是大一转专业的我需要提供绩点或者降转吗"><span>#</span></a></h3><p>大一上转专业，转专业开始的时候没有绩点，所以没有平转和降转的概念，都是理解意义上的平转。</p></section><section><h3>Q7.6：考试当天突发身体不适（如发烧、急症）或遭遇不可抗力（如交通事故），是否有缓考或补考机制？<a href="#q76考试当天突发身体不适如发烧急症或遭遇不可抗力如交通事故是否有缓考或补考机制"><span>#</span></a></h3><p>A：没有。</p></section><section><h3>Q8：拟录取是什么意思，什么是公示期？<a href="#q8拟录取是什么意思什么是公示期"><span>#</span></a></h3><p>A：“拟录取”指学生已进入转专业公示阶段。</p><p>转专业考试结束后，学校会对拟录取名单进行公示，公示期通常持续数日。</p><p>在公示期内，如学生决定放弃转专业资格，可向相关学院或部门申请取消；</p><p>公示期结束后，未提出异议者将正式转入新专业，此后不可反悔。</p></section><section><h3>Q8.1：笔试/面试成绩是否有查分或复核渠道？如果对成绩存疑，是否有申诉机制？<a href="#q81笔试面试成绩是否有查分或复核渠道如果对成绩存疑是否有申诉机制"><span>#</span></a></h3><p>A：没有。</p></section><section><h3>Q9：转专业成功/公示期放弃后还能再转吗<a href="#q9转专业成功公示期放弃后还能再转吗"><span>#</span></a></h3><p>A：不可以。</p><p>根据现行规定，每名学生在本科阶段最多仅可进入一次转专业成功公示期。</p><p>一旦转专业成功并进入公示期，无论最终是否选择接受该专业，均视为已使用转专业机会，后续不再具备再次申请转专业的资格。</p></section><section><h3>Q10：是否存在递补录取？<a href="#q10是否存在递补录取"><span>#</span></a></h3><p>A：不存在。</p><p>福州大学转专业实行等额录取。如已拟录取学生在公示期内放弃资格，该名额将直接作废，不进行顺延递补。</p></section><section><h3>Q11：如果我转转专业失败了，会有什么影响吗？我应该做什么？<a href="#q11如果我转转专业失败了会有什么影响吗我应该做什么"><span>#</span></a></h3><p>A：转专业失败不会有任何负面影响，也绝不会记入个人学业档案。唯一的影响是您需要继续在原专业就读。您为转专业所付出的学习努力（如学习高等数学）通常对后续课程也有帮助，并不会白费。</p><p>面对这一结果，后续的道路选择因年级而异，建议您冷静分析，做出最适合自己的规划：</p><p>对于大一的同学，您仍面临多个选择，请结合自身情况审慎评估：</p><ul>
<li><strong>再次尝试</strong>：全面复盘本次申请失败的原因，是笔试准备不足还是面试发挥不佳，调整策略后，准备参加大二第一学期开放的第二次转专业申请。</li>
<li><strong>深耕本专业</strong>：接受现实，将重心转回当前专业。积极发掘其与个人兴趣的结合点，或通过辅修、选修课程、参与科研项目等方式拓宽知识面，实现复合型发展。</li>
<li><strong>其他路径（须极度审慎）</strong>：
<ul>
<li>历年确有极少数同学选择退学复读，并成功考取更高层次的院校。但这属于重大人生抉择，涉及巨大的机会成本和风险，在做出决定前，必须与家庭进行最深入的沟通，并进行最审慎的评估。</li>
<li>兵役，兵役登记工作在 12 月开始</li>
</ul>
</li>
</ul><p>对于大二的同学：</p><p>请记住，专业并非人生的全部。将精力聚焦于提升自身的综合能力。</p><p>您可以尝试：考取含金量高的职业资格证书、积极参加学科竞赛、积累有价值的实习经验、或提前规划考研与出国深造等。</p><p>或者，为考研跨考做准备。在现有平台之上，为自己的未来铺设更宽广的道路。回顾许多杰出人才的最终成就与其本科专业并无绝对的直接关联。</p><p>总之，一次失意不应定义您的整个大学生涯。生活不会因此停滞，关键在于您如何应对，并从中汲取力量，开启人生的新篇章。</p></section></section>
<section><h2>模块九：转专业成功后<a href="#模块九转专业成功后"><span>#</span></a></h2><section><h3>Q1：转专业成功后，涉及原专业课程、学分认证，绩点及奖学金等事宜该如何处理？<a href="#q1转专业成功后涉及原专业课程学分认证绩点及奖学金等事宜该如何处理"><span>#</span></a></h3><p>A：</p><section><h4>1. 学籍、课程与奖学金的过渡期安排<a href="#1-学籍课程与奖学金的过渡期安排"><span>#</span></a></h4><ul>
<li>学籍转移时间：您的学籍档案将在大一下学期开学后才正式转入新专业。</li>
<li>大一上学期课程：由于学籍尚未转移，您大一上学期的所有课程（包括原专业的专业课）均需正常参加学习和期末考试。</li>
<li>奖学金评定：大一上学期的奖学金，将依据您在原专业的成绩与排名进行评定。</li>
</ul></section><section><h4>2. 关于放弃修读原专业课程以及绩点的问题<a href="#2-关于放弃修读原专业课程以及绩点的问题"><span>#</span></a></h4><ul>
<li>基本原则：对于新专业的培养方案中不作要求的原专业课程，理论上可以不修习（即选择不参加期末考试）。这部分课程的成绩将不会计入您新专业的绩点（GPA），也不影响保研资格的计算。</li>
<li>【重要风险警告】：我们强烈不建议您轻易放弃任何课程。</li>
<li>学习习惯风险：根据以往经验，轻易放弃课程、养成“挂科”习惯，极易对后续的学习态度和毅力产生负面影响。</li>
<li>政策规定风险：学校的转专业相关文件中，明确保留了因“恶意挂科”而取消学生转专业资格的规定。尽管此条款从未使用过，但规则客观存在，请勿抱有任何侥幸心理，以免得不偿失。</li>
</ul><p>简单来说，就是进入新专业，新专业没有但是原专业有的课程，该课程不计入新专业绩点，算你一次挂科记录，但是不算进计算保研的那次挂科记录，具体可见该模块的 Q5</p></section><section><h4>3. 学分认证的具体操作<a href="#3-学分认证的具体操作"><span>#</span></a></h4><p>启动时间：大一下学期开学第一周，教务处老师会组织相关学生并发布学分认证的具体通知和指导。</p><p>认证类型分为两种：</p><ul>
<li>强制认证：课程代码与名称完全相同的课程（如“军事理论”、“高等数学 B（上）”等），将由教务处系统进行统一的强制认证，其成绩直接转换并计入新专业的成绩单。</li>
<li>选择性认证：课程名称不同但内容高度相似的课程（例如“高等数学 A（上）”与“高等数学 B（上）”），系统不会进行强制认证。这为您提供了一个策略性选择的机会：
<ul>
<li>Ⅰ若您对已修课程的成绩不满意，可以选择不进行认证，之后在新学期按照新专业的培养方案，重新修读对应的课程，以期获得更高的分数。</li>
<li>Ⅱ若您对成绩满意，可以主动向学院教务申请认证，以替代新专业的相应课程，免于补修。</li>
</ul>
</li>
</ul><p>即使是系统层面的‘强制认证’，也必须同学们在规定时间内，亲自登录教务系统进行确认核对，确保所有课程和学分都已正确无误地转换（即点击确认键）。而‘选择性认证’则需要你主动提交申请来完成。</p></section></section><section><h3>Q2：转专业成功后，大一上学期未修读的新专业课程该如何处理？这会影响我与原专业学生竞争保研资格吗？<a href="#q2转专业成功后大一上学期未修读的新专业课程该如何处理这会影响我与原专业学生竞争保研资格吗"><span>#</span></a></h3><p>A：</p><section><h4>1. 关于课程补修<a href="#1-关于课程补修"><span>#</span></a></h4><ul>
<li>基本原则：转专业后，学生必须按照新专业的培养方案，完成所有必修课程。对于您大一上学期因未在目标专业而错过的课程，需要在后续学期进行补修。</li>
<li>补修安排：补修通常安排在大一下学期或大二学年进行（也可以大三大四补修），具体开课时间将由开课学院和教务处协调安排。只要能在毕业前完成所有规定学分即可。（注意如果要保研，需要在保研流开始前，也就是大三下结束前补完必修课，否则会影响保研资格）</li>
<li>补修具体操作：教务处各类选课 - 特殊补选。每学期开学第一周开放，可以在选课时选择这学期是否补修这门课、课程老师和是否免听。（如果课程时间冲突则必须免听才能选上课）</li>
<li>补修跟着哪个班级：跟着你补修时有开设这门课的班。（学校不会专门开设一个班给补修的人上）大一上的课程分成只有在每学年上学期才开设和上下学期都有开设两种。前者你只能在每学年上学期选课然后跟着大一的一起上。</li>
<li>关于绩点计算见本节第 3 分段</li>
</ul></section><section><h4>2. 关于学分认定<a href="#2-关于学分认定"><span>#</span></a></h4><ul>
<li>您在原专业已修读的课程中，若与新专业培养方案中的课程在课程代码、学分、教学要求上一致（主要是公共基础课），可向新学院的教务老师申请学分认定与转换，以豁免补修。</li>
<li>关于学分认证，待第二学期开学的时候会有老师发学分认证表，认证表里没有的学分可以认证校选课。对于不能认证的学分或者不需要的学分，一般而言认证至任意选修，意思就是给你有个地方放没用的学分</li>
</ul><p></p><figure><img alt="学分认证表" loading="lazy" width="1238" height="1182" src="/_astro/credit-cert-form.DU4Q51xa_Z27IuI2.webp" /><figcaption>学分认证表</figcaption></figure><p></p></section><section><h4>3. 关于保研资格与毕业<a href="#3-关于保研资格与毕业"><span>#</span></a></h4><ul>
<li>核心原则：在保研资格的评定中，转专业学生与原专业学生遵循完全相同的学术评价标准，不存在任何歧视或区别对待。</li>
<li>绩点计算：您后续补修的课程，其成绩将按照首次正常修读的标准计入您的总绩点（GPA），不会有任何形式的折扣。</li>
<li>最终结论：只要您能按时、高质量地完成新专业培养方案所规定的全部学分，并保持优良的学业成绩，您在保研竞争中的地位不会受到任何程序上的影响，也不会影响您的正常毕业。</li>
</ul></section></section><section><h3>Q3：如果我本身是原专业的党积，转到新专业认可原专业党积身份吗？<a href="#q3如果我本身是原专业的党积转到新专业认可原专业党积身份吗"><span>#</span></a></h3><p>A：认可，原专业的党积身份可以带到新专业。</p></section><section><h3>Q4：转专业成功后，宿舍需要第一时间更换吗？<a href="#q4转专业成功后宿舍需要第一时间更换吗"><span>#</span></a></h3><p>A：对于大一转专业的同学而言，不需要更换，等到大二到旗山后统一更换，当然也可以提前和导员沟通申请在铜盘的时候就换宿舍。</p><p>从 25 年开始，数理实验班的同学在确认进入实验班后便会进行宿舍更换。</p><p>对于大二转专业的同学，无论是平转还是降转，需要换宿舍还是不需要换，都建议和新导员沟通。</p><p>大二转专业的同学如果在选择了降转之后，部分学院会要求你去旗山校区办理原宿舍退房手续。建议在搬离旗山原宿舍的当天就办理退房手续以防下半学期开学后需要再跑旗山办手续。手续办理只需联系对应楼的楼管出具证明，上交原宿舍钥匙，最后将楼管出具的证明提交至旗山校区 13 号楼公寓管理科处即可。</p></section><section><h3>Q5：有关于是否要翘掉原专业课的统一回复<a href="#q5有关于是否要翘掉原专业课的统一回复"><span>#</span></a></h3><p>A：首先，对于大二的来说，原专业课随便翘，已经无所谓了。都大二的老登，懂得都懂，自然不必多说。</p><p>对于大一的来说，如果你的新专业没有这门课，理论上也是可以随便翘的，也不会影响你的绩点，也不会算进保研里面。</p><p>但是在最后打印你成绩单的时候，你大一上的成绩单是原专业的成绩单，挂科了会在旁边打一个三角尖说你挂科了。</p><p>如果你需要顾及这些事情，那建议至少保持不挂科，如果你不保研，其实就无所谓了。</p><p>至于前文所说的恶意挂科会影响转入，是几年前的规则，这几年没发过，但不能保证突然拿出来用。</p><p>这几年有非常多原专业摆大烂，一并影响到高数，乃至此后的新专业课，一次挂科导致次次挂科的情况，如果你确定要不去原专业的课，务必保证新的专业课不要挂科。</p><p>还有一种比较极端的情况，你的原专业的专业课可以认证为校选课，这里不多赘述，详见学分认定表，比如土木的制图可以认证为一门校选课（只能是自然工程类校选课，目前已知可以这样的只有转入物信学院的）</p><p>一句话总结一下上面的话：无所谓，但是如果你要保研，得做好被问这一科为什么挂了的准备。</p></section><section><h3>Q5.5：没认定学分的课如果挂了，需不需要参加补考？<a href="#q55没认定学分的课如果挂了需不需要参加补考"><span>#</span></a></h3><p>A：爱去不去，风险见 Q5</p></section><section><h3>Q6：关于制图类课程的学分认定<a href="#q6关于制图类课程的学分认定"><span>#</span></a></h3><p>A：首先看群文件学分认定内容确认你原专业的制图可不可以学分认定成新专业的制图（名字一模一样的不用看），如果不可以，再判断是否能认定成校选课（新专业培养方案中通识选修课，有没有要求自然工程类的学分）。另外，土木院的制图和机械院的制图都是不能相互学分认定的。</p></section><section><h3>Q7：兄弟们转到新学院需要自己联系导员吗，怎么还没人联系我😰<a href="#q7兄弟们转到新学院需要自己联系导员吗怎么还没人联系我"><span>#</span></a></h3><p>A：等。当然如果下学期快开学了还没有人联系，得主动去问导员，确实存在漏的情况</p></section><section><h3>Q8：新学期关于补修原来课程的时间以及有没有平时分<a href="#q8新学期关于补修原来课程的时间以及有没有平时分"><span>#</span></a></h3><p>A：在第二学期开学的第一周补选。</p><p>对于公共课，例如线性代数，可以跟着重修班上，给绩点和第一次修一样的。</p><p>对于专业课，例如计算机导论，得跟着下一届大一上，也就是大二上，当然也可以大三上补修。</p><p>关于平时分，如果你申请免听，那么默认是期末考考多少给多少（占比 100%），如果你想要平时分，得和老师商量（即使是文件上写的独立重修班没有平时分，也可以通过和老师协商获取平时分）。</p><p>关于补修和免听可以具体看下面三个问题</p></section><section><h3>Q9：补修课程时间冲突怎么办？<a href="#q9补修课程时间冲突怎么办"><span>#</span></a></h3><p>A：免听（免听不用去上课，不用交作业，不用期中考，最终分数=期末考分数）当然你想要平时分的话可以跟老师协商（包括交作业期中考）以此获得一部分平时分。</p></section><section><h3>Q10：没去上课怎么通过考试？<a href="#q10没去上课怎么通过考试"><span>#</span></a></h3><p>A：主要复习资料是历年卷，自己去收，考过 60 分都不难。你要满绩的话，建议去协商平时分。</p></section><section><h3>Q11：免听了我想去上课可以吗？<a href="#q11免听了我想去上课可以吗"><span>#</span></a></h3><p>A：没人拦着你去上课，只是注意这种情况等于没去，免听一般没有平时分除非和老师协商：默认是期末考考多少给多少（占比 100%），如果你想要平时分，得和老师商量（即使是文件上写的独立重修班没有平时分，也可以通过和老师协商获取平时分）。</p></section><section><h3>Q12：免听，不交作业，要不要期中考？<a href="#q12免听不交作业要不要期中考"><span>#</span></a></h3><p>A：和老师商量，我们也不知道</p></section><section><h3>Q13：为什么补选系统里没有 xx 课<a href="#q13为什么补选系统里没有-xx-课"><span>#</span></a></h3><p>A：正常情况下，本专业专有的课上学期开的课只能上学期补，下学期开的课也只能下学期补。还有一种特殊情况是你在一年的补修里都没有见过这门课或是已知其在上/下学期开设但到那时候并没有，那么很有可能是培养计划更改（如更改了课程名称或是必修课改为了选修课）导致你没法直接选这门课。</p><p>如果是必修课，解决方法是联系本学院的教学办老师拿到一张替代申请表，然后依次找教学办老师、教务处老师、这门课的授课老师（需要申请免听时才找授课老师）签字再交给教学办老师。等修完这门课拿到学分后还要再通过线下提交学分认定申请表认定成你培养方案上的那个课程名字。</p><p>选修课只需要之后正常选课时选一门类别相同的选修课补充学分即可。</p></section><section><h3>Q14：选了免听后注意事项<a href="#q14选了免听后注意事项"><span>#</span></a></h3><p>A：建议早点加入课程 qq 群（如果有的话）qq 群群号一般在授课计划页面可查询。如果时实践课不知道怎么算期末成绩，联系老师询问，如果老师不回复，可以选择联系班上有去上课的同学询问，更建议的做法是在上课期间下课的时候线下去当面问老师。</p></section><section><h3>Q15：转入大类招生专业后，分流规则如何适用于转专业学生？体育课的选课与学分如何衔接？对辅修/双学位申请资格是否有影响？转专业学生的选课优先级如何？<a href="#q15转入大类招生专业后分流规则如何适用于转专业学生体育课的选课与学分如何衔接对辅修双学位申请资格是否有影响转专业学生的选课优先级如何"><span>#</span></a></h3><p>A：转入新专业后，你等同于新专业的学生，和新专业的学生没有任何差异。</p></section><section><h3>Q16：学分认定中通识选修与任意选修有什么区别<a href="#q16学分认定中通识选修与任意选修有什么区别"><span>#</span></a></h3><p>A：二者唯一共同点是都不参与绩点计算。</p><p>通识选修是毕业需要的学分，要在毕业前修满的。（具体类别查阅培养方案）</p><p>任意选修不是毕业需要的学分，但若有成绩（即没挂科），课程与其成绩会出现在毕业成绩单上。</p><p>总之，在转专业学分认定中，任意选修就是没用的，给你一个存放原专业成绩的地方，而通识选修是有点用的，是毕业需要的学分。（注意你需要的通识选修是什么类别）</p></section><section><h3>Q17：学分认定后成绩怎么计算？<a href="#q17学分认定后成绩怎么计算"><span>#</span></a></h3><p>A：若是一门课程替换另一门课程（如高数 b 上认定成高数 a 上）那么成绩直接按原本课程的成绩算即绩点直接平移，若是两门课换一门课（如大物 b 上下认定大物 a 上）则取两门课成绩的平均值作为认定后的课程成绩</p></section><section><h3>Q18：学分认定申请一直不审核怎么办？申请没通过怎么办？<a href="#q18学分认定申请一直不审核怎么办申请没通过怎么办"><span>#</span></a></h3><p>A：学分认定审核都很慢，可能要到学分认定时间过了才审核，如果你是选择认定为通识选修课那么不通过的话会自动变成任意选修，无须担心。</p></section></section>
<section><h2>模块十：信息资源与声明<a href="#模块十信息资源与声明"><span>#</span></a></h2><section><h3>Q1：在哪里可以获取更多经验分享和官方信息？<a href="#q1在哪里可以获取更多经验分享和官方信息"><span>#</span></a></h3><p>A：</p><ul>
<li>经验分享：可查阅由在校学生整理的网站 <a href="https://run.w2fzu.com/" target="_blank">https://run.w2fzu.com/</a></li>
<li>官方细则：如需要查阅往年各学院转专业考核内容等信息，请查阅 <a href="https://pi.terraria.ink/@s/13OZhE1u" target="_blank">https://pi.terraria.ink/@s/13OZhE1u</a></li>
</ul></section><section><h3>Q2：对高年级学生有何特别提醒？<a href="#q2对高年级学生有何特别提醒"><span>#</span></a></h3><p>A：切勿过度宣传、诱导盲目转专业。仅做交流分享，若影响他人人生抉择，请自行负责。</p></section><section><h3>Q3：郑重声明<a href="#q3郑重声明"><span>#</span></a></h3><p>A：本说明及所有相关交流均为学生自发的公益行为，不提供任何形式的收费辅导。请各位同学注意辨别信息，警惕以“转专业辅导”为名的收费行为，谨防上当受骗。</p></section><section><h3>Q4：本文的信息来源<a href="#q4本文的信息来源"><span>#</span></a></h3><p>A：本文的信息皆为整理近 5 年的官方资料以及转专业群各位学长学姐人工收集而来。</p></section></section>
<section><h2>写在最后<a href="#写在最后"><span>#</span></a></h2><p>感谢您完整阅读本指南。我们衷心希望承载的前人经验能为您拨开前路的迷雾，提供一份详尽的参考。但请谨记，地图终究无法代替脚步，你的大学故事，终将由你自己亲手书写。</p><p>转专业，本质上不仅是一场选拔性考试，更是一次对个人学业路径的重大战略抉择。它要求你投入大量精力进行准备，这无疑会带来学业与心理上的双重压力。在此过程中，保持稳健的心态与健康的节奏至关重要，强大的内心才是你应对任何挑战的基石。</p><p>做出选择，便意味着要承担其结果。若你成功转入理想的专业，这无疑是通往新起点的跳板。然而转折也伴随着代价，其中最主要的挑战便是社交圈的重建。大学的核心人脉与归属感多在第一学期奠定，作为新集体中的“后来者”，你可能需要付出更多努力去融入一个已然成型的环境，这或许是一段需要独自面对的磨合期。</p><p>相应地，留在原专业，无论是主动选择还是转专业未果，其价值同样不容忽视。它为你提供了一个连贯的学术环境与一个从始至终共同成长的稳定集体。这份时间的沉淀与人际关系的纯粹，将构成你大学生活中不可或缺的宝贵财富，为你的长远发展提供坚实支持。</p><p>所以，无论你的选择是什么：</p><p>是坚定地踏上转专业的独木桥，还是在原有的道路上深耕发光——都请保持勇敢与审慎。</p><p>愿你们最终都能在福州大学找到属于自己的那片星空，闪闪发光。</p><p>——ShaddockNH3</p><p>煽情的话不想写太多，转完专业自然会有所体会。我相信有耐心能通读整篇手册，能看到这里的，转专业成功十之八九。</p><p>既然都看到这里了，也顺便去看一下这篇博客吧。</p><p><a href="https://blog.attilio.cc/posts/post-6/">https://blog.attilio.cc/posts/post-6/</a></p><p>噢，转计院的记得看附录 8，前面有提但是位置不显眼。</p></section>
<section><h2>附录 1、最新通知（一般需要校园网）<a href="#附录-1最新通知一般需要校园网"><span>#</span></a></h2><p><a href="https://jwch.fzu.edu.cn/content.jsp?urltype=news.NewsContentUrl&amp;wbtreeid=1036&amp;wbnewsid=14277" target="_blank">https://jwch.fzu.edu.cn/content.jsp?urltype=news.NewsContentUrl&amp;wbtreeid=1036&amp;wbnewsid=14277</a></p><p></p><figure><img alt="教务处最新通知截图（一）" loading="lazy" width="2479" height="3509" src="/_astro/notice-jwc-1.CGUJiX7__1H5Skr.webp" /><figcaption>教务处最新通知截图（一）</figcaption></figure><p></p><p></p><figure><img alt="教务处最新通知截图（二）" loading="lazy" width="2479" height="3509" src="/_astro/notice-jwc-2.D86FX-Mr_ZgQP5n.webp" /><figcaption>教务处最新通知截图（二）</figcaption></figure><p></p><p></p><figure><img alt="教务处最新通知截图（三）" loading="lazy" width="2479" height="3509" src="/_astro/notice-jwc-3.D5CLiD9v_2a85be.webp" /><figcaption>教务处最新通知截图（三）</figcaption></figure><p></p></section>
<section><h2>附录 2、前往计算机院楼（教职工食堂）图解<a href="#附录-2前往计算机院楼教职工食堂图解"><span>#</span></a></h2><p>如果你是坐地铁来的，看东门路线，也推荐东门路线，对路痴更友好。</p><p><strong>以北门为例：</strong></p><p>抵达北门：</p><p></p><figure><img alt="福州大学旗山校区北门" loading="lazy" width="1200" height="1600" src="/_astro/route-north-1.BdCQvbNx_Z1xIXsn.webp" /><figcaption>福州大学旗山校区北门</figcaption></figure><p></p><p>直走，可以看到右侧是教职工食堂，如需吃饭需要进入微信公众号福大一卡通进行绑定，或者去该餐厅内的西餐厅用餐（无需绑定）</p><p></p><figure><img alt="直走可见右侧的教职工食堂" loading="lazy" width="1200" height="1600" src="/_astro/route-north-2.C_PmMZuB_ZpJKIo.webp" /><figcaption>直走可见右侧的教职工食堂</figcaption></figure><p></p><p></p><figure><img alt="继续直走" loading="lazy" width="1200" height="1600" src="/_astro/route-north-3.BDjsfloY_2aa7Jf.webp" /><figcaption>继续直走</figcaption></figure><p></p><p>这个路口左转</p><p></p><figure><img alt="在此路口左转" loading="lazy" width="1200" height="1600" src="/_astro/route-north-4.B_qLRTtS_Z2mgyld.webp" /><figcaption>在此路口左转</figcaption></figure><p></p><p></p><figure><img alt="左转后继续直走" loading="lazy" width="1200" height="1600" src="/_astro/route-north-5.CJfiWERd_ZmkK2u.webp" /><figcaption>左转后继续直走</figcaption></figure><p></p><p>进入行知路</p><p></p><figure><img alt="进入行知路" loading="lazy" width="1200" height="1600" src="/_astro/route-north-6.BZvhOt4__Z2rPyoh.webp" /><figcaption>进入行知路</figcaption></figure><p></p><p>直走一直走到看到电气院院楼，右侧可以看见一个禁止电瓶车右转的牌子，右转</p><p></p><figure><img alt="看到电气院院楼后右转" loading="lazy" width="1200" height="1600" src="/_astro/route-north-7.BZe8lLI0_2tU2LC.webp" /><figcaption>看到电气院院楼后右转</figcaption></figure><p></p><p>一直直走，直到看到这里</p><p></p><figure><img alt="一直直走直至目的地" loading="lazy" width="1200" height="1600" src="/_astro/route-north-8.DBlhxBnI_1VDISr.webp" /><figcaption>一直直走直至目的地</figcaption></figure><p></p><p>顺着电瓶车道走进去</p><p></p><figure><img alt="顺着电瓶车道走进去" loading="lazy" width="1600" height="1200" src="/_astro/route-north-9.DzjImPh2_19UyxF.webp" /><figcaption>顺着电瓶车道走进去</figcaption></figure><p></p><p>上楼去对应教室面试即可</p><p><strong>以东门为例：</strong></p><p>东门左边（你进来时的右边）是进来的门，不用扫码，如果要扫的话打开福 uu 扫消费码就行</p><p></p><figure><img alt="福州大学旗山校区东门" loading="lazy" width="1440" height="1920" src="/_astro/route-east-1.CxSyp3ri_VFNGg.webp" /><figcaption>福州大学旗山校区东门</figcaption></figure><p></p><p>进来之后找到晋江楼，沿着这个方向直走</p><p></p><figure><img alt="找到晋江楼后沿此方向直走" loading="lazy" width="1440" height="1920" src="/_astro/route-east-2.CwYhMXKW_2ayOnO.webp" /><figcaption>找到晋江楼后沿此方向直走</figcaption></figure><p></p><p>继续直走</p><p></p><figure><img alt="继续直走" loading="lazy" width="1440" height="1920" src="/_astro/route-east-3.w99Z8Zj__Z1x9vHx.webp" /><figcaption>继续直走</figcaption></figure><p></p><p></p><figure><img alt="继续直走" loading="lazy" width="1440" height="1920" src="/_astro/route-east-4.irwkROTm_28FWwd.webp" /><figcaption>继续直走</figcaption></figure><p></p><p>进门左转</p><p></p><figure><img alt="进门左转" loading="lazy" width="1440" height="1920" src="/_astro/route-east-5.iMsH9tya_Z1xfzyA.webp" /><figcaption>进门左转</figcaption></figure><p></p><p>直走，前方右转</p><p></p><figure><img alt="直走，前方右转" loading="lazy" width="1440" height="1920" src="/_astro/route-east-6.Dgrs8KJZ_ZIgKTT.webp" /><figcaption>直走，前方右转</figcaption></figure><p></p></section>
<section><h2>附录 3、通用考核用书<a href="#附录-3通用考核用书"><span>#</span></a></h2><p>首先查阅群文件，看看自己想转的专业到底要考核什么内容</p><p>以下提供的参考书目为福大用书，并非最好用书（目前包含计算机类高数：《高等数学 b 上》，电气高数：《高等数学 a 上》，会计金融高数：《高等数学 c 上》，计算机基础知识：《计算机导论》,电气线性代数：《线性代数与空间解析几何》，物理基础知识：高中物理）</p><p>需要注意，高等数学 a 上与高等数学 b 上课本是一样的，对于高数部分，一般而言考核至前两章，即积分之前。</p><p>对于高中物理，不同学院及年份考核的范围差别很大，建议查询想转的对应专业的经验帖。但基本以福建省为基准出题。</p><p>对于线性代数，考的是几道选择题。考核范围 1-3 章，第一章矩阵，第二章行列式，第三章几何空间（这一部分内容和高数下第五章是一样的，建议找高数下第五章的网课看即可）</p><p>对于计算机导论，考核内容是整本书，一般而言考五题——进制转换，计算机组成原理，计算机网络（含网络安全），数据库，前沿知识（一般是大数据，人工智能，物联网）</p><p>对于英语，各专业考核方式不同。以转到计算机学院为例，考专业英语翻译，含有一些专业的英语单词（如 algorithm，Artificial Intelligence 等），考核方式为一道汉译英，一道英译汉，难度与四级翻译相当。</p><p>其余的不再赘述</p><p>这里注意，不排除转专业细则（一般发布于 11 月初）今年发布变更的情况，如 24 级数媒考试从素描变成高考物理，25 级计算机考试从高数 + 计算机导论 + 英语变为机考。</p><p>一般而言不会变更，如自 17 年全校绩点、转专业政策大幅度改革后，转计算机学院的考核方式（高数，计算机导论，英语）及其比例再也没有发生过变化</p><ol>
<li>
<p>高等数学 B 上（旧版本课本，新版见 7）</p>
<p></p><figure><img alt="《高等数学 B 上》旧版封面" loading="lazy" width="360" height="800" src="/_astro/book-gaoshu-b-old.B1VcX-LH_1CQUqN.webp" /><figcaption>《高等数学 B 上》旧版封面</figcaption></figure><p></p>
</li>
<li>
<p>高等数学 A 上（旧版本课本，新版见 7）</p>
<p></p><figure><img alt="《高等数学 A 上》旧版封面" loading="lazy" width="873" height="1920" src="/_astro/book-gaoshu-a-old.B_GQt7DC_ZdRu7U.webp" /><figcaption>《高等数学 A 上》旧版封面</figcaption></figure><p></p>
</li>
<li>
<p>计算机导论</p>
<p></p><figure><img alt="《计算机导论》封面" loading="lazy" width="360" height="800" src="/_astro/book-cs-intro.R8Xsps2K_ZWBbet.webp" /><figcaption>《计算机导论》封面</figcaption></figure><p></p>
</li>
<li>
<p>线性代数与空间解析几何</p>
<p></p><figure><img alt="《线性代数与空间解析几何》封面" loading="lazy" width="873" height="1920" src="/_astro/book-linear-algebra.CnRkVvHG_Z2svju.webp" /><figcaption>《线性代数与空间解析几何》封面</figcaption></figure><p></p>
</li>
<li>
<p>高中物理：质检卷/各省高考卷</p>
</li>
<li>
<p>高数 C</p>
<p></p><figure><img alt="《高等数学 C》封面" loading="lazy" width="360" height="800" src="/_astro/book-gaoshu-c.DuhlZxWF_1t2WOI.webp" /><figcaption>《高等数学 C》封面</figcaption></figure><p></p>
</li>
<li>
<p>高等数学 A/B 上（2025 新版）</p>
<p></p><figure><img alt="《高等数学 A/B 上》2025 新版封面" loading="lazy" width="1080" height="2400" src="/_astro/book-gaoshu-ab-2025.ThNLM1aa_Z14UX6c.webp" /><figcaption>《高等数学 A/B 上》2025 新版封面</figcaption></figure><p></p>
</li>
</ol></section>
<section><h2>附录 4 兵役补充<a href="#附录-4-兵役补充"><span>#</span></a></h2><p>对于兵役，便于真的选这条路的同学一个参考。</p><p>首先是时间和条件，兵役在 12 月左右开始登记，会有一定的身体条件，具体身体条件不做展开，请自行查阅福州大学相关文件。目前可查阅到的近期文件，只有一个 21 级转入 24 级和一个 22 级转入 24 级的案例，均为 25 年 3 月退役，与正常途径转专业生一致，为大一下转入。</p><p>其次是框架问题，暂无文件可以佐证如地矿等专业是否可以跳出转专业限制框架外，但教务处官网可以查询到有一个紫金地矿学院内部转的，因此笔者认为大概率不可以跳出转专业限制框架。</p><p>更具体的信息，如兵役登记等，由于基数过小，一年只有一至两人走本路线，对转专业路线而言过于冷门，因此未进行系统性研究。</p></section>
<section><h2>附录 5 转专业申请周防呆备忘清单<a href="#附录-5-转专业申请周防呆备忘清单"><span>#</span></a></h2><ul>
<li> 已在官网下载并仔细阅读今年的《转专业细则》。</li>
<li> 已在规定日期内，于教务系统完成线上报名。</li>
<li> 已按要求准备好所有纸质材料（如申请表等）。</li>
<li> 已确认笔试的具体时间、地点，并提前踩点。</li>
<li> 已确认面试的具体时间、地点，并准备好自我介绍。</li>
<li> 考试/面试当天：带齐学生证、身份证等所有证件！</li>
<li> 考试/面试当天：手机充满电，并设置好多个闹钟！</li>
</ul></section>
<section><h2>附录 6 2026 级校级实验班<a href="#附录-6-2026-级校级实验班"><span>#</span></a></h2><p></p><figure><img alt="2026 级校级实验班招收通知截图（一）" loading="lazy" width="1280" height="1814" src="/_astro/exp-class-notice-1.CPMEhEU8_rl2eN.webp" /><figcaption>2026 级校级实验班招收通知截图（一）</figcaption></figure><p></p><p></p><figure><img alt="2026 级校级实验班招收通知截图（二）" loading="lazy" width="1280" height="1751" src="/_astro/exp-class-notice-2.ChIi149L_1FAMld.webp" /><figcaption>2026 级校级实验班招收通知截图（二）</figcaption></figure><p></p><p></p><figure><img alt="2026 级校级实验班招收通知截图（三）" loading="lazy" width="1280" height="1810" src="/_astro/exp-class-notice-3.C0rqT_TI_1RcCiW.webp" /><figcaption>2026 级校级实验班招收通知截图（三）</figcaption></figure><p></p><p></p><figure><img alt="2026 级校级实验班招收通知截图（四）" loading="lazy" width="1280" height="1761" src="/_astro/exp-class-notice-4.mguO9SqW_Z1DICv6.webp" /><figcaption>2026 级校级实验班招收通知截图（四）</figcaption></figure><p></p></section>
<section><h2>附录 7 如何贡献<a href="#附录-7-如何贡献"><span>#</span></a></h2><p>仓库地址：<a href="https://github.com/west2-online/fzu-run" target="_blank">https://github.com/west2-online/fzu-run</a></p><p>简易教程：<a href="https://west2-online.feishu.cn/wiki/Zvqow0CUxig3iWkWQgBcHp4AnHe" target="_blank">https://west2-online.feishu.cn/wiki/Zvqow0CUxig3iWkWQgBcHp4AnHe</a></p></section>
<section><h2>附录 8 转专业计算机考试环境说明<a href="#附录-8-转专业计算机考试环境说明"><span>#</span></a></h2><p>由于 2025 年转专业计算机考试范围大改，所以这里写一个基本的入门。</p><p>对于真正零基础的，剩余时间不多的同学（两周以内），建议学习 python3，看完 print，if，else，for，while 和 list 之后，直接去刷题，碰到不会再去学（如字典，集合等），多问 AI（请不要使用豆包、文心一言、夸克，至少使用 deepseek，千问，智谱，Kimi）</p><p>请不要过多的去打扰学长学姐，大家都很忙。</p><p>对于未来时间充裕的，学 c++，直接去准备数智班的考试，考不上再去准备计院的转专业。去看洛谷的那本深入浅出基础，实在看不懂的去看黑马程序员，不要看面向对象部分，课不要贪多，做题才是王道，差不多稍微懂点东西就去写 L1，L1 写完之后去写洛谷的官方题库，后续如何，这时候再看看去年的真题，你自己就有分寸了。</p><p>总体来说，根据 25 年转计算机院考的题目来看，大一题目全部都是模拟，比计科期末考考的 c 语言略难（计科期末考的 c 语言共 8 题，转专业期末考也是 8 题，大约前七题难度范围在你福期末考范围内，并且 5-7 是难度顶满），不涉及数据结构与算法。（也就是只需要会 sort 和 string）</p><p>关于数智班的题目，由于本人水平不够，所以不做评价。可以参考两篇数智班经验贴准备。</p><p>当然如果你想学数据结构与算法，可以参考大二的经验贴，尤其注意，不要参考过去的，请参考 25 大二转专业的（因为题型变了）</p><p>这里给出来的路线大致是 pat 乙（简单看看即可，已略过时）/代码随想录/洛谷</p><p>基本可以明确的说，对于大一的经验贴，让你先去学 c 或者走其他路线去学习的，都是在害你。</p><p>当然去年情况特殊，迫不得已推荐使用 python。再次强调，除非时间紧迫，只剩两周以内，否则都建议 c++ 入门。</p><p>最后强调：</p><p>做题为王道，你现在是应试。</p><p>首先注册一个 pta 账号：<a href="https://pintia.cn/" target="_blank">https://pintia.cn/</a></p><p>考试是在 pta 里考的，具体怎么防作弊等到了考场老师会说。语言可以使用 c/c++/python/java。</p><p>打开下面这个习题集进行训练，这是学校提供的题集，简单看了一下，这里面的题还行，但是不够。</p><p><a href="https://pintia.cn/problem-sets/994805046380707840/exam/problems/type/7" target="_blank">https://pintia.cn/problem-sets/994805046380707840/exam/problems/type/7</a></p><p>进去之后，可以看到这样的界面（与考试界面一致）</p><p></p><figure><img alt="PTA 习题集界面（与考试界面一致）" loading="lazy" width="2550" height="1372" src="/_astro/pta-interface.l7FEuLG6_28DIRU.webp" /><figcaption>PTA 习题集界面（与考试界面一致）</figcaption></figure><p></p><p>福州大学计算机机考只允许在 pta 平台上做题！请尽快改掉使用 pycharm，vscode 等 IDE 自动补全功能的习惯！</p><p>真题可见：</p><p><a href="https://run.w2fzu.com/change-major/source/2025-cs-freshman-on-computer-exam/" target="_blank">https://run.w2fzu.com/change-major/source/2025-cs-freshman-on-computer-exam/</a></p><p>此外，学计算机的核心思想是开源，所以希望未来的小登在有能力的前提下，背诵一定的题目，题目不是学校公布的，是靠老登根据只言片语还原的。</p><p>考试可以无限次提交，取最后一次的正确率，正确率按照作对的点计算。</p><p>如果代码错了你提交了，会这样：</p><p></p><figure><img alt="代码提交错误后的判定界面" loading="lazy" width="2556" height="1437" src="/_astro/pta-wrong-submission.BwkAT4a6_26YEWT.webp" /><figcaption>代码提交错误后的判定界面</figcaption></figure><p></p><p>pta 不会告诉你测试点到底是哪个测试点错了，只会告诉你简单的错误类型。</p><p>如何 debug？</p><p></p><figure><img alt="PTA debug 入口" loading="lazy" width="2559" height="1440" src="/_astro/pta-debug.Wsred2N7_Z2tBMgi.webp" /><figcaption>PTA debug 入口</figcaption></figure><p></p><p>点击右下角，呼出这样的界面，点击运行测试。</p><p></p><figure><img alt="运行测试界面" loading="lazy" width="2558" height="1432" src="/_astro/pta-run-test.CZZ_sXqr_1SY6FV.webp" /><figcaption>运行测试界面</figcaption></figure><p></p><p>可以看到更具体的报错，根据该报错信息，很容易定位到是 input 和 int 位置反了，debug 完后再次运行测试：</p><p></p><figure><img alt="更具体的报错信息" loading="lazy" width="1141" height="725" src="/_astro/pta-error-detail.NB6RWHaX_ZNvI3U.webp" /><figcaption>更具体的报错信息</figcaption></figure><p></p><p>发现%d并不适配 python 的语法，而且还要注意生成的应该转为 int，并且发现 Celsius 拼错，所以再次修改程序：</p><p></p><figure><img alt="修改后的程序" loading="lazy" width="2559" height="1366" src="/_astro/pta-fixed-code.CK8SAQVb_ZF9OJ7.webp" /><figcaption>修改后的程序</figcaption></figure><p></p><p>如何切换语言？</p><p></p><figure><img alt="切换语言界面" loading="lazy" width="2551" height="1389" src="/_astro/pta-switch-language.kovT1Y6J_1IX9Ja.webp" /><figcaption>切换语言界面</figcaption></figure><p></p><p>考试的时候只会有 c/c++/python/java（具体见转专业网站资料部分的 25 机考试题）</p><p>以下是代码演示：</p><p>c 语言：</p><p></p><figure><img alt="c 语言代码演示" loading="lazy" width="2557" height="1385" src="/_astro/pta-demo-c.BfkFeG0Q_Z24d9KO.webp" /><figcaption>c 语言代码演示</figcaption></figure><p></p><p>c++：</p><p></p><figure><img alt="c++ 代码演示" loading="lazy" width="2557" height="1365" src="/_astro/pta-demo-cpp.BrXVaKBJ_ZeiHgr.webp" /><figcaption>c++ 代码演示</figcaption></figure><p></p><p>python：</p><p></p><figure><img alt="python 代码演示" loading="lazy" width="2558" height="1367" src="/_astro/pta-demo-python.DNWEt3Ra_kfYIa.webp" /><figcaption>python 代码演示</figcaption></figure><p></p><p>java（不会 java，用的 go 示例）：</p><p></p><figure><img alt="java（go 示例）代码演示" loading="lazy" width="2554" height="1360" src="/_astro/pta-demo-java.CFDSmRie_2hWIyT.webp" /><figcaption>java（go 示例）代码演示</figcaption></figure><p></p><p>考试范围猜测：</p><p>大一：基础语法（到结构体为止，最难结构体排序）</p><p>大二：数据结构与算法（所有基本的数据结构以及算法）</p><p>真的没有了。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blog.attilio.cc/posts/fzu/2023-vehicle-to-cs/</id>
      <title type="text">2023 福州大学车辆工程转计算机类的经验贴</title>
      <published>2023-12-03T00:00:00.000Z</published>
      <updated>2023-12-03T00:00:00.000Z</updated>
      <author><name>ShaddockNH3</name></author>
      <link rel="alternate" href="https://blog.attilio.cc/posts/fzu/2023-vehicle-to-cs/"/>
      <summary type="text">2023 福州大学车辆工程转计算机类的经验贴，包含时间线、备考资料、面试记录等详细信息，供有意转专业的同学参考。</summary>
      <content type="html"><![CDATA[<div><div><div></div><div>警告</div></div><div><p>本篇文章已过时，福州大学转计算机专业内容已在 2025 转专业改为机考！</p></div></div>
<section><h2>作者信息<a href="#作者信息"><span>#</span></a></h2><p><strong>本人</strong>：来自福建福州，2023 机械学院车辆工程转计算机学院计算机类，笔试第六，综合第八（个人认为不是很理想）</p><p>本帖将极为详细地介绍所有的流程，从时间线，备考资料，以及最长的个人心得（部分纯属个人发癫，可以不用看）</p><p>其实也不是很详细，因为写到后面好困（后补）</p><p><strong>QQ 号</strong>：1813469946（如若觉得还不够详细，加 Q，问到下文有写的，大概率不会回答…如果真的有问的话，也会解答的，放心）</p><p><strong>转专业交流群</strong>：1136717485</p><p><strong>注</strong>：全文 8500 来字，挑着看就行，大家的时间也是时间。</p></section>
<section><h2>先是干货部分<a href="#先是干货部分"><span>#</span></a></h2><section><h3>资格<a href="#资格"><span>#</span></a></h3><p>面向泉州啥的不能报，矿院只有地质能报。今年有人准备转啥忘了，等到报的时候发现没资格。</p><p>地方专项可以（本人），数理综合班，数理金融班不行。高校专项不知道行不行。</p></section><section><h3>时间线<a href="#时间线"><span>#</span></a></h3><ul>
<li>2023 年 8 月 27（26）日：报道</li>
<li>2023 年 8 月 28 日＋两至三日：数理综合班，数理金融班等开始报名录取等</li>
<li>2023 年 8 月 28 日至 2023 年 9 月 3 日：新生适应周</li>
<li>2023 年 9 月 4 日至 2023 年 9 月 20 日：军训</li>
<li>2023 年 9 月 12 至 2023 年 9 月 18：英语四级报名（别忘了，越早越好，早的能抢到铜盘名额）</li>
<li>2023 年 9 月 21 日至 2023 年 9 月 24 日：新生再教育，学生手册考试</li>
<li>2023 年 9 月 25 日至 2023 年 9 月 28 日：开始上课（没上高数）</li>
<li>2023 年 9 月 29 日至 2023 年 10 月 8 日：中秋国庆放假</li>
<li>2023 年 10 月 9 日开始，正式上课（才开始上高数）</li>
<li>2023 年 10 月 19 日：教务处发放转专业通知</li>
<li>2023 年 11 月 5 日：高数小测（第一章）</li>
<li>2023 年 11 月 7 日：教务处发放转专业细则</li>
<li>2023 年 11 月 9 日至 2023 年 11 月 11 日：运动会（开摆日）</li>
<li>2023 年 11 月 14 日至 2023 年 11 月 18 日：转专业报名</li>
<li>2023 年 11 月 16 日：计算机实验班考试（只是放在这里，只对计算机类学生开放）</li>
<li>2023 年 11 月 21 日：计算机学院学院通知处发放考试安排</li>
<li>2023 年 11 月 26 日：早上九点至十一点，笔试（科报厅 b）</li>
<li>2023 年 11 月 29 日：计算机学院学院公示处下午三点出面试名单</li>
<li>2023 年 11 月 30 日：晚 6 点半开始，面试（旗山校区）</li>
<li>2023 年 12 月 2 日：下午三点，计算机学院学院公示处发放拟录取名单</li>
</ul><p><strong>时间线不必担心，有什么资料学长学姐会第一时间发在群里。</strong></p></section><section><h3>考啥<a href="#考啥"><span>#</span></a></h3><section><h4>转专业试卷＝50% 高数 +30% 计算机导论（计算机基础知识）+20% 英语<a href="#转专业试卷50-高数-30-计算机导论计算机基础知识20-英语"><span>#</span></a></h4><ul>
<li><strong>高数</strong>：福大课本第一章，第二章；同济课本第一章，第二章，第三章；10 道选择，4 道大题</li>
<li><strong>计算机导论</strong>：5 道简答题。一道组成原理，一道进制转化，一道数据库相关，一道网络相关，一道前沿知识（物联网考了好几年了），具体考啥到时候有时间可以帮忙压个题，整理一下啥的，学长学姐整理的资料说实话有点过时了</li>
<li><strong>英语</strong>：一道汉译英，一道英译汉，都关于计算机，略难于四级，考人工智能</li>
</ul><p>三份卷子，一起发下来，注意写名字，写序号</p></section><section><h4>面试＝面试（中文）<a href="#面试面试中文"><span>#</span></a></h4></section></section><section><h3>面试记录<a href="#面试记录"><span>#</span></a></h3><p><strong>Q</strong>：面试官的问题（不止是一个提问）<br />
<strong>A</strong>：我的回答等</p><p>五分钟左右，在机房。五位老师加一位并不是很清楚身份的，他负责收取转专业单子以及指引你坐到位子上。面试是坐着面试。</p><p><strong>A</strong>：（交单子，鞠躬，坐在位子上）</p><p><strong>Q</strong>: 那么同学，请开始你的自我介绍</p><p><strong>A</strong>：好的。各位面试官老师晚上好，很荣幸能够参加本次的面试。我是机械学院车辆工程专业的大一新生，来自福建福州。我从小对计算机拥有浓厚的兴趣，喜欢钻研知识，收集信息。在中学阶段经常帮助同学们解答计算机的常识性问题。进入福州大学后，我努力准备转专业考试，询问计算机学院新生的生活以及学习进度。尽管到目前为止我没有什么编程基础，但我相信通过接下来一段时间的学习能够补足乃至超越。我未来的理想是做有关于人工智能方面的工作，以上就是我的自我介绍，谢谢老师。（有点磕巴）</p><p><strong>Q</strong>：你的高考成绩是多少？</p><p><strong>A</strong>：597</p><p><strong>Q</strong>：数学多少：</p><p><strong>A</strong>：120</p><p><strong>Q</strong>：英语？</p><p><strong>A</strong>：127</p><p><strong>Q</strong>：你觉得计算机未来有哪些研究方向？</p><p><strong>A</strong>：其实我觉得，和导论考的那几道题差不多，据我了解，计算机未来有以下研究方向：
硬件方向，软件方向，人机交互方向，数据库方向之类的，差不多就是这样。（导论上有 7 点）</p><p><strong>Q</strong>：你对计算机有什么了解？</p><p><strong>A</strong>：到目前为止，我对计算机的了解仅仅局限于书本（被打断）</p><p><strong>Q</strong>：就是导论上的内容没错吧。</p><p><strong>A</strong>：是这样的（微笑）</p><p><strong>Q</strong>：你觉得原专业课的难度怎么样？</p><p><strong>A</strong>：我原专业是车辆工程嘛，到目前为止的专业课只有机械制图 C。
我个人认为这门课的难度在可接受的范围之内。</p><p><strong>Q</strong>：同学，我想问一下，你对计算机专业了解吗？</p><p><strong>A</strong>：不是很了解。</p><p><strong>Q</strong>：同学这就不对。不了解计算机后续课程就报计算机，等下你学了一年之后后悔了怎么办？
（一个开始笑，并且有人开始附和”是啊，确实”）难道你转计算机只是因为原专业太差吗？（众人笑）
所以…（大于等于 4 个连续问题，记得不是很清楚了，抱歉）</p><p><strong>A</strong>：（主动打断）我申明，我对计算机专业的不了解仅仅是对编程、硬件等专业知识的不了解，
而并非是对前景的不了解。在转专业之前，我便向计算机专业的同学们要过课表以及后续的培养计划，
知道他们未来要学什么。同时我在转计算机之前便已经做好了详细的规划，未来想要参加哪些竞赛。
并且我将会以计算机为跳板，冲击人工智能的研究生。（情绪有点激动）</p><p>（全场沉默了几秒）</p><p><strong>Q</strong>：你在闲暇之余有没有去了解编程？</p><p><strong>A</strong>：有了解，我在转专业备考的闲暇之余观看 C 语言的视频，目前看到选择和循环语句，但并不深入，仅仅是了解。</p><p><strong>Q</strong>：你有什么要补充的吗？</p><p><strong>A</strong>：（有点蒙）如果我转专业转成功了，我会在转考结束后的那个寒假补线性代数以及 C 语言。同时，我相信，在我的努力之下，我并不会比计算机专业的同学们差，甚至会超越他们，以上就是我要补充的内容。（说完之后才意识到有点假大空）</p><p><strong>Q</strong>：请问你要结束这场面试吗？</p><p><strong>A</strong>：（有点不确定）结束…吧</p><p>（起身鞠躬）</p><p><strong>A</strong>：谢谢老师。</p><hr /><p><strong>补充</strong>：我的面试算低的，只有 33.67（40 满），大家都是差不多 35，36 的样子，我的面试过程仅供参考，但有一点可以保证，我说的全是实话。上面就是完全零基础失败的典范了。做一个失败参考吧。</p><p>从左到右第一个貌似是院长（我不确定），也是第一个开始笑的；从左到右第二个是”刁难”我的人，从右往左第一个是沉默之后第一个开始问的，也是问高考成绩，是否要补充，结束面试的。</p><p>以上。</p></section><section><h3>报录比<a href="#报录比"><span>#</span></a></h3><ul>
<li>23 年转计 4.4 进 1</li>
<li>22 年转计 5 进 1</li>
<li>21 年转计比 22 年略高</li>
<li>20 年及以前差不多 6 进 1</li>
<li>23 年转电信 4.6 进 1</li>
<li>22 年转电信 3 进 1</li>
<li>23 年转电气 5.5 进 1</li>
</ul><p>仅供参考，不能说 24 年计算机还会降低，再低和前些年转软工的报录比都差不多了</p></section><section><h3>能进的笔试分<a href="#能进的笔试分"><span>#</span></a></h3><p>60 能进面试，65 难说能不能转成功，70 就基本上可以稳。本人 75.8 第二组第三，也就是笔试第六。</p><p>笔试前 16 基本可以稳，也就是第一组前八和第二组前八，笔试靠后也不必慌张，历年都有笔试蛮后面反杀的。</p></section><section><h3>其他注意事项<a href="#其他注意事项"><span>#</span></a></h3><ul>
<li>不管是笔试还是面试，带笔，<strong>带身份证，学生证</strong></li>
<li><strong>不要抱有侥幸心理做不该做的事情</strong></li>
<li>不要被骗了，认为导论和英语不重要，它们只是相对于高数而言放在第二梯队</li>
<li>不要认为笔试靠前面试态度就可以很敷衍，今年貌似有转其他专业的，笔试很靠前的，面试寄了</li>
<li>有些专业没开 C 语言课，既然你下定决心转计算机，学吧，别犹豫（重点别放这上面，毕竟不考，面试倒是能加分）</li>
<li><strong>记得按时报名</strong></li>
<li><strong>别忘了打印单子，一定要调尺寸，我印出来两张被说了一嘴</strong></li>
<li>不过有一点也需要注意一下，高数，基本上转考前几天才会把转考要考的部分给讲完。</li>
</ul></section><section><h3>备考资源（本人）<a href="#备考资源本人"><span>#</span></a></h3><ul>
<li>福大高数课本（军训后发的）</li>
<li>同济高数 7 课本（8 在 23 年暑假就出了，但我买了 7）</li>
<li>宋浩（b 站高等数学，一亿播放量的）</li>
<li>吉米多维奇精选精讲第二版</li>
</ul><p></p><figure><img src="https://img.w2fzu.com/fzu-run/202312032008140.png" alt="吉米多维奇精选精讲第二版封面" /><figcaption>吉米多维奇精选精讲第二版封面</figcaption></figure><p></p><ul>
<li>同济同步测试卷（一样的，第八版出了）</li>
</ul><p></p><figure><img src="https://img.w2fzu.com/fzu-run/202312032005950.png" alt="同济同步测试卷封面" /><figcaption>同济同步测试卷封面</figcaption></figure><p></p><ul>
<li>福大自己的教辅（没啥用，或许吧）</li>
<li>05 年至 13 年的期中考试卷</li>
<li>21 年和 22 年的期中考试卷</li>
<li>计算机导论（计算机类专业的导论书，当科普看的）</li>
</ul><p></p><figure><img src="https://img.w2fzu.com/fzu-run/202312032008943.png" alt="计算机导论教材封面" /><figcaption>计算机导论教材封面</figcaption></figure><p></p><ul>
<li>计算机导论的解析（我背的这本）</li>
</ul><p></p><figure><img src="https://img.w2fzu.com/fzu-run/202312032007634.png" alt="计算机导论解析资料封面" /><figcaption>计算机导论解析资料封面</figcaption></figure><p></p><ul>
<li>学长学姐准备的资料（有点过时，我也有背）</li>
<li>计算机专业英语（机械工业出版社，买来吃灰，翻都没翻开过，不放图，别买，浪费钱）</li>
<li>学姐（难得的转计成功的学姐，排名还挺靠前，能帮助你消除恐惧心理）</li>
<li>一位赛博指路的学长/学姐（从旗山北门到计数楼）</li>
<li>学长（说是没啥用，其实学长的帮助也是很大的，但估计没有学长给学妹的大）</li>
<li>转专业交流群：水群的老东西以及同期生</li>
</ul></section></section>
<section><h2>本人的历程<a href="#本人的历程"><span>#</span></a></h2><p>（如果想省时间，有用的时间点从正式转专业部分开始，包括高数，计算机导论以及英语的复习范围啥的。在这前面都是我的心路以及经历，有用的会标注）</p><section><h3>高考结束后至开学前（没啥用）<a href="#高考结束后至开学前没啥用"><span>#</span></a></h3><p>高考结束后感觉高考考的很好，然后开摆，过了两周出高考成绩，寄了。
本来我是把福大计算机当作保底的来的看的，结果最后因为物理被刺搞得我很被动。
幸亏我拥有地方专项资格（给予部分专业降 1 至 2 分录取），最终进入了一个不算很好也并非很差的专业——车辆工程。
按照正常报考，我这个分数连机械学院都进不了。</p><p>那个时候看到高考成绩万念俱灰，所以高考填报的时候我就直接按照地方专项的分数，从高到低一个个填下去，是哪就是哪。最后是车辆。</p><p>至少录取了，心请就好了很多，于是去旅游，放松了一下心情，开始规划。</p><p>毕竟本地优势，高三的时候就知道福大转专业较为容易，于是就开始收集信息。</p><p>先是找到了知乎上一位学长的，大概知道了要干嘛。但那个时候还是很迷茫，不知道要怎么做。</p><p>在网上买了圣经（C primer plus），看了点 C 语言，然后就没看了（就看到选择和循环语句）</p><p>在 8 月 25 号的时候，我正式放弃了转专业的想法，是的，我放弃了。其一，车辆并非很差的专业，没有什么转专业的必要；其二，反正 211 车辆未来也是要转码，归根结底还是要学计算机。</p><p>于是放弃了。</p></section><section><h3>9 月初（军训前，没啥用）<a href="#9-月初军训前没啥用"><span>#</span></a></h3><p>本来我已经基本上放弃了转专业的想法，但是我一个舍友有一天突然提出了转专业的意见。我和他交流完毕后，立刻买了计算机导论。然后我开始研究暑假就得到的网站到底要怎么进，挂了梯子啥的都进不了（用的电脑）</p><p>那个时候脑抽，挂了个梯子上贴吧发帖问，被人叫法 ye，或者法 ye 恰个 v。
后来看了一下 ip 才发现 ip 给我整法国去了。</p><p>太愚蠢了。</p><p>于是我开始疯狂搜索，找到了当时一位 20 年转考学姐留下来的 pdf（后来不小心删掉了）</p><p>于是加上了转专业群，蛮点了一下网站，本来想随便试一下。毕竟电脑都进不了手机则么可能能进…</p><p>最后，GitHub，在手机上上去了…还不用梯子。</p><p>那个时候心情有点崩溃，暑假的时候找镜像网站，搞啥咋也进不去，结果在手机上一点就进了。</p><p>寄。</p><p>再加上我在贴吧上也有问，被某几位 ldx“嘲讽”太晚了。</p><p>在这里我可以很光荣的说，我转成功了（虽然也没啥好荣幸的，这不过就是弥补自己高考的失败罢了）</p></section><section><h3>军训（没用）<a href="#军训没用"><span>#</span></a></h3><p>当摆子没啥好说的。注意，军训两学分，有算绩点！和一门大英或者一门政治学分一样了！</p></section><section><h3>上课第一周（没用）<a href="#上课第一周没用"><span>#</span></a></h3><p>当摆子，那个时候转专业心依旧不是很坚定。甚至想放弃，毕竟到了计院更卷。没上高数</p></section><section><h3>国庆一直到 10 月 16 日（没用）<a href="#国庆一直到-10-月-16-日没用"><span>#</span></a></h3><p>当摆子，高数进度缓慢。</p></section><section><h3>10 月 16 日至 11 月初（<strong>有点用，和导论有关系</strong>）<a href="#10-月-16-日至-11-月初有点用和导论有关系"><span>#</span></a></h3><p>这一天我彻底下了转专业的决心，开始认真备战转专业考试。之前都不是很坚定地在准备。或许吧。
开始背导论，并且把计算机导论那本书当看科普每天看一点，最重要掌握的就是进制转换，以及码制（没考）。
背的前些年学长学姐整理的题目，主要背了组成原理，也就是计算机的定义，硬件及硬件的分类，软件及软件的分类。
看了下 22 年的题目，把 22 年的题目给背了。然后高数小测寄了，才发现脑子抽了先去背导论，就是应该先搞高数。
于是开刷高数。</p><p>学长学姐资料里软件工程部分占了 6 页，那里不用看。转软工的面试可能还有点用。</p></section><section><h3><strong>刷高数 ing</strong><a href="#刷高数-ing"><span>#</span></a></h3><p>小测寄了之后开始总结，除了有一题是硬实力问题外，其他都是不够注重细节。
不够注重细节是借口，其实就是题做少了。由于我不是很喜欢吉米多维奇的排版，
所以吉米多维奇并没有刷的很细致，导致后面考试的时候有点被动。
谁会想到从里面摘了 4 道题改编，卷子属实是有点出的不走心了。</p><p>后面自学学完了之后开始刷卷子，从刚开始写 21 年试卷的不及格，
到转考前一周的周日 22 年试卷的满分（21 年卷子比 22 年难，不可否认），历时快一个月。
中间把 05 年到 13 年的卷子刷完，这些年的卷子都蛮套路化的，主打一个计算认真，包括转考也一样。</p><p>把你的高数作业翻到最后，有近两年的卷子。</p><p>不是高数不难，是福大考的不难。福大的高数更侧重于考细节，每个概念要分的很清楚。
举个很简单的例子：“在可导函数中，导函数等于零的点是原函数在该点取极值的什么条件”，
很显然是必要条件，但把第一个小句去掉，答案就变成既不也不。
（分别是福大课本第二章课后综合题以及 22 年期中考考题）
一定要注意细节。</p><p>成败就在此。</p><p><strong>压轴题没做出来不是很影响你的笔试成绩，况且今年转计反套路，压轴没出微分中值定理。</strong></p><p>这里吐槽一句，蛮逆天的今年，12 月 10 号期中考，然后转计考是 11 月 26 日，考的范围还一样。</p></section><section><h3>关于原专业<a href="#关于原专业"><span>#</span></a></h3><p>由于原专业并不是很差，所以做了两手准备。这么一搞就搞得非常累，尤其还是机械制图 C 这种很花时间和脑子的科目。</p><p>可以看到大部分转成功的都是抱着破釜沉舟的想法转的，几乎放弃了原专业课。这需要自己权衡，不再多说。</p></section><section><h3>转考日的前两周的周日（没啥用）<a href="#转考日的前两周的周日没啥用"><span>#</span></a></h3><p><strong>心态放好，大家都一样的，导论差不多都是最后一周突击。</strong></p></section><section><h3><strong>英语</strong><a href="#英语"><span>#</span></a></h3><p>其实我把英语的战线拉的很长，从九月初就开始刷英语，毕竟四级要考。因为转考要考翻译，所以重点着重放在了翻译上面。
写了七八篇，考前写了一篇，向计算机的同学要了他们的专业认证英语，拿来看了一下。</p><p><strong>人工智能考了两年了，汉译英。另外稍微看看算法之类的单词，这些会考英译汉，能写个大概意思就行。</strong></p></section><section><h3><strong>最后的冲刺周（导论）</strong><a href="#最后的冲刺周导论"><span>#</span></a></h3><p>事情扎堆，压力很大。把十月中旬背的导论捡了回来，挑重点，根据去年猜题。这一周周五开始上积分，我没听。因为周日就转考。是的，周三才讲完转考的考试范围。</p><p><strong>高数，基本上转考前几天才会把转考要考的部分给讲完，提前学和刷题是必要的。当然不排除你天赋异禀。</strong></p><p>顺着写的，这句话待会儿加到前面。</p><p>最后一周把同济的卷子给刷了，上课都没听。还是那句话，关于原专业的课程或者公共课，得自己权衡利弊。</p><p>复习了三遍课本以及课后作业。</p><p>吉米多维奇稍微看了一眼之前折页的题目。</p><p>把错题总结了一下。</p><p>导论真的死记的应该不多，每块东西有点印象就行，到时候上考场能写出东西。
<strong>最好的结果差不多就是，你对着计算机导论的目录，每一点都能说出点所以然来。</strong></p><p>导论根据去年的题目推测，考的范围大却不精。今年考的方向和去年类似，因此我完完整整背下来了一道题目，剩下两题都有看过，蛮有印象的，有一题扫了几眼，考场上能写出几句像样的话来。进制转换就不必说了。</p><p>前面有说过，考一道组成原理，一道数据库，一道进制转换，一道网络相关，一道计算机前沿知识。</p><p>对应总结一下。</p><p>22 年考：</p><p>简述计算机的硬件及分类，进制转换，数据库系统，TCP/IP，物联网大数据与云计算的关系</p><p>23 年考：</p><p>简述计算机的基本特点，进制转换，数据库管理系统，计算机病毒，物联网。
大体与我之前的分类类似。</p><p>前面有说过物联网考了好几年了，从 20 年一直考到现在。</p><p>转考前两天我怼着这三块内容以及自己觉得可能出的考题一直看。</p><p>英语到最后一周没怎么复习了，听天由命，看啥上面有说。</p></section><section><h3><strong>转考当天（蛮有用）</strong><a href="#转考当天蛮有用"><span>#</span></a></h3><p>凌晨两点睡的，比高考还紧张。也可能是喝了咖啡的缘故。</p><p>8 点多到了考场，算了下考生，好像比前几年少。随便坐，没有座位表。
试卷发下来，一下发三张。我觉得高数部分题目难度略高于历年的半期考，题目有一些是吉米多维奇里面改编的，有原题。但是我吉米多维奇没有细刷，所以导致浪费了时间。</p><p>高数求极限错了，7 分没了。压轴 8 分没见过的题型，不是微分中值定理和泰勒，而是夹逼定理，给了。</p><p>在这里告诫后来者，<strong>一定一定，要看解析</strong>。我在考前有做过一道很类似的这种求极限的题目（同济测试卷上的），用了另一种较为特殊做法。我觉得我对了，没看解析，也没意识到有其他做法，而且还是最通识的洛必达。考场上那题改编了一下，用那种特殊做法做出来很怪。出来一看，用洛必达。</p><p>15 分给了，所以我考完之后就已经做好了没过的准备了。我不能保证我选择题以及其他大题全对，就像我当时在高数小测考场的时候，笃定自己能满分，结果出来一看，寄。</p><p>现在写的时候知道结果，过了，而且笔试排名还蛮前面的。在这里感谢我自己，有认真检查高数的选择题和其他两道大题（虽然第一遍就做对了），考前有认真总结高数，有认真背导论，有过一些专业词汇（虽然没啥用），做了近十篇的四级翻译，向计算机的同学要专业认证英语。</p><p>后 50 分算是救了我，如果我高数其他题全对的话，那我导论和英语加起来扣了不到十分，这还建立在我有一道导论几乎没看过，瞎答的情况下（有理有据瞎答）</p><p>当然我没有了解过其他人的具体分数，所以不是很清楚他们的答题情况。或许我这个导论和英语的扣分也很高，毕竟 20 年有 96 的超模学长/学姐。</p><p>然后当天结束之后，去看了四院合办的迎新晚会。瞻仰了我主持人舍友的英姿，有一说一中间那段太尬了，这是他自己说的。</p><p>放松了许多。或者说 san 值降低。</p><p>另外时间有点紧，两个小时做三张卷子时间差点不够。</p></section><section><h3>转考后一天<a href="#转考后一天"><span>#</span></a></h3><p>这一天是电信笔试，得去旗山考，下午两点开始，我祝福了我考电信的朋友。</p></section><section><h3>出名单的前一天<a href="#出名单的前一天"><span>#</span></a></h3><p>出名单的前一天是物信院出名单，我有帮我朋友在那里守着，最后名单出来，分数出来，朋友差一分进面试，寄。</p></section><section><h3>出名单当天<a href="#出名单当天"><span>#</span></a></h3><p>当时我是第一个发现能查成绩以及把面试名单发到群里的人。我和朋友坐在食堂三楼刷。当时太兴奋了，喊出来了，在此对影响到的各位同学抱歉。</p><p>最后的感觉是怅然，除了一个转电气的朋友还没考之外，除了我之外其他 4 个转考（不全是考计算机的）都寄了。这种感觉有点像高考前的一群朋友，大家约好了一起去某所大学，结果就你自己考上了。</p><p>然后后面转电气的朋友也寄了。</p><p>不再多言。</p></section><section><h3>面试当天（出名单后一天）<a href="#面试当天出名单后一天"><span>#</span></a></h3><p>在这里先感谢我的主持人舍友，他帮我看了下稿子，提出了修改建议，然后传授了我一个多小时面试的经验。比如说如何让自己声音听起来不虚，让自己看起来有自信。虽然面试分不是太高，但是我敢肯定如果没有他的帮助，我可能在考官面前连自我介绍都会忘词，分肯定也会更低。</p><p>面试的时候我是和其他三个人，都是寄院面试的打车出去，四点打车出发，四点半到旗山校区北门，并且到计数楼 3 楼踩点，坐校内的旅游车来到生活区，吃饭（吃的麦麦），五点四十五坐上回程车，六点到达计数楼并等待。</p><p>时间有点赶。</p><p>我面试的具体内容已经在前面写的很清楚了，在这里就不再重复一遍。当所有老师开始笑起来的时候，我的当时脑袋里的想法是：</p><p></p><figure><img src="https://img.w2fzu.com/fzu-run/202312032009680.png" alt="面试当天心情示意图" /><figcaption>面试当天心情示意图</figcaption></figure><p></p><p>不说什么，也没什么好说的。（当时确实有点火气，这是真的）因为我确实没有实力。</p><p>没有实力是原罪。</p><p>我认得很清楚。</p></section><section><h3>面试后一天<a href="#面试后一天"><span>#</span></a></h3><p>精神恍惚，早上的制图课和高数课我听不进去。精神力消耗实在太大了，根本集中不了注意力。本来我下午还制定了学英语，学高数等等的诸多计划。</p><p>然后看到了这张图，也放在下面：</p><p></p><figure><img src="https://img.w2fzu.com/fzu-run/202312032009546.png" alt="面试后心态调整示意图" /><figcaption>面试后心态调整示意图</figcaption></figure><p></p><p>正确的，我的精神压力太大了，真的把大学当高中来学会死人的。</p><p>所以直接开摆，下午睡到了五点多，晚上和另一个开学就跑路去数理综合班的朋友，出去穷游，一晚上花了 1 块钱（坐公交回来）。</p><p>心理压力瞬间松了很多，也知道未来该怎么做了。</p><p>简单总结一下，这里是大学，不是高中。或许，只是或许哈，学校举办那么多活动，是让我们放松，只是或许哈。</p><p>不说什么了，好困啊！！！！</p></section><section><h3>拟录取名单<a href="#拟录取名单"><span>#</span></a></h3><p>其实到了这个时候，已经没多大感觉了，进了就进了，没进就没进。最后响应群主号召来写这玩意。本来快睡着了，然后去看了下群。突然就精神了，下床开电脑写了这么一个狗屁不通且注水的玩意。</p></section><section><h3>新生活<a href="#新生活"><span>#</span></a></h3><p>想啥呢，马上就是大英期中考＋高数期中考＋英语四级考试＋导论论文截至＋无数事情。
好吧，其实我的导论论文截至日期是 11 月 30 日，我在笔试一结束就马不停蹄地水论，
在 11 月 28 日把论文交了上去，然而我导论课还有一篇全英论文翻译，12 月 15 号交，
头疼着呢！四级还在 12 月 16 号。</p><p>转考之后，该干啥干啥，想在原专业拿奖学金的就继续认真学原专业的课，不想拿的混个及格，虽然没啥影响，但是成绩单上不好看。</p></section><section><h3>最后<a href="#最后"><span>#</span></a></h3><p>23 年福大计算机的分是 616，本人高考成绩 597，相当于上了半年高四，高考成绩加了 20 分。</p><p>我在高中阶段并没有参加过任何的学科竞赛，高考也一般，还有瘸腿的科目。在转专业的大军里面也普普通通，没什么亮点。</p><p>为什么写这么长？我也只是一个普通人，把自己的经历分享出来。
如果有认真看就会发现我这一路下来，除了占据了地域优势，知道福大可以转转业外，
剩下的信息基本上都是自己主动出击去收集的，成绩啥的也是一步步打下来的，完全是普通人可以复刻的道路。
毕竟我刚开始也是，一份卷子做下来能不及格，也不是啥天才。
我什么都没有，一路上都是好友，学长学姐，乃至父母帮助过来的，能帮到一点是一点吧，最前面写那个大概率不会回答其实并不符合我的性格，未来学弟学妹没看其实也没啥关系，你问的，我都会给你解答。</p><p>另外不要觉得不好意思，转专业群里的学长学姐随便加，都会回答你的问题。</p><p>写到这里我不知道在想什么，或许在想我应该睡觉了，现在已经很晚了。</p><p>最后的最后，感谢能读到这里的 uu 们。</p><p>大家的时间也是时间，不能因为看我这个转专业帖子，看我在这里无病呻吟浪费时间。</p><p>不过不论如何，最后祝 24 年乃至未来的转专业的学弟学妹们顺利。</p><p>祝大家都能到想上的专业。</p><p>大家，加油，永不言弃！！！！</p></section></section>
<section><h2>致敬<a href="#致敬"><span>#</span></a></h2><ul>
<li>21 年带头跑路的土木学习部部长</li>
<li>转专业群群主</li>
<li>某位 22 转成功学姐</li>
<li>给予帮助的全体学长学姐</li>
<li>本人（迫真，这次最大的收获就是懂得了感谢自己）</li>
<li>以及奋斗的我们</li>
<li>未来能看到这里的学弟学妹们</li>
</ul><hr /><p>真的是写在最后？</p><p>未来有什么要补充的，或许等会用 github 了会再来说说，放在这里的下面，包括转专业成功后要干啥什么的，毕竟目前我并没有体验过。有些事情其实没有亲身体会过，是没办法知道里面的种种，比如说面试，根本，或者说基本上没得参考（我应该是第一个把面试全过程写出来的人了吧，当时被问到是否要结束面试的时候心脏漏了一拍，后来才意识到这是面试的正常流程）。</p><p>诸位，山顶相聚！</p><p>另外，喝了咖啡太精神了，晚上尽量不要喝咖啡。</p><p><strong>2023 年 12 月 3 日凌晨 2 点半！！！！</strong><br />
<strong>2023 年 12 月 3 日三点半细化再补充</strong></p></section>]]></content>
    </entry>
</feed>
