<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>LarGeoYos</title>
        <link>https://largeoyos.github.io/</link>
        <description>Recent content on LarGeoYos</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-CN</language>
        <lastBuildDate>Fri, 29 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://largeoyos.github.io/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>📌 细小知识记录</title>
            <link>https://largeoyos.github.io/post/micro-knowledge/</link>
            <pubDate>Fri, 29 May 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/micro-knowledge/</guid>
            <description>&lt;p&gt;这里用于记录平时遇到的一些细微但很有用的编程知识点。后续会按照日期不断追加内容。&lt;/p&gt;&#xA;&lt;h2 id=&#34;2026-04-28&#34;&gt;&lt;a href=&#34;#2026-04-28&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2026-04-28&#xA;&lt;/h2&gt;&lt;h3 id=&#34;c-输入流与格式输出小技巧&#34;&gt;&lt;a href=&#34;#c-%e8%be%93%e5%85%a5%e6%b5%81%e4%b8%8e%e6%a0%bc%e5%bc%8f%e8%be%93%e5%87%ba%e5%b0%8f%e6%8a%80%e5%b7%a7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;C++ 输入流与格式输出小技巧&#xA;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. &lt;code&gt;cin &amp;gt;&amp;gt; noskipws&lt;/code&gt; 的使用与回车符处理&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;noskipws&lt;/code&gt; 是一个流操纵符，用于告诉 &lt;code&gt;cin&lt;/code&gt; &lt;strong&gt;不要跳过空白符&lt;/strong&gt;（例如空格、换行）。如果不使用它，&lt;code&gt;cin&lt;/code&gt; 默认会忽略掉空白字符。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;cin.ignore(1000, &#39;\n&#39;)&lt;/code&gt;：可以忽略输入缓冲区中的字符，直到遇到换行符 &lt;code&gt;\n&lt;/code&gt; 或达到指定数量（如1000），常用于将前文残留的回车符丢弃掉。&lt;/li&gt;&#xA;&lt;li&gt;注意：切换为 &lt;code&gt;noskipws&lt;/code&gt; 之后，在后续不需要提取空白符的地方，&lt;strong&gt;记得使用 &lt;code&gt;skipws&lt;/code&gt; 切换回来&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;示例代码：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cin&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;noskipws&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;T&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cin&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;skipws&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;T&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;weight&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ignore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2. 左对齐输出格式化&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;使用 &lt;code&gt;std::left&lt;/code&gt; 配合 &lt;code&gt;std::setw(5)&lt;/code&gt; 可以很方便地实现输出内容左侧对齐并且占用固定字符宽度：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;3. Windows 下 C++ 控制台输出汉字乱码解决&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;当使用 C++ 在 Windows 控制台打印中文字符时，容易出现乱码。可以引入 &lt;code&gt;&amp;lt;windows.h&amp;gt;&lt;/code&gt;，并将控制台输入输出的编码页设定为 UTF-8（65001）：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;windows.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 设置控制台输出和输入为 UTF-8 (65001)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;SetConsoleOutputCP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;65001&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;SetConsoleCP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;65001&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 你的逻辑...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;按先序输入...&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;2026-05-29&#34;&gt;&lt;a href=&#34;#2026-05-29&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2026-05-29&#xA;&lt;/h2&gt;&lt;h3 id=&#34;c-stringrfind-逆向查找&#34;&gt;&lt;a href=&#34;#c-stringrfind-%e9%80%86%e5%90%91%e6%9f%a5%e6%89%be&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;C++ &lt;code&gt;string::rfind&lt;/code&gt; 逆向查找&#xA;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;rfind&lt;/code&gt; 是 &lt;code&gt;std::string&lt;/code&gt; 的成员函数，功能与 &lt;code&gt;find&lt;/code&gt; 相反——从字符串的&lt;strong&gt;末尾&lt;/strong&gt;开始向前查找子串或字符。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;基本语法：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 查找子串&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;// 查找 C 风格字符串&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;// 查找单个字符&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;返回匹配的第一个字符的&lt;strong&gt;位置索引&lt;/strong&gt;（从 0 开始）&lt;/li&gt;&#xA;&lt;li&gt;若未找到，返回 &lt;code&gt;string::npos&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;pos&lt;/code&gt;：搜索截至位置，默认为 &lt;code&gt;npos&lt;/code&gt;（即从末尾往前搜索整个字符串）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;与 &lt;code&gt;find&lt;/code&gt; 的关键区别：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;方法&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;搜索方向&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;适用场景&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;find&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;从左到右&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;查找第一次出现的位置&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rfind&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;从右到左&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;查找最后一次出现的位置&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;实用示例：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;namespace&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/home/user/docs/file.txt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 1. 提取文件名（找到最后一个 &amp;#39;/&amp;#39;）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;substr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;文件名: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 输出: file.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 2. 提取文件扩展名&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ext&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;substr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;扩展名: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ext&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;// 输出: .txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 3. 限制搜索范围：只在前半段查找&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;abaaba&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;ab&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 在位置 0~3 范围内从右往左找&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;前半段中最后一个 ab 在: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 输出: 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 4. 找不到的情况&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;xyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;未找到子串&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;常见用途：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;解析文件路径（提取文件名、目录名）&lt;/li&gt;&#xA;&lt;li&gt;获取文件扩展名&lt;/li&gt;&#xA;&lt;li&gt;从 URL 中提取最后一段&lt;/li&gt;&#xA;&lt;li&gt;在长字符串中定位最后一个关键词出现的位置&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;注意陷阱：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;rfind&lt;/code&gt; 返回的索引仍然是从字符串&lt;strong&gt;开头&lt;/strong&gt;数的位置，不是从末尾数的位置&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;rfind&lt;/code&gt; 查找子串时，子串本身的字符顺序不变（仍然是正向匹配），只是搜索方向是从右往左&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item><item>
            <title>C&#43;&#43; 中 std::min_element / std::max_element 用法详解</title>
            <link>https://largeoyos.github.io/post/min-max-element/</link>
            <pubDate>Fri, 29 May 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/min-max-element/</guid>
            <description>&lt;p&gt;&lt;code&gt;std::min_element&lt;/code&gt; 和 &lt;code&gt;std::max_element&lt;/code&gt; 是 &lt;code&gt;&amp;lt;algorithm&amp;gt;&lt;/code&gt; 头文件中用于在容器中查找最小/最大元素的函数模板。&lt;/p&gt;&#xA;&lt;h2 id=&#34;函数签名&#34;&gt;&lt;a href=&#34;#%e5%87%bd%e6%95%b0%e7%ad%be%e5%90%8d&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;函数签名&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;ForwardIt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;last&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;ForwardIt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Compare&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;last&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Compare&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;comp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;ForwardIt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;last&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;ForwardIt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Compare&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ForwardIt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;last&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Compare&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;comp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;返回指向最小/最大元素的&lt;strong&gt;迭代器&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;区间为 &lt;code&gt;[first, last)&lt;/code&gt;，即左闭右开&lt;/li&gt;&#xA;&lt;li&gt;如果区间为空，返回 &lt;code&gt;last&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;如果多个元素并列，返回&lt;strong&gt;第一个&lt;/strong&gt;遇到的最值&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;min_element--找最小值&#34;&gt;&lt;a href=&#34;#min_element--%e6%89%be%e6%9c%80%e5%b0%8f%e5%80%bc&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;min_element — 找最小值&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;最小值: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;// 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;位置: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 1（第一个 1）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;max_element--找最大值&#34;&gt;&lt;a href=&#34;#max_element--%e6%89%be%e6%9c%80%e5%a4%a7%e5%80%bc&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;max_element — 找最大值&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;最大值: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;// 9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;位置: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;同时找最小和最大minmax_elementc11&#34;&gt;&lt;a href=&#34;#%e5%90%8c%e6%97%b6%e6%89%be%e6%9c%80%e5%b0%8f%e5%92%8c%e6%9c%80%e5%a4%a7minmax_elementc11&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;同时找最小和最大：minmax_element（C++11）&#xA;&lt;/h2&gt;&lt;p&gt;用 &lt;code&gt;minmax_element&lt;/code&gt; 一次遍历同时找到最小和最大，效率比分别调用两次更高：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_it&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_it&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;minmax_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;最小值: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;最大值: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;C++17 结构化绑定让写法更简洁。返回 &lt;code&gt;std::pair&lt;/code&gt;，&lt;code&gt;.first&lt;/code&gt; 是最小迭代器，&lt;code&gt;.second&lt;/code&gt; 是最大迭代器。&lt;/p&gt;&#xA;&lt;h2 id=&#34;自定义比较器&#34;&gt;&lt;a href=&#34;#%e8%87%aa%e5%ae%9a%e4%b9%89%e6%af%94%e8%be%83%e5%99%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;自定义比较器&#xA;&lt;/h2&gt;&lt;p&gt;通过第三个参数传入自定义比较函数，实现按特定规则查找：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 按绝对值找最小&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;[](&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// *it == -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 按字符串长度找最长&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;words&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;apple&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;banana&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;cherry&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;date&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;longest&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;words&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;words&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;[](&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// *longest == &amp;#34;banana&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：比较器应实现&lt;strong&gt;严格弱序&lt;/strong&gt;（strict weak ordering），即 &lt;code&gt;comp(a, b)&lt;/code&gt; 返回 &lt;code&gt;true&lt;/code&gt; 表示 &amp;ldquo;a 排在 b 前面&amp;rdquo;（a 比 b 更小）。&lt;/p&gt;&#xA;&lt;h2 id=&#34;普通数组也可以用&#34;&gt;&lt;a href=&#34;#%e6%99%ae%e9%80%9a%e6%95%b0%e7%bb%84%e4%b9%9f%e5%8f%af%e4%bb%a5%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;普通数组也可以用&#xA;&lt;/h2&gt;&lt;p&gt;迭代器接口使它们兼容 C 风格数组：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;sizeof&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;sizeof&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;arr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;arr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;最小值: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;最大值: &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max_it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;min--max--minmax--比较两个值&#34;&gt;&lt;a href=&#34;#min--max--minmax--%e6%af%94%e8%be%83%e4%b8%a4%e4%b8%aa%e5%80%bc&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;min / max / minmax — 比较两个值&#xA;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;std::min&lt;/code&gt; 和 &lt;code&gt;std::max&lt;/code&gt; 用于&lt;strong&gt;两个值之间&lt;/strong&gt;的比较，与 &lt;code&gt;min_element&lt;/code&gt;/&lt;code&gt;max_element&lt;/code&gt;（&lt;strong&gt;区间&lt;/strong&gt;内查找）不同：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;smaller&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;larger&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 带比较器的版本&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;abs_min&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[](&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// C++11: minmax 返回 pair&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;minmax&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// lo=3, hi=5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;min_element-vs-min区别对照&#34;&gt;&lt;a href=&#34;#min_element-vs-min%e5%8c%ba%e5%88%ab%e5%af%b9%e7%85%a7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;min_element vs min：区别对照&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;函数&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;作用&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;参数&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;返回值&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;std::min(a, b)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;两个值取较小&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;两个值&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;较小值的&lt;strong&gt;引用&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;std::min_element(first, last)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;区间内找最小&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;迭代器范围&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;指向最小值的&lt;strong&gt;迭代器&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;常见陷阱&#34;&gt;&lt;a href=&#34;#%e5%b8%b8%e8%a7%81%e9%99%b7%e9%98%b1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;常见陷阱&#xA;&lt;/h2&gt;&lt;h3 id=&#34;区间为空&#34;&gt;&lt;a href=&#34;#%e5%8c%ba%e9%97%b4%e4%b8%ba%e7%a9%ba&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;区间为空&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;empty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;empty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;empty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;empty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 必须检查，否则解引用空迭代器是未定义行为&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;误用-end-而非-begin&#34;&gt;&lt;a href=&#34;#%e8%af%af%e7%94%a8-end-%e8%80%8c%e9%9d%9e-begin&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;误用 end() 而非 begin()&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 错误！first &amp;gt; last，未定义行为&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;比较器不满足严格弱序&#34;&gt;&lt;a href=&#34;#%e6%af%94%e8%be%83%e5%99%a8%e4%b8%8d%e6%bb%a1%e8%b6%b3%e4%b8%a5%e6%a0%bc%e5%bc%b1%e5%ba%8f&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;比较器不满足严格弱序&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 错误：缺了相等情况的处理&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[](&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 正确&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[](&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;xx-总结&#34;&gt;&lt;a href=&#34;#xx-%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;XX 总结&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;函数&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;用途&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;头文件&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;min_element&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;区间内找最小值&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;lt;algorithm&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;max_element&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;区间内找最大值&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;lt;algorithm&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;minmax_element&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;区间内同时找最小和最大&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;lt;algorithm&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;min&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;两个值取较小&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;lt;algorithm&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;max&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;两个值取较大&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;lt;algorithm&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;minmax&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;两个值同时取较小和较大&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;lt;algorithm&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;记住：&lt;code&gt;min_element&lt;/code&gt; / &lt;code&gt;max_element&lt;/code&gt; 返回&lt;strong&gt;迭代器&lt;/strong&gt;（需要解引用），&lt;code&gt;min&lt;/code&gt; / &lt;code&gt;max&lt;/code&gt; 返回&lt;strong&gt;引用&lt;/strong&gt;（直接使用）。区间为空时必须检查返回值是否等于 &lt;code&gt;last&lt;/code&gt;。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>C&#43;&#43; 中 std::string::npos 详解</title>
            <link>https://largeoyos.github.io/post/string-npos/</link>
            <pubDate>Fri, 29 May 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/string-npos/</guid>
            <description>&lt;p&gt;&lt;code&gt;std::string::npos&lt;/code&gt; 是 C++ 标准库中 &lt;code&gt;std::string&lt;/code&gt; 类的一个静态常量，常用于字符串查找操作的结果判断。&lt;/p&gt;&#xA;&lt;h2 id=&#34;定义与值&#34;&gt;&lt;a href=&#34;#%e5%ae%9a%e4%b9%89%e4%b8%8e%e5%80%bc&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;定义与值&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;类型是 &lt;code&gt;std::string::size_type&lt;/code&gt;（通常是 &lt;code&gt;size_t&lt;/code&gt;）&lt;/li&gt;&#xA;&lt;li&gt;值为 &lt;code&gt;size_t(-1)&lt;/code&gt;，即无符号整数的最大值&#xA;&lt;ul&gt;&#xA;&lt;li&gt;32 位系统上为 &lt;code&gt;4294967295&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;64 位系统上为 &lt;code&gt;18446744073709551615&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;主要用途查找失败判断&#34;&gt;&lt;a href=&#34;#%e4%b8%bb%e8%a6%81%e7%94%a8%e9%80%94%e6%9f%a5%e6%89%be%e5%a4%b1%e8%b4%a5%e5%88%a4%e6%96%ad&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;主要用途：查找失败判断&#xA;&lt;/h2&gt;&lt;p&gt;最常见的用法是作为 &lt;code&gt;find()&lt;/code&gt;、&lt;code&gt;rfind()&lt;/code&gt;、&lt;code&gt;find_first_of()&lt;/code&gt; 等查找函数的&lt;strong&gt;返回值&lt;/strong&gt;，表示&amp;quot;未找到&amp;quot;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;hello world&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;xyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;未找到匹配子串&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;禁忌不要用-int-接收返回值&#34;&gt;&lt;a href=&#34;#%e7%a6%81%e5%bf%8c%e4%b8%8d%e8%a6%81%e7%94%a8-int-%e6%8e%a5%e6%94%b6%e8%bf%94%e5%9b%9e%e5%80%bc&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;禁忌：不要用 int 接收返回值&#xA;&lt;/h2&gt;&lt;p&gt;一个常见陷阱是用 &lt;code&gt;int&lt;/code&gt; 而非 &lt;code&gt;size_t&lt;/code&gt; 接收 &lt;code&gt;find()&lt;/code&gt; 的返回值：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 错误示例&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;xyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;// int 无法表示 npos 的全部值域&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 64 位下可能永远为 false&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;因为 &lt;code&gt;npos&lt;/code&gt; 在 64 位系统上是 &lt;code&gt;18446744073709551615&lt;/code&gt;，而 &lt;code&gt;int&lt;/code&gt; 最大值只有 &lt;code&gt;2147483647&lt;/code&gt;，转换后会截断，导致永远不等于 &lt;code&gt;npos&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;正确做法&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;xyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 使用正确的类型&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 处理未找到&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;也可以使用 C++17 的 &lt;code&gt;auto&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;xyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;find--rfind-详解&#34;&gt;&lt;a href=&#34;#find--rfind-%e8%af%a6%e8%a7%a3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;find / rfind 详解&#xA;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;find&lt;/code&gt; 和 &lt;code&gt;rfind&lt;/code&gt; 是最常用的两个字符串查找成员函数，都返回匹配位置或 &lt;code&gt;npos&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;find--从前往后找&#34;&gt;&lt;a href=&#34;#find--%e4%bb%8e%e5%89%8d%e5%be%80%e5%90%8e%e6%89%be&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;find — 从前往后找&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 查找 s 的前 n 个字符&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第二个参数 &lt;code&gt;pos&lt;/code&gt; 指定从哪个位置开始搜索：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;hello world, hello again&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;// 从 0 开始 → 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;// 从下标 1 开始 → 13（第二个 hello）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;world&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;// → 6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p4&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;xyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;// → npos&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;rfind--从后往前找&#34;&gt;&lt;a href=&#34;#rfind--%e4%bb%8e%e5%90%8e%e5%be%80%e5%89%8d%e6%89%be&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;rfind — 从后往前找&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;pos&lt;/code&gt; 默认是 &lt;code&gt;npos&lt;/code&gt;（从末尾开始找），返回最后一次出现的位置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;hello world, hello again&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;// → 13（最后一个 hello）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;// 在下标 12 之前找 → 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;world&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;// → 6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p4&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;xyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;// → npos&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;典型模式提取文件扩展名&#34;&gt;&lt;a href=&#34;#%e5%85%b8%e5%9e%8b%e6%a8%a1%e5%bc%8f%e6%8f%90%e5%8f%96%e6%96%87%e4%bb%b6%e6%89%a9%e5%b1%95%e5%90%8d&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;典型模式：提取文件扩展名&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;example.tar.gz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dot&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rfind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dot&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ext&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;substr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// &amp;#34;.gz&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用 &lt;code&gt;rfind&lt;/code&gt; 而非 &lt;code&gt;find&lt;/code&gt; 能正确取到最后一个 &lt;code&gt;.&lt;/code&gt;，避免误取中间的扩展名。&lt;/p&gt;&#xA;&lt;h3 id=&#34;find_first_of--find_last_of--查找字符集合&#34;&gt;&lt;a href=&#34;#find_first_of--find_last_of--%e6%9f%a5%e6%89%be%e5%ad%97%e7%ac%a6%e9%9b%86%e5%90%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;find_first_of / find_last_of — 查找字符集合&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;hello:world-example&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find_first_of&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;:-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;// → 5（第一个 &amp;#39;:&amp;#39;）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find_last_of&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;:-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;// → 11（最后一个 &amp;#39;-&amp;#39;）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;其他相关用法&#34;&gt;&lt;a href=&#34;#%e5%85%b6%e4%bb%96%e7%9b%b8%e5%85%b3%e7%94%a8%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;其他相关用法&#xA;&lt;/h2&gt;&lt;h3 id=&#34;作为参数表示直到末尾&#34;&gt;&lt;a href=&#34;#%e4%bd%9c%e4%b8%ba%e5%8f%82%e6%95%b0%e8%a1%a8%e7%a4%ba%e7%9b%b4%e5%88%b0%e6%9c%ab%e5%b0%be&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;作为参数表示&amp;quot;直到末尾&amp;quot;&#xA;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;std::string&lt;/code&gt; 的部分成员函数用 &lt;code&gt;npos&lt;/code&gt; 表示&amp;quot;剩余全部内容&amp;quot;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;hello world&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sub&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;substr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;// 从 pos 6 到末尾 → &amp;#34;world&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sub2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;substr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;// 从 pos 6 取 5 个字符 → &amp;#34;world&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sub3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;substr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 显式表示到末尾 → &amp;#34;world&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;erase-配合-npos&#34;&gt;&lt;a href=&#34;#erase-%e9%85%8d%e5%90%88-npos&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;erase 配合 npos&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;erase&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;npos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 删除从 pos 5 到末尾的所有字符&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;延伸vector-也有-npos-吗&#34;&gt;&lt;a href=&#34;#%e5%bb%b6%e4%bc%b8vector-%e4%b9%9f%e6%9c%89-npos-%e5%90%97&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;延伸：vector 也有 npos 吗？&#xA;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;std::vector&lt;/code&gt; 没有 &lt;code&gt;npos&lt;/code&gt; 成员，因为 &lt;code&gt;vector&lt;/code&gt; 没有 &lt;code&gt;find()&lt;/code&gt; 成员函数（需用 &lt;code&gt;&amp;lt;algorithm&amp;gt;&lt;/code&gt; 的 &lt;code&gt;std::find&lt;/code&gt;）。&lt;code&gt;npos&lt;/code&gt; 是 &lt;code&gt;std::basic_string&lt;/code&gt; 及其特化（&lt;code&gt;string&lt;/code&gt;、&lt;code&gt;wstring&lt;/code&gt;、&lt;code&gt;u8string&lt;/code&gt; 等）特有的。&lt;/p&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;要点&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;说明&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;值&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;size_t(-1)&lt;/code&gt;，即无符号整型最大值&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;类型&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;std::string::size_type&lt;/code&gt;（通常为 &lt;code&gt;size_t&lt;/code&gt;）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;用途&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;字符串查找失败返回值&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;find&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;从前往后找，&lt;code&gt;pos&lt;/code&gt; 参数指定起始位置&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rfind&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;从后往前找，&lt;code&gt;pos&lt;/code&gt; 参数指定搜索截止位置&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;find_first_of&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;查找字符集合中任一字符首次出现的位置&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;find_last_of&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;查找字符集合中任一字符最后出现的位置&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;坑&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;不要用 &lt;code&gt;int&lt;/code&gt; 接收查找结果&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;适用&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;std::string&lt;/code&gt; 及所有 &lt;code&gt;std::basic_string&lt;/code&gt; 特化&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;</description>
        </item><item>
            <title>🐛 C语言中结构体自引用报错原因分析</title>
            <link>https://largeoyos.github.io/post/c-struct-typedef/</link>
            <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/c-struct-typedef/</guid>
            <description>&lt;p&gt;在 C 语言的数据结构学习中，我们往往会定义带有自身指针的结构体（例如链表的节点）。但如果写成下面这样的代码，编译器就会报错：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;typedef&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;BiTree&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;next&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;报错原因分析&#34;&gt;&lt;a href=&#34;#%e6%8a%a5%e9%94%99%e5%8e%9f%e5%9b%a0%e5%88%86%e6%9e%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;报错原因分析&#xA;&lt;/h2&gt;&lt;p&gt;在 C 语言中，编译器的解析顺序是严格从上到下的，这就导致了上述代码存在两个致命问题：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;别名尚未定义&lt;/strong&gt;：当解析到 &lt;code&gt;struct BiQNode *next;&lt;/code&gt; 这一行时，编译器还不知道 &lt;code&gt;BiQNode&lt;/code&gt; 是什么。因为作为类型的别名，&lt;code&gt;BiQNode&lt;/code&gt; 要等到最后一行大括号结束时才会被完整定义。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;标签 (Tag) 不存在&lt;/strong&gt;：上面的代码省略了 &lt;code&gt;struct&lt;/code&gt; 后面的标签名。对于编译器而言，&lt;code&gt;struct BiQNode&lt;/code&gt; 是一个完全陌生、从未见过的类型，因此无法通过编译。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;正确的写法&#34;&gt;&lt;a href=&#34;#%e6%ad%a3%e7%a1%ae%e7%9a%84%e5%86%99%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;正确的写法&#xA;&lt;/h2&gt;&lt;p&gt;如果你需要定义包含自身类型指针的结构体（例如链表节点），你&lt;strong&gt;必须&lt;/strong&gt;给结构体起一个“标签名（Tag）”，或者提前声明别名。以下提供两种标准的解决方案。&lt;/p&gt;&#xA;&lt;h3 id=&#34;方案-a最稳妥的教科书写法推荐&#34;&gt;&lt;a href=&#34;#%e6%96%b9%e6%a1%88-a%e6%9c%80%e7%a8%b3%e5%a6%a5%e7%9a%84%e6%95%99%e7%a7%91%e4%b9%a6%e5%86%99%e6%b3%95%e6%8e%a8%e8%8d%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;方案 A：最稳妥的教科书写法（推荐）&#xA;&lt;/h3&gt;&lt;p&gt;这是最常见、也最不容易出错的写法。我们同时指定标签名和别名，都叫 &lt;code&gt;BiQNode&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;typedef&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;BiTree&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;next&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 这里必须使用带标签名的完整形式 struct BiQNode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 此时定义了别名 BiQNode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;方案-b先定义别名再定义结构体&#34;&gt;&lt;a href=&#34;#%e6%96%b9%e6%a1%88-b%e5%85%88%e5%ae%9a%e4%b9%89%e5%88%ab%e5%90%8d%e5%86%8d%e5%ae%9a%e4%b9%89%e7%bb%93%e6%9e%84%e4%bd%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;方案 B：先定义别名，再定义结构体&#xA;&lt;/h3&gt;&lt;p&gt;这种写法在一些大型 C 语言工程（例如 Linux 内核或部分高级开源库）中比较常见，逻辑上非常清晰：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;typedef&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 先向编译器声明，BiQNode 是 struct BiQNode 的别名&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;BiTree&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;BiQNode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;next&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 因为前文已经声明了别名，这里可以直接使用 BiQNode，不需要加 struct&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;总结&lt;/strong&gt;：在 C 中，&lt;code&gt;typedef&lt;/code&gt; 只是给已有类型起了个新名字，并不能创造出魔法。当你要在定义结构体内部引用自己时，务必保证这个类型在解析到引用那一行时是&lt;strong&gt;可见且已知的&lt;/strong&gt;。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>🛠️ VSCode 多文件 CMake 编译方法</title>
            <link>https://largeoyos.github.io/post/vscode-cmake/</link>
            <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/vscode-cmake/</guid>
            <description>&lt;h2 id=&#34;必备插件&#34;&gt;&lt;a href=&#34;#%e5%bf%85%e5%a4%87%e6%8f%92%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;必备插件&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;插件&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;来源&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;C/C++&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Microsoft&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;CMake Tools&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Microsoft&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;四步上手&#34;&gt;&lt;a href=&#34;#%e5%9b%9b%e6%ad%a5%e4%b8%8a%e6%89%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;四步上手&#xA;&lt;/h2&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&#xA;① Ctrl+Shift+P → CMake: Select a Kit   → 选编译器&#xA;&#xA;② 点击底部 &amp;#34;CMake: [Debug]: Ready&amp;#34;     → Configure（生成 build）&#xA;&#xA;③ F7                                      → Build&#xA;&#xA;④ 点击 ▶ 或 Ctrl+F5                       → Run / Debug&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;cmakeliststxt-最佳实践&#34;&gt;&lt;a href=&#34;#cmakeliststxt-%e6%9c%80%e4%bd%b3%e5%ae%9e%e8%b7%b5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;CMakeLists.txt 最佳实践&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;推荐写法：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cmake&#34; data-lang=&#34;cmake&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;add_library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;lib_linklist&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;STATIC&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;LinkList/LinkList.cpp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;target_include_directories&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;lib_linklist&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;PUBLIC&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;LinkList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;避免使用全局 &lt;code&gt;include_directories()&lt;/code&gt;，改用 &lt;code&gt;target_include_directories()&lt;/code&gt; 让每个库管理自己的头文件路径。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;常见问题&#34;&gt;&lt;a href=&#34;#%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;常见问题&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;问题&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;解决&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;找不到头文件&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;底部栏选对 Configuration，或改 &lt;code&gt;c_cpp_properties.json&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;找不到编译器&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;确认 MinGW/GCC/Clang 已加入 &lt;code&gt;PATH&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;No kit selected&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;先执行 Select a Kit&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;build 混乱&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rm -rf build&lt;/code&gt;，重新 Configure&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;快捷键&#34;&gt;&lt;a href=&#34;#%e5%bf%ab%e6%8d%b7%e9%94%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;快捷键&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;操作&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;快捷键&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;构建&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F7&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;运行&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;Ctrl+Shift+P&lt;/code&gt; → Run Without Debugging&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;调试&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;Ctrl+F5&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;选择 Kit&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;Ctrl+Shift+P&lt;/code&gt; → CMake: Select a Kit&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;&lt;strong&gt;编译产物位置：&lt;/strong&gt; &lt;code&gt;build/&lt;/code&gt; 目录（&lt;code&gt;.exe&lt;/code&gt;、&lt;code&gt;.a&lt;/code&gt; 库文件都在这）&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;</description>
        </item><item>
            <title>⌨️ iPad 常用键盘快捷键整理</title>
            <link>https://largeoyos.github.io/post/ipad-shortcuts/</link>
            <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/ipad-shortcuts/</guid>
            <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command+H ：回到主屏幕&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command + Tab ：切换app&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command +Space ：搜索&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command +O 快速搜索&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command +N ：新建笔记&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command +W： 关闭当前标签页&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command +E ：切换预览编辑模式&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command+B ：加粗&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command+I ：斜体&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command +Z：撤销&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command +Backspace 删除一行&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command+Shift+Z：恢复&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Command+Shift+3 ：截图&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl +A 行首&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+E 行尾&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+B 向前移动一个字符&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+F 向后移动一个字符&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+P上移一行&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+N 下移一行&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+O 在插入点后新插入一行&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+T 交换光标前后字符&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+K 删除到行尾&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+H 删除左侧字符&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ctrl+D 删除右侧字符&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item><item>
            <title>🌐 HTML (Responsive Web Design Certification) 学习笔记</title>
            <link>https://largeoyos.github.io/post/html-responsive/</link>
            <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/html-responsive/</guid>
            <description>&lt;h3 id=&#34;1-h1元素&#34;&gt;&lt;a href=&#34;#1-h1%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. h1元素&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;HTML 由元素组成。 你将使用的第一个元素是 &lt;code&gt;h1&lt;/code&gt; 元素：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Welcome to freeCodeCamp&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;它以一个开始标签（&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;）开始，以一个结束标签（&lt;code&gt;&amp;lt;/h1&amp;gt;&lt;/code&gt;）结束，中间是它将显示的文本。&lt;/li&gt;&#xA;&lt;li&gt;在你的 &lt;code&gt;Welcome to freeCodeCamp&lt;/code&gt; 文本前面添加一个开始标签，后面添加一个结束标签，将其转化为一个 &lt;code&gt;h1&lt;/code&gt; 元素。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-h2元素&#34;&gt;&lt;a href=&#34;#2-h2%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. h2元素&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;h1&lt;/code&gt; 元素是网页的主标题，每个页面你应该只使用一个。&lt;code&gt;h2&lt;/code&gt; 元素表现子标题。每个页面可以有多个，它们看起来像这样：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;This is a subheading.&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;HTML 中有六个标题元素： &lt;code&gt;h1&lt;/code&gt; 到 &lt;code&gt;h6&lt;/code&gt;。 它们用于表明网页各部分的重要性，其中 &lt;code&gt;h1&lt;/code&gt; 最为重要，而 &lt;code&gt;h6&lt;/code&gt; 则最为次要。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;3-p元素&#34;&gt;&lt;a href=&#34;#3-p%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. p元素&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;This is a paragraph element.&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;4-空元素&#34;&gt;&lt;a href=&#34;#4-%e7%a9%ba%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4. 空元素&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;注意，这个图像元素没有结束标签，也没有任何内容。 空元素不能有任何内容，只有一个开始标签。&lt;/li&gt;&#xA;&lt;li&gt;有时你会看到使用 &lt;code&gt;/&lt;/code&gt; 放在 &lt;code&gt;&amp;gt;&lt;/code&gt; 之前的空元素，如下所示：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;许多代码格式化工具（如 Prettier）会选择在空元素中包含 &lt;code&gt;/&lt;/code&gt;，HTML 规范指出，&lt;code&gt;/&lt;/code&gt; 的存在 &amp;ldquo;并不标志着开始标记是自闭合的，而且是不必要的，没有任何影响&amp;rdquo;。&lt;/li&gt;&#xA;&lt;li&gt;在实际开发中，这两种形式你都会见到，因此熟悉它们非常重要。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;5图像元素&#34;&gt;&lt;a href=&#34;#5%e5%9b%be%e5%83%8f%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5.图像元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;如果你要显示图像，则需要在图像元素中包含几个属性。这是一个带有 &lt;code&gt;src&lt;/code&gt; 属性的图像元素示例&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://cdn.freecodecamp.org/curriculum/cat-photo-app/running-cats.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;src&lt;/code&gt; 属性用于指定图像的位置。 对于图像元素，包含另一个名为 &lt;code&gt;alt&lt;/code&gt; 的属性是一种好的实践。 &lt;code&gt;alt&lt;/code&gt; 属性用于为图像提供简短的描述性文本。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;这是一个带有 &lt;code&gt;src&lt;/code&gt; 和 &lt;code&gt;alt&lt;/code&gt; 属性的图像元素示例。尝试通过将 &lt;code&gt;src&lt;/code&gt; 值更新为 &lt;code&gt;&amp;quot;https://.freecodecamp.org/curriculum/cat-photo-app/cats.jpg&amp;quot;&lt;/code&gt; 来破坏图像。你将看到图像消失，只显示 &lt;code&gt;alt&lt;/code&gt; 文本。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://cdn.freecodecamp.org/curriculum/cat-photo-app/cats.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Two tabby kittens sleeping together on a couch.&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;6-属性&#34;&gt;&lt;a href=&#34;#6-%e5%b1%9e%e6%80%a7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;6. 属性&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;属性是放置在 HTML 元素&lt;strong&gt;开始标签内&lt;/strong&gt;的一个值。 属性提供元素的附加信息，或指定元素的行为方式。 以下是属性的基本语法：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;element&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;attribute&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;a元素: 锚点anchor&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://www.freecodecamp.org/news/&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;_blank&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Visit freeCodeCamp&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;第一个示例使用了 &lt;code&gt;href&lt;/code&gt; 和 &lt;code&gt;target&lt;/code&gt; 属性。&lt;code&gt;href&lt;/code&gt; 属性指定链接的 URL，&lt;code&gt;target&lt;/code&gt; 属性指定打开链接的位置。&lt;/li&gt;&#xA;&lt;li&gt;将 &lt;code&gt;href=&amp;quot;https://www.freecodecamp.org/news/&amp;quot;&lt;/code&gt; 更改为 &lt;code&gt;href=&amp;quot;https://www.freecodecamp.org&amp;quot;&lt;/code&gt;。现在，当你点击交互式编辑器中的链接时，你将在新的浏览器标签页中看到 freeCodeCamp 主页。&lt;/li&gt;&#xA;&lt;li&gt;如果没有 &lt;code&gt;href&lt;/code&gt; 属性，链接将无法工作，因为没有目标 URL。所以你必须包含这个 &lt;code&gt;href&lt;/code&gt; 属性以使链接生效。&lt;code&gt;target=&amp;quot;_blank&amp;quot;&lt;/code&gt; 启用链接在新的浏览器标签（页）中打开。&lt;/li&gt;&#xA;&lt;li&gt;其他常见的属性有 &lt;code&gt;src&lt;/code&gt; 和 &lt;code&gt;alt&lt;/code&gt;，或备选属性——分别用于指定图像的来源和为图像提供备选描述性文本。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;input&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;checkbox&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;checked&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;在上面的示例中，有一个 &lt;code&gt;type&lt;/code&gt; 属性设置为 &lt;code&gt;checkbox&lt;/code&gt; 的 &lt;code&gt;input&lt;/code&gt; 元素。 输入用于从用户处收集数据，&lt;code&gt;type&lt;/code&gt; 属性指定了输入的类型。 在本例中，该输入是一个复选框。 You will learn more about how inputs work in the upcoming lessons.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;checked&lt;/code&gt; 属性用于指定默认选中的复选框。 &lt;code&gt;checked&lt;/code&gt; 属性不需要值。 如果它存在，则默认选中该复选框。 如果它不存在，复选框将被取消选中。 这被称为布尔属性。 在学习 JavaScript 部分时，你将学习更多有关布尔的知识。&lt;/li&gt;&#xA;&lt;li&gt;在 HTML 中会遇到几种常见的布尔属性，例如 &lt;code&gt;disabled&lt;/code&gt;、&lt;code&gt;readonly&lt;/code&gt; 和 &lt;code&gt;required&lt;/code&gt;。 这些属性用于指定元素的状态，如禁用、只读或必填。&lt;/li&gt;&#xA;&lt;li&gt;这是一个默认被禁用的文本 &lt;code&gt;input&lt;/code&gt; 元素示例。现在从 &lt;code&gt;input&lt;/code&gt; 元素中移除 &lt;code&gt;disabled&lt;/code&gt; 属性，你将看到该 &lt;code&gt;input&lt;/code&gt; 不再默认被禁用。你现在应该能够点击它并在字段内输入内容。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;input&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;disabled&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;7link元素&#34;&gt;&lt;a href=&#34;#7link%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;7.link元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;link&lt;/code&gt; 元素用于链接样式表和网站图标等外部资源。 以下是为外部 CSS 文件使用 &lt;code&gt;link&lt;/code&gt; 元素的基本语法：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;./styles.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;rel&lt;/code&gt; 属性用于指定链接资源与 HTML 文档之间的关系。 在这种情况下，我们需要指定该链接资源为 &lt;code&gt;stylesheet&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;将 HTML 和 CSS 分置于不同的文件中被视为最佳实践。 开发人员将使用 &lt;code&gt;link&lt;/code&gt; 元素来链接外部 CSS 文件，而不是在 HTML 文档中编写所有内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;href&lt;/code&gt; 属性用于指定外部资源 URL 的位置。&lt;/li&gt;&#xA;&lt;li&gt;示例中的 &lt;code&gt;dot&lt;/code&gt; 后跟一个斜杠，是告诉计算机在当前文件夹或目录中查找 &lt;code&gt;styles.css&lt;/code&gt; 文件。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;link&lt;/code&gt; 元素应放在 &lt;code&gt;head&lt;/code&gt; 元素内，如下例所示：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;charset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Examples of the link element&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;./styles.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;通常情况下，你会在专业代码库中看到多个 &lt;code&gt;link&lt;/code&gt; 元素，它们链接到不同的样式表、字体和图标。 下面是一个使用 &lt;code&gt;link&lt;/code&gt; 元素链接到外部 Google 字体 &lt;em&gt;Playwright Cuba&lt;/em&gt; 的示例：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;preconnect&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.googleapis.com&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;preconnect&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.gstatic.com&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;crossorigin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.googleapis.com/css2?family=Playwrite+CU:wght@100..400&amp;amp;display=swap&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Google 字体是一套免费的开源自定义字体，你可以在任何项目中使用。 你可以选择要使用的字体，Google 会为你提供必要的 HTML 和 CSS 代码。 在这个示例中，&lt;code&gt;rel&lt;/code&gt; 属性的 &lt;code&gt;preconnect&lt;/code&gt; 值告诉浏览器，要与 &lt;code&gt;href&lt;/code&gt; 属性中指定的值提前建立连接。 这样做是为了加快这些外部资源的加载时间。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;link&lt;/code&gt; 元素的另一个常见用例是链接到图标。 下面是一个链接到 favicon 的示例：&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;icon&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;favicon.ico&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;favicon 是 favorite icon（收藏夹图标）的缩写，通常是在浏览器标签（页）中显示在网站标题旁边的小图标。许多网站会使用 favicon 来显示他们的品牌图标。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;8-html-模板&#34;&gt;&lt;a href=&#34;#8-html-%e6%a8%a1%e6%9d%bf&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;8. HTML 模板&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;HTML 模板就像一个现成的网页模板。模板包括每个 HTML 文档所需的基本结构和重要元素。 它可以节省你的时间，并有助于确保你的页面设置正确。 这是一个示例：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;lang&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;charset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;freeCodeCamp&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;./styles.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;让我们来分析一下这个模板的关键部分。 首先，是 &lt;code&gt;DOCTYPE&lt;/code&gt; 声明：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;它会告诉浏览器你使用的 HTML 版本。 接下来，是 &lt;code&gt;html&lt;/code&gt; 标签：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;lang&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c&#34;&gt;&amp;lt;!--All other elements go inside here--&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;这包括你所有的内容，并可指定页面语言。 在 &lt;code&gt;html&lt;/code&gt; 标记内，你会发现两个主要部分——一个 &lt;code&gt;head&lt;/code&gt; 和一个 &lt;code&gt;body&lt;/code&gt;：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;lang&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;&amp;lt;!--Important metadata goes here--&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;&amp;lt;!--Headings, paragraphs, images, etc. go inside here--&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;head&lt;/code&gt; 部分包含重要的幕后信息：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;charset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Document Title Goes Here&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;./styles.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;网站的元数据，包含在 &lt;code&gt;meta&lt;/code&gt; 元素中，其中包含字符编码等详细信息，以及 Twitter 等网站应如何预览你的页面链接。 你网站的标题，可在 &lt;code&gt;title&lt;/code&gt; 元素中找到，它决定了显示在浏览器标签页或窗口中的文本。 最后，你通常会在 &lt;code&gt;head&lt;/code&gt; 部分使用 &lt;code&gt;link&lt;/code&gt; 元素链接页面的外部样式表。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;body&lt;/code&gt; 部分是放置所有内容的地方：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;I am a main title&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Example paragraph text&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;9utf-8-字符编码&#34;&gt;&lt;a href=&#34;#9utf-8-%e5%ad%97%e7%ac%a6%e7%bc%96%e7%a0%81&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;9.UTF-8 字符编码&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;UTF-8，或 UCS 转换格式 8，是一种在网络上广泛使用的标准化字符编码。 字符编码是计算机将字符存储为数据的方法。 从本质上讲，网页上的所有文本都是以一个或多个字节形式存储的字符序列。 在计算中，字节是由 8 位或二进制数字组成的数据单位。 UTF-8 支持 Unicode 字符集中的所有字符，包括所有书写系统、语言和技术符号中的字符和符号。 下面是使用带有将字符编码设置为 &lt;code&gt;UTF-8&lt;/code&gt; 的 &lt;code&gt;charset&lt;/code&gt; 属性的 &lt;code&gt;meta&lt;/code&gt; 元素的示例：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;charset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;通过将字符编码设置为 UTF-8，可确保页面上正确显示重音 &lt;code&gt;&amp;quot;e&amp;quot;&lt;/code&gt; 字符（&lt;code&gt;é&lt;/code&gt;）。 下面是使用 UTF-8 字符编码的扩展代码示例：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;lang&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;charset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Examples of the UTF-8 encoding&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Café&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;对于创建的每个新项目，你都应包含将 &lt;code&gt;charset&lt;/code&gt; 属性设置为 &lt;code&gt;UTF-8&lt;/code&gt; 的 &lt;code&gt;meta&lt;/code&gt; 元素。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;10-注释&#34;&gt;&lt;a href=&#34;#10-%e6%b3%a8%e9%87%8a&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;10. 注释&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-HTML&#34; data-lang=&#34;HTML&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!--`, contains any number of lines of text, and ends with `--&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;11-main元素&#34;&gt;&lt;a href=&#34;#11-main%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;11. main元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;HTML5 有一些元素能够标识不同的内容区域。 这些元素能让你的 HTML 易于阅读，并有助于搜索引擎优化（SEO）和无障碍。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;main&lt;/code&gt; 元素用于表示 HTML 文档正文的主要内容。 &lt;code&gt;main&lt;/code&gt; 元素里的内容应该是文档中唯一的，不应该在文档的其他部分重复。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Most important content of the document&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Some more important content...&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;通过在 &lt;code&gt;h1&lt;/code&gt; 元素前添加 &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; 开始标签，并在 &lt;code&gt;p&lt;/code&gt; 元素后添加 &lt;code&gt;&amp;lt;/main&amp;gt;&lt;/code&gt; 结束标签，来识别此页面的主要部分。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;12ul元素&#34;&gt;&lt;a href=&#34;#12ul%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;12.ul元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;要创建一个无序项目列表，你可以使用 &lt;code&gt;ul&lt;/code&gt; 元素。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;li&lt;/code&gt; 元素用于在有序或无序列表中创建列表项。&lt;/li&gt;&#xA;&lt;li&gt;这是一个无序列表中列表项的示例：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ul&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;milk&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;cheese&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ul&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;13figure元素&#34;&gt;&lt;a href=&#34;#13figure%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;13.figure元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;figure&lt;/code&gt; 元素代表自包含的内容，允许你将图像与标题相关联。&lt;/li&gt;&#xA;&lt;li&gt;图题（&lt;code&gt;figcaption&lt;/code&gt;）元素用于添加标题来描述 &lt;code&gt;figure&lt;/code&gt; 元素中包含的图像。&lt;/li&gt;&#xA;&lt;li&gt;这是一个标题为 &lt;code&gt;A cute cat&lt;/code&gt; 的 &lt;code&gt;figcaption&lt;/code&gt; 的元素示例：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;figure&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;image.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;A description of the image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;figcaption&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;A cute cat&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;figcaption&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;figure&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;要强调一个特定的单词或短语，你可以使用 &lt;code&gt;em&lt;/code&gt; 元素。&lt;/li&gt;&#xA;&lt;li&gt;通过将 &lt;code&gt;figcaption&lt;/code&gt; 元素中的单词包裹在强调 &lt;code&gt;em&lt;/code&gt; 元素中来强调它。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;14ol元素&#34;&gt;&lt;a href=&#34;#14ol%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;14.ol元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;有序列表（&lt;code&gt;ol&lt;/code&gt;）的代码类似于无序列表，但有序列表中的列表项在显示时是编号的。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;15em元素斜体strong元素加粗&#34;&gt;&lt;a href=&#34;#15em%e5%85%83%e7%b4%a0%e6%96%9c%e4%bd%93strong%e5%85%83%e7%b4%a0%e5%8a%a0%e7%b2%97&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;15.em元素斜体,strong元素加粗&#xA;&lt;/h2&gt;&lt;h2 id=&#34;16footer元素&#34;&gt;&lt;a href=&#34;#16footer%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;16.footer元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;footer&lt;/code&gt; 元素用于定义文档或章节的页脚。 页脚通常包含文档作者信息、版权数据、使用条款链接、联系信息等。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;17div-元素&#34;&gt;&lt;a href=&#34;#17div-%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;17.Div 元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;div&lt;/code&gt; 元素用作容器以分组其他元素。&lt;/li&gt;&#xA;&lt;li&gt;这是一个 &lt;code&gt;div&lt;/code&gt; 元素的示例。为你的 &lt;code&gt;div&lt;/code&gt; 元素添加另一个段落元素，并在预览窗口中查看更改。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Example paragraph element.&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;当你想要将一组&lt;code&gt;将共享一组 CSS 样式的&lt;/code&gt;超文本标记语言元素分组时，你主要会使用 &lt;code&gt;div&lt;/code&gt; 元素。你将在后续的课程和研讨会中学习更多关于 CSS 的内容。&lt;/li&gt;&#xA;&lt;li&gt;尽管 &lt;code&gt;div&lt;/code&gt; 元素在实际代码库中常被使用，你应当小心不要过度使用它。有些时候，使用其他元素会更合适。&lt;/li&gt;&#xA;&lt;li&gt;例如，如果你想将内容划分为多个部分，那么使用 &lt;code&gt;section&lt;/code&gt; 元素比使用 &lt;code&gt;div&lt;/code&gt; 元素更合适。&lt;/li&gt;&#xA;&lt;li&gt;在第一个 &lt;code&gt;section&lt;/code&gt; 元素下方添加另一个 &lt;code&gt;section&lt;/code&gt; 元素。然后在该 &lt;code&gt;section&lt;/code&gt; 元素内添加 &lt;code&gt;h2&lt;/code&gt; 和 &lt;code&gt;p&lt;/code&gt; 元素。你可以使用任何你喜欢的文本，并且你将在预览窗口中看到更改。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Mammals&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Mammals are warm-blooded animals with fur or hair. Most give birth to live&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    young.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ul&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Lion&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Elephant&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Dolphin&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ul&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;section&lt;/code&gt;元素相比&lt;code&gt;div&lt;/code&gt;元素没有语义而言有语义。语义是语言中单词或短语的含义。 HTML 是一种语言，元素也有自己的语义含义。 因此，这意味着如果你使用了 &lt;code&gt;section&lt;/code&gt; 元素， 浏览器将获取其语义含义并理解应将其视为一个独立部分——无论是在台式机上、移动设备上，还是其他任何设备上。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;18id-和类&#34;&gt;&lt;a href=&#34;#18id-%e5%92%8c%e7%b1%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;18.ID 和类&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;id&lt;/code&gt; 属性为 HTML 元素添加唯一标识符。&lt;/li&gt;&#xA;&lt;li&gt;这是一个带有 &lt;code&gt;id&lt;/code&gt; 为 &lt;code&gt;title&lt;/code&gt; 的 &lt;code&gt;h1&lt;/code&gt; 元素示例。&lt;/li&gt;&#xA;&lt;li&gt;在 &lt;code&gt;h1&lt;/code&gt; 元素下方，添加一个 &lt;code&gt;h2&lt;/code&gt; 元素，其 &lt;code&gt;id&lt;/code&gt; 设置为 &lt;code&gt;&amp;quot;subtitle&amp;quot;&lt;/code&gt;。你可以为 &lt;code&gt;h2&lt;/code&gt; 编写任意文本，并且你将在预览窗口中看到更改。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Movie Review Page&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;你可以在你的 JavaScript 或 CSS 中引用 &lt;code&gt;title&lt;/code&gt; 的 &lt;code&gt;id&lt;/code&gt; 名称。以下是一个 CSS 示例，引用 &lt;code&gt;title&lt;/code&gt; 的 &lt;code&gt;id&lt;/code&gt; 来将文本 &lt;code&gt;color&lt;/code&gt; 更改为 &lt;code&gt;red&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：在此交互示例中已为你提供了一些 CSS。不要担心尝试理解这些 CSS 代码，因为你将在后续课程中学习更多相关内容。但如果你想看到文本颜色变为蓝色，点击 &lt;code&gt;styles.css&lt;/code&gt; 标签（页），并将 &lt;code&gt;color: red;&lt;/code&gt; 改为 &lt;code&gt;color: blue;&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;lang&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;charset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Review page Example&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;./styles.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Movie Review Page&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;red&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;在 &lt;code&gt;title&lt;/code&gt;之前的&lt;code&gt;#&lt;/code&gt;,告诉计算你你想指向一个拥有对应&lt;code&gt;id&lt;/code&gt;的值. &lt;code&gt;id&lt;/code&gt;值不能重复. 关于 &lt;code&gt;id&lt;/code&gt; 值的另一个需要注意的事情是它们不能有空格。 这是一个是将单词 &lt;code&gt;main&lt;/code&gt; 和 &lt;code&gt;heading&lt;/code&gt; 应用于一个 &lt;code&gt;id&lt;/code&gt; 属性值的示例：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;main heading&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Main heading&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;浏览器会将此空格视为 &lt;code&gt;id&lt;/code&gt; 的一部分，这将在样式和脚本处理中导致不必要的问题。&lt;code&gt;id&lt;/code&gt; 属性值应仅包含字母、数字、下划线和破折号。&lt;/li&gt;&#xA;&lt;li&gt;与 &lt;code&gt;id&lt;/code&gt; 属性不同，&lt;code&gt;class&lt;/code&gt; 属性值不需要唯一，可以包含空格。&lt;/li&gt;&#xA;&lt;li&gt;这是一个将名为 &lt;code&gt;box&lt;/code&gt; 的类应用到 &lt;code&gt;div&lt;/code&gt; 元素的示例。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;box&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;如果你想为一个元素添加多个类名，可以通过空格分隔这些名称来实现。下面是一个将多个类应用到 &lt;code&gt;div&lt;/code&gt; 元素的更新示例。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;box red-box&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;这是为多个 &lt;code&gt;div&lt;/code&gt; 元素应用多个类的另一个示例。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：在此交互示例中已为你提供了一些 CSS。不要担心尝试理解 CSS 代码，因为你将在后续课程中学习更多相关内容。点击 &lt;code&gt;styles.css&lt;/code&gt; 标签（页），并将 &lt;code&gt;background-color: red;&lt;/code&gt; 改为 &lt;code&gt;background-color: black;&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;lang&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;charset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Colored boxes example&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;./styles.css&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;box red-box&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;box blue-box&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;box red-box&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;box blue-box&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;box&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;red-box&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;background-color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;red&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;blue-box&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;background-color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;blue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;那么，回顾一下，你什么时候应该使用 &lt;code&gt;id&lt;/code&gt; 而不是 &lt;code&gt;class&lt;/code&gt;？ 当你希望将一组样式应用于许多元素时，最好使用类。 如果要针对特定的元素，最好使用 &lt;code&gt;id&lt;/code&gt;，因为这些值需要是唯一的。&lt;/p&gt;&#xA;&lt;h2 id=&#34;19html-实体&#34;&gt;&lt;a href=&#34;#19html-%e5%ae%9e%e4%bd%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;19.HTML 实体&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;HTML 实体或字符引用是用于表示 HTML 中保留字符的一组字符。&lt;/li&gt;&#xA;&lt;li&gt;假设你想在屏幕上显示文本 &lt;code&gt;This is an &amp;lt;img/&amp;gt; element&lt;/code&gt;。如果你使用当前编辑器中的代码，它不会显示预期的结果。即使你为示例添加了 &lt;code&gt;src&lt;/code&gt; 和 &lt;code&gt;alt&lt;/code&gt; 属性，它也会在段落中间显示一张图像，而不是预期的结果。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;This is an &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt; element&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;当超文本标记语言解析器看到小于号（&lt;code&gt;&amp;lt;&lt;/code&gt;）符号后跟一个超文本标记语言标签名称时，它会将其解释为一个超文本标记语言元素。这就是为什么你在屏幕上没有得到期望的 &lt;code&gt;This is an &amp;lt;img/&amp;gt; element&lt;/code&gt; 结果。&lt;/li&gt;&#xA;&lt;li&gt;为了解决此问题，你可以使用超文本标记语言实体。以下是使用正确的超文本标记语言实体表示小于（&lt;code&gt;&amp;lt;&lt;/code&gt;）和大于（&lt;code&gt;&amp;gt;&lt;/code&gt;）符号的更新示例。现在你应该在屏幕上看到 &lt;code&gt;This is an &amp;lt;img/&amp;gt; element&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;This is an &lt;span class=&#34;ni&#34;&gt;&amp;amp;lt;&lt;/span&gt;img /&lt;span class=&#34;ni&#34;&gt;&amp;amp;gt;&lt;/span&gt; element&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;amp;lt;&lt;/code&gt;代表&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;amp;gt;&lt;/code&gt;代表&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;这些类型的字符引用被称为命名字符引用。 命名字符引用用(&lt;code&gt;&amp;amp;&lt;/code&gt;)开头,用(&lt;code&gt;;&lt;/code&gt;)结尾. 通过使用命名字符引用，HTML 解析器不会将其与实际的 HTML 元素混淆。&lt;/li&gt;&#xA;&lt;li&gt;另一种类型的字符引用是十进制数字引用。 这个字符引用以一个与号和哈希符号（&lt;code&gt;#&lt;/code&gt;）开头，后面跟一个或多个十进制数字，后面跟一个分号。&lt;/li&gt;&#xA;&lt;li&gt;下面是使用小于符号的十进制数字引用的示例。&#xA;启用交互式编辑器并更改代码以查看不同的符号。你可以使用 &lt;code&gt;&amp;amp;#169;&lt;/code&gt; 表示版权符号，©使用 &lt;code&gt;&amp;amp;#174;&lt;/code&gt; 表示注册商标符号。® &amp;lt; 表示&amp;lt;&lt;/li&gt;&#xA;&lt;li&gt;最后一种类型的字符引用是十六进制数字引用。 这个字符引用以一个与号、哈希符号和字母 &lt;code&gt;x&lt;/code&gt; 开头。 然后，后面跟一个或多个 ASCII 十六进制数字，并以分号结束。&lt;/li&gt;&#xA;&lt;li&gt;这是使用小于符号的十六进制数字引用的示例。&lt;/li&gt;&#xA;&lt;li&gt;启用交互式编辑器并更改代码以查看不同的符号。你可以使用 &lt;code&gt;&amp;amp;#x20AC;&lt;/code&gt; 表示欧元符号€，使用 &lt;code&gt;&amp;amp;#x03A9;&lt;/code&gt; 表示希腊大写字母欧米茄符号Ω。&amp;lt; &amp;lt;&lt;/li&gt;&#xA;&lt;li&gt;&amp;amp;是&amp;amp;的转义字符&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;20-script元素&#34;&gt;&lt;a href=&#34;#20-script%e5%85%83%e7%b4%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;20. Script元素&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;下面是一个在超文本标记语言文档中使用 &lt;code&gt;script&lt;/code&gt; 元素的示例&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// alert(&amp;#34;Welcome to freeCodeCamp&amp;#34;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;虽然从技术上讲，你可以在 &lt;code&gt;script&lt;/code&gt; 标签中编写所有 JavaScript 代码，但最佳实践是链接到外部 JavaScript 文件。 这是一个使用 &lt;code&gt;script&lt;/code&gt; 元素链接到外部 JavaScript 文件的例子：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;path-to-javascript-file.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;src&lt;/code&gt;标签被用于确定外部JavaScript文件的地址. 不鼓励将所有 JavaScript 放在 HTML 文档中的原因是关注点分离。 关注点分离是一种设计原则，将程序分成不同的部分，每个部分处理一个单独的关注点。 在这种情况下，我们希望将 JavaScript 代码与 HTML 代码分开。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;21&#34;&gt;&lt;a href=&#34;#21&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;21.&#xA;&lt;/h2&gt;&lt;h2 id=&#34;22&#34;&gt;&lt;a href=&#34;#22&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;22.&#xA;&lt;/h2&gt;&lt;h2 id=&#34;23&#34;&gt;&lt;a href=&#34;#23&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;23.&#xA;&lt;/h2&gt;&lt;h2 id=&#34;24&#34;&gt;&lt;a href=&#34;#24&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;24.&#xA;&lt;/h2&gt;&lt;h2 id=&#34;25&#34;&gt;&lt;a href=&#34;#25&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;25.&#xA;&lt;/h2&gt;</description>
        </item><item>
            <title>🎉 第一篇博客：搭建个人主页的全新博客版块</title>
            <link>https://largeoyos.github.io/post/hello-world/</link>
            <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/hello-world/</guid>
            <description>&lt;p&gt;在今天（也就是2026年4月25日），我终于为自己的个人主页 &lt;code&gt;largeoyos.github.io&lt;/code&gt; 添加了完整的博客功能！&lt;/p&gt;&#xA;&lt;p&gt;以前我的主页主要是用来导航到各种不同的有趣项目。但一直希望能有一个简单的、轻量级的基于 Markdown 的纯前端动态渲染博客。&lt;/p&gt;&#xA;&lt;h2 id=&#34;这个博客有哪些功能&#34;&gt;&lt;a href=&#34;#%e8%bf%99%e4%b8%aa%e5%8d%9a%e5%ae%a2%e6%9c%89%e5%93%aa%e4%ba%9b%e5%8a%9f%e8%83%bd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;这个博客有哪些功能？&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;原生的 Markdown 解析&lt;/strong&gt;：你看到的加粗、代码块等都是直接从 &lt;code&gt;.md&lt;/code&gt; 文件中解析出的。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;自动化时间排序&lt;/strong&gt;：通过一个 &lt;code&gt;posts.json&lt;/code&gt; 索引，主页总是显示最新动态。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;标签/分类系统&lt;/strong&gt;：可以快捷过滤想要阅读的技术文章或碎碎念。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;未来计划&#34;&gt;&lt;a href=&#34;#%e6%9c%aa%e6%9d%a5%e8%ae%a1%e5%88%92&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;未来计划&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;写更多 CS:APP 的避坑指南&lt;/li&gt;&#xA;&lt;li&gt;把博客扩展出评论系统&lt;/li&gt;&#xA;&lt;li&gt;用 AI 让生成博客更加自动化&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;感谢来到我的数字空间。如果你也是一名 Hacker，欢迎探索！&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>🐧 Linux 常用命令与知识备忘</title>
            <link>https://largeoyos.github.io/post/linux/</link>
            <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/linux/</guid>
            <description>&lt;ul&gt;&#xA;&lt;li&gt;可以通过:man 指令名 来⾃⾏了解指令语法&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;1nano&#34;&gt;&lt;a href=&#34;#1nano&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1.nano&#xA;&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;nano  hello.c&#xA;&#x9;完成程序&#xA;&#x9;Ctrl+O保存&#xA;&#x9;Enter确认文件名&#xA;&#x9;Ctrl+X退出nano&#xA;gcc hello.c -o hello 编译&#xA;./hello运行&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;2文件目录篇&#34;&gt;&lt;a href=&#34;#2%e6%96%87%e4%bb%b6%e7%9b%ae%e5%bd%95%e7%af%87&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2.文件目录篇&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;以根⽬录算起的绝对路径以 /开头，以家⽬录算起的绝对路径以 ~开头，相对路径不需要 /或 ～开头。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;举例：⼀个名为ustc的⽤⼾在他的家⽬录下创建了⼀个名为os的⽬录，在os⽬录下⾯⼜创建了⼀个名为lab1的⽬录，则该lab1⽬录可以表⽰为：&#xA;/home/ustc/os/lab1&#xA;~/os/lab1&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;如果⼯作⽬录在家⽬录：os/lab1&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;如果⼯作⽬录在os⽬录：lab1&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;ls&lt;/strong&gt; [参数] [name]&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;ls / 列出所有根目录&lt;/li&gt;&#xA;&lt;li&gt;ls *.txt 列出所有txt文件&lt;/li&gt;&#xA;&lt;li&gt;参数&#xA;&lt;ul&gt;&#xA;&lt;li&gt;-a 显示所有文件及目录&lt;/li&gt;&#xA;&lt;li&gt;-d 只列出目录&lt;/li&gt;&#xA;&lt;li&gt;-l 长格式,详细解释后面有&lt;/li&gt;&#xA;&lt;li&gt;-r 逆序排序&lt;/li&gt;&#xA;&lt;li&gt;-t&lt;/li&gt;&#xA;&lt;li&gt;-A&lt;/li&gt;&#xA;&lt;li&gt;-F&lt;/li&gt;&#xA;&lt;li&gt;-R 递归处理，显示所有目录及子文件&lt;/li&gt;&#xA;&lt;li&gt;-la等价于 ll&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;ls- lh: (h让total下的数据变成k,m等易于读的大小)&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;total 4.0K&#xA;-rw-rw-r-- 1 largeoyos largeoyos 9 Mar  4 16:59 readme.txt&#xA;-rw-rw-r-- 1 largeoyos largeoyos 0 Mar  4 16:55 study.txt&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;文件类型:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;普通文件:文本文件：ASCII码形式存储，以-开头，如：&#xA;-rw-r&amp;ndash;r&amp;ndash;1 root root 39599 Mar 8 12:15 x.sh&lt;/li&gt;&#xA;&lt;li&gt;目录文件：以d开头，如：&#xA;drwxr-xr-x 2 root root 4096 Aug 2 2006 bin&lt;/li&gt;&#xA;&lt;li&gt;设备文件 : 块设备文件：以b开头( 硬盘（HDD）固态硬盘（SSD）U盘 SD 卡)&#xA;brw-rw&amp;mdash;-1 root disk 3, 1 Jan 30 2003 /dev/hda1&#xA;字符设备文件：以c开头 (键盘 鼠标 串口（UART）控制台（TTY）打印机。)&#xA;crw&amp;mdash;&amp;mdash;-1 root root 4, 1 Jul 31 13:49 /dev/tty1&lt;/li&gt;&#xA;&lt;li&gt;链接文件: 存放文件系统通向文件的路径，以l开头&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;文件权限&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-rw-rw-r--&lt;/code&gt; (权限控制)&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;第一个字符 &lt;code&gt;-&lt;/code&gt; 表示这是一个&lt;strong&gt;普通文件&lt;/strong&gt;（如果是 &lt;code&gt;d&lt;/code&gt; 则表示目录）。&lt;/li&gt;&#xA;&lt;li&gt;后面的字符三个一组：&lt;code&gt;rw-&lt;/code&gt; (你)、&lt;code&gt;rw-&lt;/code&gt; (你所在的组)、&lt;code&gt;r--&lt;/code&gt; (其他人)。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;r&lt;/code&gt;=读取，&lt;code&gt;w&lt;/code&gt;=写入，&lt;code&gt;-&lt;/code&gt;=没权限。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;1&lt;/code&gt; (链接数)&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;表示有多少个文件名指向这个数据块。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;largeoyos&lt;/code&gt; (所有者)&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;表示这个文件属于你（你的用户名）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;largeoyos&lt;/code&gt; (所属组)&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;表示这个文件属于哪个用户组。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;权限 (-rw-rw-r&amp;ndash;)&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;链接数&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;所有者&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;组&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;大小&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;修改时间&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;文件名&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;文件类型与权限&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;largeoyos&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;largeoyos&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Mar 4 16:54&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;readme.txt&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;pwd&lt;/strong&gt; [&amp;ndash;help] [&amp;ndash;version]&#xA;&lt;ul&gt;&#xA;&lt;li&gt;pwd 查看当前所在目录&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;cd&lt;/strong&gt; 切换工作目录&#xA;&lt;ul&gt;&#xA;&lt;li&gt;cd .. 返回上一级目录&lt;/li&gt;&#xA;&lt;li&gt;cd - 返回上一次所在目录&lt;/li&gt;&#xA;&lt;li&gt;cd ../../../ 回退三级&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;mkdir&lt;/strong&gt; 创建新目录&#xA;&lt;ul&gt;&#xA;&lt;li&gt;mkdir&#xA;-p folder/test (folder目录下建立test文件夹,加了-p参数后,若folder不存在则直接新建)&#xA;-m 设置目录权限 :mkdir -m 700 3&#xA;常见的权限组合表&#xA;read:4; write:2;execute:1;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;数字&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;权限位&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;含义&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;777&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rwxrwxrwx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;所有人都能干任何事（很不安全！）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;755&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rwxr-xr-x&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;我全能干，别人只能看和进（程序的默认权限）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;644&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rw-r--r--&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;我能读写，别人只能看（普通文件的默认权限）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;600&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rw-------&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;只有我能读写（&lt;strong&gt;你的 .pem 密钥文件就该设成这样&lt;/strong&gt;）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;rmdir&lt;/strong&gt; 删除空目录 -p 当子目录被删除后使他成为空目录的话则一并删除&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;rm 删除一个文件或目录 rm [-rf] name&#xA;-i 删除前逐一询问确认。&#xA;-f 即使原档案属性设为唯读，亦直接删除，无需逐一确认。&#xA;-r 将目录及以下之档案亦逐一删除。&#xA;删除当前目录下的所有文件及目录，命令行为：&#xA;rm  -r  *&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;cp复制文件或目录  cp [-r] source dest&#xA;&lt;code&gt;-r&lt;/code&gt; 或 &lt;code&gt;-R&lt;/code&gt;：递归复制目录及其内容（用于复制目录）。 &lt;br&gt;&#xA;&lt;code&gt;-i&lt;/code&gt;：交互模式，覆盖前提示用户确认。&#xA;&lt;code&gt;-f&lt;/code&gt;：强制复制，覆盖目标文件而不提示。 &lt;br&gt;&#xA;&lt;code&gt;-v&lt;/code&gt;：显示详细的复制过程（verbose）。&#xA;&lt;code&gt;-p&lt;/code&gt;：保留文件的原始属性（如权限、时间戳等）。&#xA;&lt;code&gt;-a&lt;/code&gt;：归档模式，等同于 &lt;code&gt;-dpR&lt;/code&gt;，保留所有文件属性和递归复制目录。&#xA;&lt;code&gt;-u&lt;/code&gt;：仅当源文件比目标文件新时才复制（更新模式）。 &lt;br&gt;&#xA;&lt;code&gt;-l&lt;/code&gt;：创建硬链接而不是复制文件。&#xA;&lt;code&gt;-s&lt;/code&gt;：创建符号链接（软链接）而不是复制文件。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;mv&lt;/strong&gt; 移动或重命名文件或目录  mv source dest&#xA;-i：覆盖现存文件时提示，建议打开此选项，避免误操作覆盖掉目标文件&#xA;-f：不提示直接覆盖存在的目标文件&#xA;&lt;strong&gt;-n&lt;/strong&gt;: 不要覆盖任何已存在的文件或目录。&#xA;&lt;strong&gt;-u&lt;/strong&gt;：当源文件比目标文件新或者目标文件不存在时，才执行移动操作。&#xA;&lt;strong&gt;-b&lt;/strong&gt;: 当目标文件或目录存在时，在执行覆盖前，会为其创建一个备份。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;chmod&lt;/strong&gt; 改变文件或目录的权限&#xA;MODE模式：&#xA;u：文件所属帐户&#xA;g：文件所属组&#xA;o：不同组的帐户&#xA;a：所有帐户&#xA;+：添加权限&#xA;-：去除权限&#xA;=：使得指定文件只具有这些权限&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;  使文件file各用户都拥有完全权限： chmod 777 file&#xA;  允许所有人读file，但只有拥有者能改变它： chmod 644 file&#xA;  给所有人增加写权： chmod a+w file&#xA;  对组级和其他用户除去写权和读权： chmod o-wr,g-wr file&#xA;  建立其他用户的只读权： chmod o=r file&#xA;  注意控制权限，尽量不要给其他用户修改删除文件等权限&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ln :为某一个文件在另外一个位置建立一个同步的链接&#xA;ln -s /目标文件夹的完整路径 /快捷方式存放的路径&#xA;-s 代表软连接&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;lsblk 查看磁盘样貌&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS&#xA;loop0    7:0    0  73.9M  1 loop /snap/core22/2045&#xA;loop1    7:1    0     4K  1 loop /snap/bare/5&#xA;loop2    7:2    0 245.1M  1 loop /snap/firefox/6565&#xA;loop3    7:3    0 251.6M  1 loop /snap/firefox/7836&#xA;loop4    7:4    0  16.4M  1 loop /snap/firmware-updater/216&#xA;loop5    7:5    0   516M  1 loop /snap/gnome-42-2204/202&#xA;loop6    7:6    0  18.5M  1 loop /snap/firmware-updater/210&#xA;loop7    7:7    0  91.7M  1 loop /snap/gtk-common-themes/1535&#xA;loop8    7:8    0  10.8M  1 loop /snap/snap-store/1270&#xA;loop9    7:9    0  49.3M  1 loop /snap/snapd/24792&#xA;loop10   7:10   0  48.1M  1 loop /snap/snapd/25935&#xA;loop11   7:11   0   576K  1 loop /snap/snapd-desktop-integration/315&#xA;loop12   7:12   0   576K  1 loop /snap/snapd-desktop-integration/343&#xA;sda      8:0    0    60G  0 disk &#xA;├─sda1   8:1    0     1M  0 part &#xA;└─sda2   8:2    0    60G  0 part /&#xA;sr0     11:0    1   5.9G  0 rom  /media/largeoyos/Ubuntu 24.04.3 LTS amd64&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;sda:物理磁盘&lt;/li&gt;&#xA;&lt;li&gt;sda1:用于引导系统&lt;/li&gt;&#xA;&lt;li&gt;后面的依次叫sdb&amp;hellip;&lt;/li&gt;&#xA;&lt;li&gt;RO:只读&lt;/li&gt;&#xA;&lt;li&gt;RM:可插拔&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h5 id=&#34;根目录文件详解&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e7%9b%ae%e5%bd%95%e6%96%87%e4%bb%b6%e8%af%a6%e8%a7%a3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;根目录文件详解&#xA;&lt;/h5&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;bin                home               mnt   sbin.usr-is-merged  usr&#xA;bin.usr-is-merged  lib                opt   snap                var&#xA;boot               lib64              proc  srv&#xA;cdrom              lib.usr-is-merged  root  swap.img&#xA;dev                lost+found         run   sys&#xA;etc                media              sbin  tmp&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h6 id=&#34;1-核心居住区你最常打交道的&#34;&gt;&lt;a href=&#34;#1-%e6%a0%b8%e5%bf%83%e5%b1%85%e4%bd%8f%e5%8c%ba%e4%bd%a0%e6%9c%80%e5%b8%b8%e6%89%93%e4%ba%a4%e9%81%93%e7%9a%84&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 核心居住区（你最常打交道的）&#xA;&lt;/h6&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/home&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;这是你的私人领地。&lt;/strong&gt; 你的桌面、下载、文档全都存在这里。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/root&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;超级管理员的家。&lt;/strong&gt; 它是系统老大（root 用户）的私人房间。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/tmp&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;临时存放处。&lt;/strong&gt; 软件运行时产生的临时垃圾会扔在这里，通常系统重启后这里会被清空。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;2-系统核心区相当于大楼的配电室和承重墙&#34;&gt;&lt;a href=&#34;#2-%e7%b3%bb%e7%bb%9f%e6%a0%b8%e5%bf%83%e5%8c%ba%e7%9b%b8%e5%bd%93%e4%ba%8e%e5%a4%a7%e6%a5%bc%e7%9a%84%e9%85%8d%e7%94%b5%e5%ae%a4%e5%92%8c%e6%89%bf%e9%87%8d%e5%a2%99&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. 系统核心区（相当于大楼的配电室和承重墙）&#xA;&lt;/h6&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/bin&lt;/code&gt; &amp;amp; &lt;code&gt;/sbin&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;命令存放地。&lt;/strong&gt; &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;cp&lt;/code&gt; 等基本命令就住在这里。带有 &lt;code&gt;s&lt;/code&gt; 的（sbin）通常是给管理员用的高级命令。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/etc&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;配置中心。&lt;/strong&gt; 所有的系统设置文件（比如网络配置、软件选项）都放在这。&lt;strong&gt;想改系统设置，通常就是改这里的某个文件。&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/boot&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;启动区。&lt;/strong&gt; 存放 Linux 内核和启动引导程序（GRUB）。没事别动它，动了系统可能就起不来了。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/usr&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;软件安装区。&lt;/strong&gt; 你以后安装的大部分用户级软件（像浏览器、播放器）的代码和数据都在这。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;3-设备与硬件区linux-的黑科技&#34;&gt;&lt;a href=&#34;#3-%e8%ae%be%e5%a4%87%e4%b8%8e%e7%a1%ac%e4%bb%b6%e5%8c%balinux-%e7%9a%84%e9%bb%91%e7%a7%91%e6%8a%80&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. 设备与硬件区（Linux 的“黑科技”）&#xA;&lt;/h6&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/dev&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;设备文件夹。&lt;/strong&gt; 在 Linux 看来，“一切皆文件”。你的硬盘、鼠标、键盘在这里都被映射成一个文件。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/media&lt;/code&gt; &amp;amp; &lt;code&gt;/mnt&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;外部设备挂载点。&lt;/strong&gt; 你插个 U 盘或者挂载第二个硬盘，它们的内容就会显示在这里。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/proc&lt;/code&gt; &amp;amp; &lt;code&gt;/sys&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;虚拟文件夹。&lt;/strong&gt; 它们不占用硬盘空间，而是内存里运行状态的实时反馈。比如你想看 CPU 信息，其实就是在读这里的文件。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;4-特殊文件&#34;&gt;&lt;a href=&#34;#4-%e7%89%b9%e6%ae%8a%e6%96%87%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4. 特殊文件&#xA;&lt;/h6&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;swap.img&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;虚拟内存文件。&lt;/strong&gt; 当你的物理内存不够用时，系统会把一部分硬盘当内存使。那个红叉是因为这个文件正在被系统锁定使用，普通人不能随便读写。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;3文件控制&#34;&gt;&lt;a href=&#34;#3%e6%96%87%e4%bb%b6%e6%8e%a7%e5%88%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3.文件控制&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;echo&lt;/strong&gt; 将文本输出到标准输出&#xA;&lt;ul&gt;&#xA;&lt;li&gt;echo &amp;ldquo;Hello World&amp;rdquo; 显示字符串&lt;/li&gt;&#xA;&lt;li&gt;echo 内容&amp;raquo;test.txt 追加内容进test.txt&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;cat&lt;/strong&gt; 将文件内容输出到屏幕&lt;/li&gt;&#xA;&lt;li&gt;touch xxx.txt :新建txt文件&lt;/li&gt;&#xA;&lt;li&gt;vim xxx.txt :创建后同时用vim打开&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;4进程控制&#34;&gt;&lt;a href=&#34;#4%e8%bf%9b%e7%a8%8b%e6%8e%a7%e5%88%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4.进程控制&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;kill&#xA;&lt;code&gt;-l&lt;/code&gt;：列出所有可用的信号。&#xA;&lt;code&gt;-s&lt;/code&gt;：发送特定的信号给目标进程，如 &lt;code&gt;-9&lt;/code&gt; 表示发送 KILL 信号，即强制终止进程。&#xA;常用的几个信号:&#xA;&lt;code&gt;SIGKILL&lt;/code&gt;（信号9）：立即结束进程，不能被捕获或忽略。&#xA;&lt;code&gt;SIGTERM&lt;/code&gt;（信号15）：正常结束进程，可以被捕获或忽略。&#xA;&lt;code&gt;SIGSTOP&lt;/code&gt;（信号19）：暂停进程，不能被捕获、忽略或结束。&#xA;&lt;code&gt;SIGCONT&lt;/code&gt;（信号18）：继续执行被暂停的进程。&#xA;&lt;code&gt;SIGINT&lt;/code&gt;（信号2）：通常是Ctrl+C产生的信号，可以被进程捕获或忽略。&#xA;如kill -9 686&lt;/li&gt;&#xA;&lt;li&gt;ps :任务管理器&#xA;&lt;code&gt;ps&lt;/code&gt;: 显示&lt;strong&gt;当前用户&lt;/strong&gt;在当前终端控制下的进程。考虑到用户通常想看不止当前用户和当前终端下的进程，所以不加参数的用法并不常用。&#xA;&lt;code&gt;ps aux&lt;/code&gt;: 展示所有用户所有进程的详细信息。注意，a前面带一个横线是严格意义上不正确的使用方法。&#xA;&lt;code&gt;ps -ef&lt;/code&gt;: 也是展示所有用户所有进程的详细信息。就输出结果而言和&lt;code&gt;ps aux&lt;/code&gt;无甚差别。&lt;/li&gt;&#xA;&lt;li&gt;shutdown -h now: Close the service&lt;/li&gt;&#xA;&lt;li&gt;hostname: Check the name of the host&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;5-通配符和输出过滤&#34;&gt;&lt;a href=&#34;#5-%e9%80%9a%e9%85%8d%e7%ac%a6%e5%92%8c%e8%be%93%e5%87%ba%e8%bf%87%e6%bb%a4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5. 通配符和输出过滤&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;? 通配符 :代表一个字符&lt;/li&gt;&#xA;&lt;li&gt;*通配符 :代表任意个字符&lt;/li&gt;&#xA;&lt;li&gt;[n1-n2]通配符 : 指定查询范围，n1 n2代表任意数字或字母&#xA;ls [a-z]*&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;6-安装命令&#34;&gt;&lt;a href=&#34;#6-%e5%ae%89%e8%a3%85%e5%91%bd%e4%bb%a4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;6. 安装命令&#xA;&lt;/h4&gt;&lt;h5 id=&#34;apt&#34;&gt;&lt;a href=&#34;#apt&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;apt&#xA;&lt;/h5&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;sudo apt update&lt;/strong&gt; 刷新电脑上的软件清单,看看有没有新版本的软件可以用&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;sudo apt install xxx :安装xxx应用&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;sudo apt remove xxx :卸载xxx应用&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;sudo apt-get install xxx -y :不带进度条的安装,常用于脚本,以保证输出格式&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;sudo software-properties-gtk 打开&amp;quot;软件与更新&amp;quot;程序&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;sudo apt install&lt;/strong&gt; open-vm-tools-desktop 安装VMware Tools 工具&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;disk 或gparted是磁盘工具&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h5 id=&#34;wegt&#34;&gt;&lt;a href=&#34;#wegt&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;wegt&#xA;&lt;/h5&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;wget是一个在命令行下下载文件的工具。常见的使用方法是：&lt;code&gt;wget [-O FILE] URL&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;例如，我们要下载 &lt;a class=&#34;link&#34; href=&#34;https://git-scm.com/images/logo@2x.png&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://git-scm.com/images/logo@2x.png&lt;/a&gt; 到本地。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;直接下载：&lt;code&gt;wget https://git-scm.com/images/logo@2x.png&lt;/code&gt;，文件名是&lt;a class=&#34;link&#34; href=&#34;mailto:logo@2x.png&#34; &gt;logo@2x.png&lt;/a&gt;。&lt;/li&gt;&#xA;&lt;li&gt;直接下载并重命名：&lt;code&gt;wget -O git.png https://git-scm.com/images/logo@2x.png&lt;/code&gt;，文件名是git.png。注：-O中的O表示字母O而不是数字0。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;注意，如果发现有同名文件，1所示方法会在文件名后面加上.1的后缀进行区分，而2所示方法会直接覆盖。&#xA;wget -O ./personal_file/git.png &lt;a class=&#34;link&#34; href=&#34;https://git-scm.com/images/logo@2x.png&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://git-scm.com/images/logo@2x.png&lt;/a&gt; 改变目录这样写&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;7-网络命令&#34;&gt;&lt;a href=&#34;#7-%e7%bd%91%e7%bb%9c%e5%91%bd%e4%bb%a4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;7. 网络命令&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;ping -c 4 192.168.119.1&lt;br&gt;&#xA;-c 限制次数 4是次数&lt;/li&gt;&#xA;&lt;li&gt;ip add: Check the ip address&lt;/li&gt;&#xA;&lt;li&gt;curl ifconfig.me :查询公网ip&lt;/li&gt;&#xA;&lt;li&gt;curl -4 ifconfig.me :强制查询ipv4地址&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&#xA;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&#xA;    inet 127.0.0.1/8 scope host lo&#xA;       valid_lft forever preferred_lft forever&#xA;    inet6 ::1/128 scope host noprefixroute &#xA;       valid_lft forever preferred_lft forever&#xA;2: eth0@if2919: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc noqueue state UP group default qlen 1000&#xA;    link/ether bc:24:11:70:94:ab brd ff:ff:ff:ff:ff:ff link-netnsid 0&#xA;    inet 172.31.55.232/16 brd 172.31.255.255 scope global eth0&#xA;       valid_lft forever preferred_lft forever&#xA;    inet6 2001:da8:d800:4bfc:be24:11ff:fe70:94ab/64 scope global dynamic mngtmpaddr noprefixroute &#xA;       valid_lft 86398sec preferred_lft 14398sec&#xA;    inet6 fe80::be24:11ff:fe70:94ab/64 scope link &#xA;       valid_lft forever preferred_lft forever&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h6 id=&#34;1-lo-loopback--回环网卡&#34;&gt;&lt;a href=&#34;#1-lo-loopback--%e5%9b%9e%e7%8e%af%e7%bd%91%e5%8d%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. &lt;code&gt;lo&lt;/code&gt; (Loopback / 回环网卡)&#xA;&lt;/h6&gt;&lt;ul&gt;&#xA;&lt;li&gt;这是虚拟的“本地网卡”，专门用于机器&lt;strong&gt;自己跟自己通信&lt;/strong&gt;。&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;关键地址：&lt;/strong&gt; &lt;code&gt;127.0.0.1&lt;/code&gt; (IPv4) 和 &lt;code&gt;::1&lt;/code&gt; (IPv6)。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;用途：&lt;/strong&gt; 无论你是否插网线，这个网卡永远存在。当你运行 Nginx 并在服务器本机输入 &lt;code&gt;curl 127.0.0.1&lt;/code&gt; 时，流量走的就是这个网卡。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;状态：&lt;/strong&gt; &lt;code&gt;UNKNOWN&lt;/code&gt; 在这里是正常的。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;2-eth0-ethernet--以太网卡&#34;&gt;&lt;a href=&#34;#2-eth0-ethernet--%e4%bb%a5%e5%a4%aa%e7%bd%91%e5%8d%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. &lt;code&gt;eth0&lt;/code&gt; (Ethernet / 以太网卡)&#xA;&lt;/h6&gt;&lt;ul&gt;&#xA;&lt;li&gt;这是你的&lt;strong&gt;主网卡&lt;/strong&gt;，负责服务器与外界（互联网或其他服务器）的通信。&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;内网 IP 地址：&lt;/strong&gt; &lt;code&gt;172.31.55.232&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;这是一个私有 IP。如果你的服务器在阿里云、腾讯云或校园网内，这是它在局域网里的身份。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;IPv6 地址：&lt;/strong&gt; &lt;code&gt;2001:da8:...&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;这是一个公网 IPv6 地址。如果你的网络环境支持 IPv6，别人可以通过这个长地址直接访问你的 Nginx。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;MAC 地址：&lt;/strong&gt; &lt;code&gt;bc:24:11:70:94:ab&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;这是网卡的物理硬件唯一标识。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;状态：&lt;/strong&gt; &lt;code&gt;UP&lt;/code&gt; 表示网卡正在工作且已连接。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;3-重点总结哪个地址最有用&#34;&gt;&lt;a href=&#34;#3-%e9%87%8d%e7%82%b9%e6%80%bb%e7%bb%93%e5%93%aa%e4%b8%aa%e5%9c%b0%e5%9d%80%e6%9c%80%e6%9c%89%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. 重点总结：哪个地址最有用？&#xA;&lt;/h6&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;如果你在服务器本机测试 Nginx&lt;/strong&gt;：请访问 &lt;code&gt;127.0.0.1&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;如果你在同一局域网的其他机器访问这台服务器&lt;/strong&gt;：请访问 &lt;code&gt;172.31.55.232&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;如果你想从外网（家里）访问这台服务器&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;通常需要一个&lt;strong&gt;公网 IP&lt;/strong&gt;（在云服务的管理后台可以看到，通常不直接显示在这个列表里，因为它是通过 NAT 映射的）。&lt;/li&gt;&#xA;&lt;li&gt;或者尝试使用那个以 &lt;code&gt;2001&lt;/code&gt; 开头的 &lt;strong&gt;IPv6 地址&lt;/strong&gt;（前提是你家里的网络也支持 IPv6）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;8-配置python环境&#34;&gt;&lt;a href=&#34;#8-%e9%85%8d%e7%bd%aepython%e7%8e%af%e5%a2%83&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;8. 配置python环境&#xA;&lt;/h4&gt;&lt;p&gt;再次进入&#xA;source myenv/bin/activate&#xA;再次退出&#xA;deactivate&#xA;快速找回&#xA;find ~ -name &amp;ldquo;activate&amp;rdquo; -type f&lt;/p&gt;&#xA;&lt;h4 id=&#34;9nginx&#34;&gt;&lt;a href=&#34;#9nginx&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;9.Nginx&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;sudo apt install nginx 安装并且自动启动&lt;/li&gt;&#xA;&lt;li&gt;本机用localhost进入,windows用 http://192.168.119.129&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;练习服务管理：&lt;/strong&gt; 你可以学习如何开启、关闭、重启服务：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;按下键盘上的 &lt;strong&gt;&lt;code&gt;q&lt;/code&gt;&lt;/strong&gt; 键即可回到命令行输入状态。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;操作&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;启动&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;sudo systemctl start nginx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;停止&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;sudo systemctl stop nginx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;重启&lt;/strong&gt; (应用重大更改)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;sudo systemctl restart nginx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;重载&lt;/strong&gt; (无缝应用配置更改)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;sudo systemctl reload nginx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;开机自启&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;sudo systemctl enable nginx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;检查状态&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;sudo systemctl status nginx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h5 id=&#34;查看端口占用&#34;&gt;&lt;a href=&#34;#%e6%9f%a5%e7%9c%8b%e7%ab%af%e5%8f%a3%e5%8d%a0%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;&lt;strong&gt;查看端口占用：&lt;/strong&gt;&#xA;&lt;/h5&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ss -tunlp | grep 80&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这会告诉你 80 端口（HTTP 默认端口）是否被 Nginx 占用了。&lt;/p&gt;&#xA;&lt;p&gt;tcp   LISTEN 0      511          0.0.0.0:80         0.0.0.0:*       &lt;br&gt;&#xA;tcp   LISTEN 0      511             [::]:80            [::]:*&lt;/p&gt;&#xA;&lt;h6 id=&#34;1-命令在查什么&#34;&gt;&lt;a href=&#34;#1-%e5%91%bd%e4%bb%a4%e5%9c%a8%e6%9f%a5%e4%bb%80%e4%b9%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 命令在查什么？&#xA;&lt;/h6&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ss&lt;/code&gt;&lt;/strong&gt;：查看系统的网络套接字（Sockets）统计信息。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-tunlp&lt;/code&gt;&lt;/strong&gt;：这是一个组合参数：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;t&lt;/code&gt;&lt;/strong&gt;: 显示 TCP 连接（网页浏览通常用 TCP）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;u&lt;/code&gt;&lt;/strong&gt;: 显示 UDP 连接。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;n&lt;/code&gt;&lt;/strong&gt;: 直接显示端口号（如 80），而不是服务名（如 http）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;l&lt;/code&gt;&lt;/strong&gt;: 只显示正在 &lt;strong&gt;LISTEN（监听）&lt;/strong&gt; 的端口。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;p&lt;/code&gt;&lt;/strong&gt;: 显示是哪个程序在占用这个端口。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;| grep 80&lt;/code&gt;&lt;/strong&gt;：在所有结果中过滤出包含 “80” 的行。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;2-结果解读&#34;&gt;&lt;a href=&#34;#2-%e7%bb%93%e6%9e%9c%e8%a7%a3%e8%af%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. 结果解读&#xA;&lt;/h6&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;结果内容&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;含义&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;0.0.0.0:80&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Nginx 正在监听 &lt;strong&gt;IPv4&lt;/strong&gt; 的 80 端口。&lt;code&gt;0.0.0.0&lt;/code&gt; 表示它接受来自&lt;strong&gt;任何 IP&lt;/strong&gt;（本地和局域网）的访问。&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;[::]:80&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Nginx 正在监听 &lt;strong&gt;IPv6&lt;/strong&gt; 的 80 端口。&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;LISTEN&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;状态正常。表示端口是开放的，随时可以处理请求。&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h5 id=&#34;绕路方案把-nginx-换到-8080-端口&#34;&gt;&lt;a href=&#34;#%e7%bb%95%e8%b7%af%e6%96%b9%e6%a1%88%e6%8a%8a-nginx-%e6%8d%a2%e5%88%b0-8080-%e7%ab%af%e5%8f%a3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;绕路方案：把 Nginx 换到 8080 端口&#xA;&lt;/h5&gt;&lt;ul&gt;&#xA;&lt;li&gt;为了验证是不是 80 端口被封了，我们换个“高位端口”试试（高位端口通常不会被封）：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;第一步修改-nginx-配置文件&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e4%b8%80%e6%ad%a5%e4%bf%ae%e6%94%b9-nginx-%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第一步：修改 Nginx 配置文件&#xA;&lt;/h6&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo vim /etc/nginx/sites-available/default&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h6 id=&#34;第二步将-80-改为-8080&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e4%ba%8c%e6%ad%a5%e5%b0%86-80-%e6%94%b9%e4%b8%ba-8080&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第二步：将 80 改为 8080&#xA;&lt;/h6&gt;&lt;p&gt;Nginx&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;listen 80 default_server;&#xA;listen [::]:80 default_server;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;改成：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;listen 8080 default_server;&#xA;listen [::]:8080 default_server;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h6 id=&#34;第三步重启-nginx&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e4%b8%89%e6%ad%a5%e9%87%8d%e5%90%af-nginx&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第三步：重启 Nginx&#xA;&lt;/h6&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo nginx -t                # 检查有没有写错&#xA;sudo systemctl restart nginx&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h6 id=&#34;第四步浏览器访问&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e5%9b%9b%e6%ad%a5%e6%b5%8f%e8%a7%88%e5%99%a8%e8%ae%bf%e9%97%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第四步：浏览器访问&#xA;&lt;/h6&gt;&lt;p&gt;在浏览器地址栏输入： &lt;code&gt;http://202.38.75.252:8080&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h5 id=&#34;ssh连接&#34;&gt;&lt;a href=&#34;#ssh%e8%bf%9e%e6%8e%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;ssh连接&#xA;&lt;/h5&gt;&lt;ul&gt;&#xA;&lt;li&gt;ssh -i .\vlab-vm12825.pem -L 8888:localhost:8080 &lt;a class=&#34;link&#34; href=&#34;mailto:ubuntu@vlab.ustc.edu.cn&#34; &gt;ubuntu@vlab.ustc.edu.cn&lt;/a&gt;&#xA;建立远程连接&#xA;网站权限:把项目移到标准位置&lt;/li&gt;&#xA;&lt;li&gt;sudo cp -r /home/ubuntu/personal_file/LinuxLab/WebProg/var/www/my_site&lt;/li&gt;&#xA;&lt;li&gt;为了自己还能修改网页,将自己加入该所有组&lt;/li&gt;&#xA;&lt;li&gt;把你的个人账号（假设是 &lt;code&gt;ubuntu&lt;/code&gt;）拉进 Nginx 的“工人群组”里&lt;/li&gt;&#xA;&lt;li&gt;sudo usermod -aG www-data ubuntu&lt;/li&gt;&#xA;&lt;li&gt;sudo chown -R ubuntu:www-data /var/www/my_site  (chown是更改所有组)&lt;/li&gt;&#xA;&lt;li&gt;将 Nginx 的 &lt;code&gt;root&lt;/code&gt; 改为 &lt;code&gt;/var/www/my_site&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;最后，我们需要确保组员（Nginx）拥有“读”和“进入”的权限，而你拥有“写”的权限。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 目录权限：775 (你：读写执；组：读写执；他人：读执)&#xA;find /var/www/my_site -type d -exec chmod 775 {} +&#xA;&#xA;# 文件权限：664 (你：读写；组：读写；他人：读)&#xA;find /var/www/my_site -type f -exec chmod 664 {} +&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;10-改变终端左侧的提示符&#34;&gt;&lt;a href=&#34;#10-%e6%94%b9%e5%8f%98%e7%bb%88%e7%ab%af%e5%b7%a6%e4%be%a7%e7%9a%84%e6%8f%90%e7%a4%ba%e7%ac%a6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;10 改变终端左侧的提示符&#xA;&lt;/h4&gt;&lt;p&gt;PS1=&amp;quot;\u@\h:\w$ :&lt;/p&gt;&#xA;&lt;p&gt;PS1** 是 Linux 系统中一个非常重要的&lt;strong&gt;环境变量&lt;/strong&gt;，它的全称是 &lt;strong&gt;Prompt String 1&lt;/strong&gt;。它决定了你在终端输入命令时，左侧显示的那个**提示符（Prompt）**长什么样。&lt;/p&gt;&#xA;&lt;h5 id=&#34;1-拆解这些暗号&#34;&gt;&lt;a href=&#34;#1-%e6%8b%86%e8%a7%a3%e8%bf%99%e4%ba%9b%e6%9a%97%e5%8f%b7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 拆解这些“暗号”&#xA;&lt;/h5&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;\u&lt;/code&gt;&lt;/strong&gt; (User)：代表当前&lt;strong&gt;登录的用户名&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;@&lt;/code&gt;&lt;/strong&gt;：就是一个普通的字符“@”，用来连接用户名和主机名。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;\h&lt;/code&gt;&lt;/strong&gt; (Hostname)：代表当前&lt;strong&gt;计算机的名字&lt;/strong&gt;（主机名）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:&lt;/code&gt;&lt;/strong&gt;：普通的冒号分隔符。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;\w&lt;/code&gt;&lt;/strong&gt; (Working directory)：代表当前&lt;strong&gt;所在的全路径目录&lt;/strong&gt;（如果是家目录，会显示成 &lt;code&gt;~&lt;/code&gt;）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;\$&lt;/code&gt;&lt;/strong&gt;：这是一个智能符号。如果你是&lt;strong&gt;普通用户&lt;/strong&gt;，它显示为 &lt;strong&gt;&lt;code&gt;$&lt;/code&gt;&lt;/strong&gt;；如果你切换成了 &lt;strong&gt;root（超级管理员）&lt;/strong&gt;，它会自动变成 &lt;strong&gt;&lt;code&gt;#&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;空格&lt;/strong&gt;：最后的那个空格非常重要，它能让你的命令不紧贴着路径，看起来更清爽。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;11-终端快捷键&#34;&gt;&lt;a href=&#34;#11-%e7%bb%88%e7%ab%af%e5%bf%ab%e6%8d%b7%e9%94%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;11 终端快捷键&#xA;&lt;/h4&gt;&lt;p&gt;Tab 自动补全&#xA;Tab +Tab 给出所有候选项&lt;/p&gt;&#xA;&lt;p&gt;Ctrl+Insert 复制&#xA;Shift+Insert 粘贴&lt;/p&gt;&#xA;&lt;h4 id=&#34;12-tree展示文件结构&#34;&gt;&lt;a href=&#34;#12-tree%e5%b1%95%e7%a4%ba%e6%96%87%e4%bb%b6%e7%bb%93%e6%9e%84&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;12 Tree(展示文件结构)&#xA;&lt;/h4&gt;&lt;p&gt;tree :以树状图显示文件结构&#xA;tree -L 2 :限制层数&#xA;tree -d :不显示具体文件,只看文件夹结构&#xA;tree -a :显示隐藏文件&#xA;tree -ph :显示权限 大小&#xA;tree -P &amp;ldquo;*.c|*.h&amp;rdquo; :只显示.c/.h文件&#xA;tree -I &amp;ldquo;node_modules&amp;rdquo; :排除掉特定的文件夹&#xA;tree &amp;gt; project_structure.txt :重定向输出&lt;/p&gt;&#xA;&lt;h4 id=&#34;13-du-disk-usage&#34;&gt;&lt;a href=&#34;#13-du-disk-usage&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;13 &lt;strong&gt;&lt;code&gt;du&lt;/code&gt;&lt;/strong&gt; (Disk Usage)&#xA;&lt;/h4&gt;&lt;p&gt;du:把每一个子目录的大小都列出来&#xA;du -sh . :查看整个文件夹占据空间大小&#xA;du -sh * :查看每个子文件夹大小&#xA;du -sh * | sort -hr :查看并按大小排序&#xA;du -h &amp;ndash;max-depth=1 :查看所有一级子目录&lt;/p&gt;&#xA;&lt;h4 id=&#34;14-df&#34;&gt;&lt;a href=&#34;#14-df&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;14 df&#xA;&lt;/h4&gt;&lt;p&gt;df -h :想看整个&lt;strong&gt;硬盘分区&lt;/strong&gt;（比如系统盘、挂载盘）还剩多少空间&lt;/p&gt;&#xA;&lt;h4 id=&#34;15-feh&#34;&gt;&lt;a href=&#34;#15-feh&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;15 feh&#xA;&lt;/h4&gt;&lt;h5 id=&#34;1-基本打开操作&#34;&gt;&lt;a href=&#34;#1-%e5%9f%ba%e6%9c%ac%e6%89%93%e5%bc%80%e6%93%8d%e4%bd%9c&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 基本打开操作&#xA;&lt;/h5&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;feh image.jpg          # 打开单张图片&#xA;feh dir/               # 打开文件夹下所有图片（通过箭头键切换）&#xA;feh -F image.jpg       # 全屏打开&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;2-常用骚操作模式&#34;&gt;&lt;a href=&#34;#2-%e5%b8%b8%e7%94%a8%e9%aa%9a%e6%93%8d%e4%bd%9c%e6%a8%a1%e5%bc%8f&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. 常用“骚操作”模式&#xA;&lt;/h5&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;缩略图模式 (&lt;code&gt;-t&lt;/code&gt;)&lt;/strong&gt;：&#xA;像文件管理器一样，弹出一个窗口展示目录下所有图片的预览图。&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;feh -t ./personal_file/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;蒙太奇拼图模式 (&lt;code&gt;-m&lt;/code&gt;)&lt;/strong&gt;：&#xA;将目录下所有图片自动拼接成一张大图。&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;feh -m ./images/ -O montage.jpg  # 拼接并保存为新图&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;幻灯片模式 (&lt;code&gt;-D&lt;/code&gt;)&lt;/strong&gt;：&#xA;每隔 2 秒自动切换下一张。&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;feh -D 2 ./slideshow/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h5 id=&#34;3-必须掌握的键盘快捷键&#34;&gt;&lt;a href=&#34;#3-%e5%bf%85%e9%a1%bb%e6%8e%8c%e6%8f%a1%e7%9a%84%e9%94%ae%e7%9b%98%e5%bf%ab%e6%8d%b7%e9%94%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. 必须掌握的键盘快捷键&#xA;&lt;/h5&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;按键&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;功能&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;方向键 / 空格&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;上一张 / 下一张图片&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;方向键 + Ctrl&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;缩放图片&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Up / Down&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;放大 / 缩小&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;R&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;旋转 (90度)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;&amp;lt; / &amp;gt;&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;翻转图片&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;W&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;窗口适应图片大小&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Q / Esc&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;退出程序&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h5 id=&#34;4-进阶用-feh-设置壁纸&#34;&gt;&lt;a href=&#34;#4-%e8%bf%9b%e9%98%b6%e7%94%a8-feh-%e8%ae%be%e7%bd%ae%e5%a3%81%e7%ba%b8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4. 进阶：用 feh 设置壁纸&#xA;&lt;/h5&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;feh --bg-fill /path/to/wallpaper.jpg&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;16-tar&#34;&gt;&lt;a href=&#34;#16-tar&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;16 tar&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;把某名为source的文件或目录压缩成名为out.tar.gz的gzip格式压缩文件：&lt;code&gt;tar zcvf out.tar.gz source&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;解压缩某名为abc.tar.gz的gzip格式压缩文件：&lt;code&gt;tar zxvf abc.tar.gz&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;17-tmux&#34;&gt;&lt;a href=&#34;#17-tmux&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;17 tmux&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;安装&lt;/strong&gt;：&lt;code&gt;sudo apt install tmux&lt;/code&gt; (Ubuntu 默认大部分已带)。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;新建窗口&lt;/strong&gt;：&lt;code&gt;tmux&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;离开窗口 (Detach)&lt;/strong&gt;：按 &lt;code&gt;Ctrl + B&lt;/code&gt; 后，再按 &lt;code&gt;D&lt;/code&gt;。此时你的代码在后台运行！&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;重新进入 (Attach)&lt;/strong&gt;：&lt;code&gt;tmux attach&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;功能&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;新建会话&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;tmux&lt;/code&gt; (或 &lt;code&gt;tmux new -s myname&lt;/code&gt; 给会话起名)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;退出并挂起&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;先按 &lt;code&gt;Ctrl + b&lt;/code&gt;，然后按 &lt;code&gt;d&lt;/code&gt; (Detach)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;查看所有会话&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;tmux ls&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;重连会话&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;tmux a&lt;/code&gt; (或 &lt;code&gt;tmux a -t myname&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;彻底关掉会话&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;在 tmux 里输入 &lt;code&gt;exit&lt;/code&gt; 或 &lt;code&gt;tmux kill-session -t myname&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h5 id=&#34;操作逻辑前缀键-prefix&#34;&gt;&lt;a href=&#34;#%e6%93%8d%e4%bd%9c%e9%80%bb%e8%be%91%e5%89%8d%e7%bc%80%e9%94%ae-prefix&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;操作逻辑：前缀键 (Prefix)&#xA;&lt;/h5&gt;&lt;p&gt;&lt;code&gt;tmux&lt;/code&gt; 的所有快捷键都需要先按一个“启动键”，默认是 &lt;strong&gt;&lt;code&gt;Ctrl + b&lt;/code&gt;&lt;/strong&gt;。&#xA;&lt;strong&gt;操作步骤：&lt;/strong&gt; 按住 &lt;code&gt;Ctrl&lt;/code&gt; 不放再按 &lt;code&gt;b&lt;/code&gt; $\rightarrow$ 全部松开 $\rightarrow$ 快速按功能键。&lt;/p&gt;&#xA;&lt;h5 id=&#34;常用功能快捷键&#34;&gt;&lt;a href=&#34;#%e5%b8%b8%e7%94%a8%e5%8a%9f%e8%83%bd%e5%bf%ab%e6%8d%b7%e9%94%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;常用功能快捷键：&#xA;&lt;/h5&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;分屏（左右）&lt;/strong&gt;：&lt;code&gt;Ctrl + b&lt;/code&gt; $\rightarrow$ &lt;code&gt;%&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;分屏（上下）&lt;/strong&gt;：&lt;code&gt;Ctrl + b&lt;/code&gt; $\rightarrow$ &lt;code&gt;&amp;quot;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;切换窗格&lt;/strong&gt;：&lt;code&gt;Ctrl + b&lt;/code&gt; $\rightarrow$ &lt;code&gt;方向键&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;关闭当前窗格&lt;/strong&gt;：&lt;code&gt;Ctrl + b&lt;/code&gt; $\rightarrow$ &lt;code&gt;x&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;输入 &lt;code&gt;tmux new -s test&lt;/code&gt; 进入新世界。&lt;/li&gt;&#xA;&lt;li&gt;输入 &lt;code&gt;top&lt;/code&gt; 看着系统资源跳动。&lt;/li&gt;&#xA;&lt;li&gt;按 &lt;code&gt;Ctrl + b&lt;/code&gt; 然后按 &lt;code&gt;d&lt;/code&gt;。你会发现回到了原来的终端。&lt;/li&gt;&#xA;&lt;li&gt;输入 &lt;code&gt;tmux ls&lt;/code&gt; 确认 &lt;code&gt;test&lt;/code&gt; 还在后台。&lt;/li&gt;&#xA;&lt;li&gt;输入 &lt;code&gt;tmux a -t test&lt;/code&gt;，你会发现 &lt;code&gt;top&lt;/code&gt; 还在原地跳动！&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h4 id=&#34;18-alias别名&#34;&gt;&lt;a href=&#34;#18-alias%e5%88%ab%e5%90%8d&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;18. alias(别名)&#xA;&lt;/h4&gt;&lt;h5 id=&#34;核心逻辑&#34;&gt;&lt;a href=&#34;#%e6%a0%b8%e5%bf%83%e9%80%bb%e8%be%91&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;核心逻辑&#xA;&lt;/h5&gt;&lt;ul&gt;&#xA;&lt;li&gt;通过修改你家目录下的 &lt;code&gt;.bashrc&lt;/code&gt;（或 &lt;code&gt;.zshrc&lt;/code&gt;）文件，给长路径起个“外号”。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h5 id=&#34;操作步骤&#34;&gt;&lt;a href=&#34;#%e6%93%8d%e4%bd%9c%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;操作步骤&#xA;&lt;/h5&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;打开配置文件&lt;/strong&gt;（以最常用的 bash 为例）：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    nano ~/.bashrc&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;在文件末尾添加一行&lt;/strong&gt;： 假设你经常要去 &lt;code&gt;/var/www/html/my_project/assets&lt;/code&gt; 这个超长目录，你可以写：&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;alias go=&amp;#39;cd /var/www/html/my_project/assets&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;em&gt;注：&lt;code&gt;go&lt;/code&gt; 是你自己起的命令名，你可以换成任何喜欢的词。&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;让配置立即生效&lt;/strong&gt;： 保存退出后（Nano 编辑器是 &lt;code&gt;Ctrl+O&lt;/code&gt; 回车，&lt;code&gt;Ctrl+X&lt;/code&gt; 退出），运行：&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;source ~/.bashrc&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h4 id=&#34;19-ufw&#34;&gt;&lt;a href=&#34;#19-ufw&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;19. ufw&#xA;&lt;/h4&gt;&lt;h4 id=&#34;20&#34;&gt;&lt;a href=&#34;#20&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;20.&#xA;&lt;/h4&gt;&lt;p&gt;ai答案:&#xA;错误日志里的 &lt;strong&gt;&lt;code&gt;(13: Permission denied)&lt;/code&gt;&lt;/strong&gt; 是最直观的证据：Nginx 已经找到你的文件夹了，但是&lt;strong&gt;被系统拦在了门外&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;在 Linux 中，Nginx 以 &lt;code&gt;www-data&lt;/code&gt; 用户身份运行，而你的文件夹属于 &lt;code&gt;ubuntu&lt;/code&gt; 用户。如果中间任何一层目录（如 &lt;code&gt;/home/ubuntu&lt;/code&gt;）没有开放“执行”权限，Nginx 就无法进入该目录寻找文件。&lt;/p&gt;&#xA;&lt;h6 id=&#34;终极修复方案层层打通权限&#34;&gt;&lt;a href=&#34;#%e7%bb%88%e6%9e%81%e4%bf%ae%e5%a4%8d%e6%96%b9%e6%a1%88%e5%b1%82%e5%b1%82%e6%89%93%e9%80%9a%e6%9d%83%e9%99%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;终极修复方案：层层打通权限&#xA;&lt;/h6&gt;&lt;p&gt;请在虚拟机终端&lt;strong&gt;依次执行&lt;/strong&gt;以下三行命令，一行都不要跳过：&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 1. 允许其他用户（包括 Nginx）“进入”你的家目录&#xA;sudo chmod 755 /home/ubuntu&#xA;&#xA;# 2. 允许其他用户进入你的 personal_file 及其子目录&#xA;sudo chmod -R 755 /home/ubuntu/personal_file&#xA;&#xA;# 3. 确保你的网页文件本身也是可读的&#xA;sudo chmod 644 /home/ubuntu/personal_file/LinuxLab/WebProg/index.html&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h6 id=&#34;为什么需要执行这几步&#34;&gt;&lt;a href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81%e6%89%a7%e8%a1%8c%e8%bf%99%e5%87%a0%e6%ad%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;为什么需要执行这几步？&#xA;&lt;/h6&gt;&lt;p&gt;Linux 的权限检查是“路径式”的。即使你把 &lt;code&gt;index.html&lt;/code&gt; 设成了 &lt;code&gt;777&lt;/code&gt;（全开），但如果上一级的 &lt;code&gt;/home/ubuntu&lt;/code&gt; 是私有的（通常默认是 &lt;code&gt;700&lt;/code&gt;），Nginx 就像手里拿着钥匙却进不了院子大门的访客，依然会被报 &lt;code&gt;Permission denied&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;这个太危险了,尤其是openclaw带来安全风险&lt;/p&gt;&#xA;&lt;p&gt;还有acl可以参考&lt;/p&gt;&#xA;&lt;h1 id=&#34;同步文件&#34;&gt;&lt;a href=&#34;#%e5%90%8c%e6%ad%a5%e6%96%87%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;同步文件&#xA;&lt;/h1&gt;&lt;p&gt;实现“工业级”自动化同步，最核心的思想是：&lt;strong&gt;将“源码仓库”与“运行目录”分离&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;你的代码在 &lt;code&gt;/home/ubuntu&lt;/code&gt; 目录下进行 Git 操作，而 Nginx 运行的是 &lt;code&gt;/var/www/my_site&lt;/code&gt; 下的副本。这样既保证了安全（Nginx 进不去你的家目录），又保证了方便（你依然可以在家目录用 Git）。&lt;/p&gt;&#xA;&lt;p&gt;以下是两种实现方式：&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;方法一rsync-手动脚本同步最简单可控&#34;&gt;&lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%b8%80rsync-%e6%89%8b%e5%8a%a8%e8%84%9a%e6%9c%ac%e5%90%8c%e6%ad%a5%e6%9c%80%e7%ae%80%e5%8d%95%e5%8f%af%e6%8e%a7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;方法一：rsync 手动/脚本同步（最简单、可控）&#xA;&lt;/h3&gt;&lt;p&gt;如果你习惯在本地 &lt;code&gt;git pull&lt;/code&gt; 后手动触发更新，&lt;code&gt;rsync&lt;/code&gt; 是神器。它只会同步&lt;strong&gt;增量修改&lt;/strong&gt;的文件，非常快。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;先创建目标目录并给好权限：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo mkdir -p /var/www/my_site&#xA;sudo chown -R www-data:www-data /var/www/my_site&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;执行同步命令：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo rsync -av --delete --exclude=&amp;#39;.git&amp;#39; /home/ubuntu/personal_file/LinuxLab/my_site/ /var/www/my_site/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-av&lt;/code&gt;: 归档模式，保留权限和时间戳。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;--delete&lt;/code&gt;: 如果你在 Git 里删除了文件，&lt;code&gt;/var/www&lt;/code&gt; 里对应的文件也会被删除。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;--exclude=&#39;.git&#39;&lt;/code&gt;: 不要把 &lt;code&gt;.git&lt;/code&gt; 文件夹拷过去，Nginx 不需要它，这也能防止源码泄露。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;进阶：写成别名（Alias）：&lt;/strong&gt; 在 &lt;code&gt;~/.bashrc&lt;/code&gt; 末尾加一行：&lt;code&gt;alias deploy=&#39;sudo rsync -av --delete --exclude=&amp;quot;.git&amp;quot; /home/ubuntu/personal_file/LinuxLab/my_site/ /var/www/my_site/&#39;&lt;/code&gt;。以后只需输入 &lt;code&gt;deploy&lt;/code&gt; 即可一键同步。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;方法二git-hook-自动同步真正的自动化&#34;&gt;&lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%ba%8cgit-hook-%e8%87%aa%e5%8a%a8%e5%90%8c%e6%ad%a5%e7%9c%9f%e6%ad%a3%e7%9a%84%e8%87%aa%e5%8a%a8%e5%8c%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;方法二：Git Hook 自动同步（真正的自动化）&#xA;&lt;/h3&gt;&lt;p&gt;这种方式通常用于“服务器作为远程仓库”的场景。如果你是在服务器本地 &lt;code&gt;git pull&lt;/code&gt;，可以利用 &lt;code&gt;post-merge&lt;/code&gt; 钩子（在合并/拉取代码后自动触发）。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;进入你家目录下的 Git 仓库钩子目录：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd /home/ubuntu/personal_file/LinuxLab/my_site/.git/hooks&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;创建 &lt;code&gt;post-merge&lt;/code&gt; 脚本：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;nano post-merge&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;写入以下内容：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash&#xA;# 定义目标路径&#xA;TARGET=&amp;#34;/var/www/my_site&amp;#34;&#xA;SOURCE=&amp;#34;/home/ubuntu/personal_file/LinuxLab/my_site&amp;#34;&#xA;&#xA;echo &amp;#34;Detected git pull/merge, deploying to $TARGET...&amp;#34;&#xA;&#xA;# 使用 rsync 同步到 nginx 目录&#xA;sudo rsync -av --delete --exclude=&amp;#39;.git&amp;#39; &amp;#34;$SOURCE/&amp;#34; &amp;#34;$TARGET/&amp;#34;&#xA;&#xA;# 确保权限正确&#xA;sudo chown -R www-data:www-data &amp;#34;$TARGET&amp;#34;&#xA;&#xA;echo &amp;#34;Deployment complete.&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;赋予执行权限：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;chmod +x post-merge&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;配置 sudo 免密（关键点）：&lt;/strong&gt; 由于钩子是以 &lt;code&gt;ubuntu&lt;/code&gt; 用户运行的，但同步到 &lt;code&gt;/var/www&lt;/code&gt; 需要 &lt;code&gt;sudo&lt;/code&gt;。为了不卡住，你需要给 &lt;code&gt;rsync&lt;/code&gt; 加上免密： 执行 &lt;code&gt;sudo visudo&lt;/code&gt;，在文件末尾添加：&lt;/p&gt;&#xA;&lt;p&gt;Plaintext&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ubuntu ALL=(ALL) NOPASSWD: /usr/bin/rsync&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;实现效果：&lt;/strong&gt; 以后你只要在 &lt;code&gt;/home/ubuntu/.../my_site&lt;/code&gt; 目录下执行 &lt;code&gt;git pull&lt;/code&gt;，代码会自动“飞”到 &lt;code&gt;/var/www/my_site&lt;/code&gt;，Nginx 会立刻感知到更新，且没有任何权限报错。&lt;/p&gt;&#xA;&lt;h1 id=&#34;全局系统命令&#34;&gt;&lt;a href=&#34;#%e5%85%a8%e5%b1%80%e7%b3%bb%e7%bb%9f%e5%91%bd%e4%bb%a4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;全局系统命令&#xA;&lt;/h1&gt;&lt;h3 id=&#34;方案一直接创建全局系统命令最推荐&#34;&gt;&lt;a href=&#34;#%e6%96%b9%e6%a1%88%e4%b8%80%e7%9b%b4%e6%8e%a5%e5%88%9b%e5%bb%ba%e5%85%a8%e5%b1%80%e7%b3%bb%e7%bb%9f%e5%91%bd%e4%bb%a4%e6%9c%80%e6%8e%a8%e8%8d%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;方案一：直接创建全局系统命令（最推荐）&#xA;&lt;/h3&gt;&lt;p&gt;这种方法不依赖于任何用户的配置，直接把 &lt;code&gt;deploy&lt;/code&gt; 变成像 &lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;cd&lt;/code&gt; 一样的系统命令。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;创建脚本文件：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo nano /usr/local/bin/deploy&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;把下面的内容完整复制进去：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash&#xA;# 自动执行同步命令&#xA;sudo rsync -av --delete --exclude=&amp;#34;.git&amp;#34; /home/ubuntu/personal_file/LinuxLab/my_site/ /var/www/my_site/&#xA;echo &amp;#34;-----------------------------------&amp;#34;&#xA;echo &amp;#34;部署成功: /home/.../my_site -&amp;gt; /var/www/my_site&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;赋予可执行权限：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bash&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo chmod +x /usr/local/bin/deploy&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;直接运行：&lt;/strong&gt; 现在你在&lt;strong&gt;任何目录下&lt;/strong&gt;直接输入 &lt;code&gt;deploy&lt;/code&gt; 即可，不需要 &lt;code&gt;source&lt;/code&gt;，也不需要加 &lt;code&gt;sudo&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;</description>
        </item><item>
            <title>📝 Obsidian 使用技巧与插件分享</title>
            <link>https://largeoyos.github.io/post/obsidian/</link>
            <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/obsidian/</guid>
            <description>&lt;ul&gt;&#xA;&lt;li&gt;# 加标题 最多六级&lt;/li&gt;&#xA;&lt;li&gt;**什么东西 ** 有加粗之效&lt;/li&gt;&#xA;&lt;li&gt;*什么东西*有斜体之效&lt;/li&gt;&#xA;&lt;li&gt;&amp;gt; blockquote 引用块&lt;/li&gt;&#xA;&lt;li&gt;&amp;mdash;加标签&lt;/li&gt;&#xA;&lt;li&gt;————————————分割线&lt;/li&gt;&#xA;&lt;li&gt;有序列表&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;远&lt;/li&gt;&#xA;&lt;li&gt;冷&lt;/li&gt;&#xA;&lt;li&gt;董&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;- 无序列表&#xA;&lt;ul&gt;&#xA;&lt;li&gt;小满&lt;/li&gt;&#xA;&lt;li&gt;大橘&lt;/li&gt;&#xA;&lt;li&gt;如意&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;`code`&lt;/li&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include&amp;lt;stdio.h&amp;gt;&#xA;int main(){&#xA;&#x9;printf(“Hello, world!\n”);&#xA;&#x9;return 0;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;```&#xA;代码块&#xA;```&lt;/li&gt;&#xA;&lt;li&gt;链接[title](https://www.example.com)&lt;/li&gt;&#xA;&lt;li&gt;图片 ![alt text](image.jpg)&lt;/li&gt;&#xA;&lt;li&gt;table:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;|tabelhead1|tablehead2|tablehead3|&#xA;|—————-|——————|——————-|&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;脚注Here&amp;rsquo;s a sentence with a footnote&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;标题编号&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;h3 id=&#34;2&#34;&gt;&lt;a href=&#34;#2&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;My Great Heading&#xA;&lt;/h3&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;定义列表&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;删除线&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;~~得到的~~&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;~~~ 这是啥&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;任务列表&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Write&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;教程第二弹&#34;&gt;&lt;a href=&#34;#%e6%95%99%e7%a8%8b%e7%ac%ac%e4%ba%8c%e5%bc%b9&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;教程第二弹&#xA;&lt;/h1&gt;&lt;h2 id=&#34;标题语法&#34;&gt;&lt;a href=&#34;#%e6%a0%87%e9%a2%98%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;标题语法&#xA;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;Markdown语法          HTML&#xA;# Heading level 1    &amp;lt;h1&amp;gt;Heading level 1&amp;lt;/h1&amp;gt;&#xA;最多六级标题&#xA;可以用在文本下方添加任意数量====来标识一级标题&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;   ----来标识二级标题&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;段落语法&#34;&gt;&lt;a href=&#34;#%e6%ae%b5%e8%90%bd%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;段落语法&#xA;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;Markdown语法                       HTML&#xA;用空白行将一行或多行文本分割        &amp;lt;p&amp;gt;....&amp;lt;/p&amp;gt;&#xA;注意不要缩进段落        &#xA;&#x9;&#x9;&#xA;xxxxx.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;换行语法&#34;&gt;&lt;a href=&#34;#%e6%8d%a2%e8%a1%8c%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;换行语法&#xA;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;Markdown语法                            HTML&#xA;一行末尾添加两个或多个空格然后回车     &amp;lt;p&amp;gt;....&amp;lt;br&amp;gt;....&amp;lt;/p&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;强调语法&#34;&gt;&lt;a href=&#34;#%e5%bc%ba%e8%b0%83%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;强调语法&#xA;&lt;/h2&gt;&lt;h3 id=&#34;粗体&#34;&gt;&lt;a href=&#34;#%e7%b2%97%e4%bd%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;粗体&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;Markdown语法                HTML&#xA;**....**              &amp;lt;strong&amp;gt;...&amp;lt;/strong&amp;gt;&#xA;__....__&#xA;.....**...**** &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;斜体&#34;&gt;&lt;a href=&#34;#%e6%96%9c%e4%bd%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;斜体&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;Markdown语法               HTML&#xA;*...                    &amp;lt;em&amp;gt;...&amp;lt;/em&amp;gt;&#xA;_...&#xA;...*...*....&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;又粗又斜&#34;&gt;&lt;a href=&#34;#%e5%8f%88%e7%b2%97%e5%8f%88%e6%96%9c&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;又粗又斜&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;Markdown语法                HTML&#xA;***....***             &amp;lt;strong&amp;gt;&amp;lt;em&amp;gt;....&amp;lt;/em&amp;gt;&amp;lt;/strong&amp;gt;&#xA;___.....___&#xA;__*....*__&#xA;**_...._**&#xA;...***..***...&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;引用语法&#34;&gt;&lt;a href=&#34;#%e5%bc%95%e7%94%a8%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;引用语法&#xA;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;&amp;gt;.....&#xA;或是&#xA;&amp;gt;.....&#xA;&amp;gt;&#xA;&amp;gt;.....&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Dorothy followed her through many of the beautiful rooms in her castle.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Dorothy followed her through many of the beautiful rooms in her castle.&lt;/p&gt;&#xA;&lt;p&gt;The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;嵌套块引用&#34;&gt;&lt;a href=&#34;#%e5%b5%8c%e5%a5%97%e5%9d%97%e5%bc%95%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;嵌套块引用&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt; &amp;gt;....&#xA; &amp;gt;&#xA; &amp;gt;&amp;gt;....&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Dorothy followed her through many of the beautiful rooms in her castle.&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;带有其它元素的块引用&#34;&gt;&lt;a href=&#34;#%e5%b8%a6%e6%9c%89%e5%85%b6%e5%ae%83%e5%85%83%e7%b4%a0%e7%9a%84%e5%9d%97%e5%bc%95%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;带有其它元素的块引用&#xA;&lt;/h3&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;gt; #### The quarterly results look great!&#xA;&amp;gt;&#xA;&amp;gt; - Revenue was off the chart.&#xA;&amp;gt; - Profits were higher than ever.&#xA;&amp;gt;&#xA;&amp;gt;  *Everything* is going according to **plan**.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;    &lt;blockquote&gt;&#xA;        &lt;h4 id=&#34;the-quarterly-results-look-great&#34;&gt;&lt;a href=&#34;#the-quarterly-results-look-great&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;The quarterly results look great!&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;Revenue was off the chart.&lt;/li&gt;&#xA;&lt;li&gt;Profits were higher than ever.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;Everything&lt;/em&gt; is going according to &lt;strong&gt;plan&lt;/strong&gt;.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;列表语法&#34;&gt;&lt;a href=&#34;#%e5%88%97%e8%a1%a8%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;列表语法&#xA;&lt;/h2&gt;&lt;h3 id=&#34;有序列表&#34;&gt;&lt;a href=&#34;#%e6%9c%89%e5%ba%8f%e5%88%97%e8%a1%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;有序列表&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;Markdown语法                HTML&#xA;1. first item         &amp;lt;ol&amp;gt;&#xA;2. second item        &amp;lt;li&amp;gt;First item&amp;lt;/li&amp;gt;&#xA;3. third item         &amp;lt;li&amp;gt;Second item&amp;lt;/li&amp;gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&amp;lt;/ol&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;无序列表&#34;&gt;&lt;a href=&#34;#%e6%97%a0%e5%ba%8f%e5%88%97%e8%a1%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;无序列表&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;Markdown语法                HTML&#xA;- first item              &amp;lt;ul&amp;gt;&#xA;- second item             &amp;lt;li&amp;gt;first item&amp;lt;/li&amp;gt; &#xA;- third item              &amp;lt;li&amp;gt;second item&amp;lt;/li&amp;gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;    &amp;lt;/ul&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;代码块在列表中要八个空格或两个制表符&#xA;段落在代码中要缩进四个空格或一个制表符&#xA;引用快也是缩进四个空格或一个制表符&#xA;图片缩进四个空格或一个制表符&#xA;列表也是多缩进四个空格或一个制表符&lt;/p&gt;&#xA;&lt;h2 id=&#34;代码语法&#34;&gt;&lt;a href=&#34;#%e4%bb%a3%e7%a0%81%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;代码语法&#xA;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;Markdown语法                HTML&#xA;`...`                     &amp;lt;code&amp;gt;....&amp;lt;/code&amp;gt;&#xA;遇到代码中有`的,用``...`...`...``&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;代码块&#34;&gt;&lt;a href=&#34;#%e4%bb%a3%e7%a0%81%e5%9d%97&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;代码块&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;四个空格或一个制表符&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;分割线语法&#34;&gt;&lt;a href=&#34;#%e5%88%86%e5%89%b2%e7%ba%bf%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;分割线语法&#xA;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;***&#xA;&#xA;---&#xA;&#xA;___&#xA;&#xA;最好在分割线的前后均添加空白行&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;hr&gt;&#xA;&lt;hr&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;链接语法&#34;&gt;&lt;a href=&#34;#%e9%93%be%e6%8e%a5%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;链接语法&#xA;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;[超链接显示名](超链接地址 &amp;quot;title名字&amp;quot;)&#xA;title名字:鼠标悬停在上面会出现的文字&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://markdown.com.cn&#34;  title=&#34;最好的markdown教程&#34;&#xA;     target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Markdown语法&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;网址-email地址&#34;&gt;&lt;a href=&#34;#%e7%bd%91%e5%9d%80-email%e5%9c%b0%e5%9d%80&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;网址 email地址&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;https://markdown.com.cn&amp;gt;&#xA;&amp;lt;fake@example.com&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://markdown.com.cn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://markdown.com.cn&lt;/a&gt;&#xA;&lt;a class=&#34;link&#34; href=&#34;mailto:liuguangyi@mail.ustc.edu.cn&#34; &gt;liuguangyi@mail.ustc.edu.cn&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;带格式化的链接&#34;&gt;&lt;a href=&#34;#%e5%b8%a6%e6%a0%bc%e5%bc%8f%e5%8c%96%e7%9a%84%e9%93%be%e6%8e%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;带格式化的链接&#xA;&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;强调链接,在链接语法前后增加星号.&#xA;将链接表示为代码 ,在方括号中添加反引号&#xA;I love supporting the **[EFF](https://eff.org)**.&#xA;This is the *[Markdown Guide](https://www.markdownguide.org)*.&#xA;See the section on [`code`](#code).&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I love supporting the &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://eff.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;EFF&lt;/a&gt;&lt;/strong&gt;.&#xA;This is the &lt;em&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.markdownguide.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Markdown Guide&lt;/a&gt;&lt;/em&gt;.&#xA;See the section on &lt;a class=&#34;link&#34; href=&#34;#code&#34; &gt;&lt;code&gt;code&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;引用类型链接&#34;&gt;&lt;a href=&#34;#%e5%bc%95%e7%94%a8%e7%b1%bb%e5%9e%8b%e9%93%be%e6%8e%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;引用类型链接&#xA;&lt;/h3&gt;&lt;h4 id=&#34;第一部分&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e4%b8%80%e9%83%a8%e5%88%86&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第一部分&#xA;&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;[hobbit-hole][1]&#xA;第一组方括号包围应显示为链接的文本&#xA;第二组括号显示了一个标签,指向存储在文档其他位置的链接&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Hobbit#Lifestyle&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;hobbit-hole&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;第二部分&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e4%ba%8c%e9%83%a8%e5%88%86&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第二部分&#xA;&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;[label]: URL &amp;quot;可选标题&amp;quot;&#xA;放在括号中的标签,紧跟冒号和至少一个空格&#xA;URL可以选择括在尖括号中&#xA;链接的可选标题可以括在&amp;quot;&amp;quot; &#39;&#39; ()中&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;图片语法&#34;&gt;&lt;a href=&#34;#%e5%9b%be%e7%89%87%e8%af%ad%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;图片语法&#xA;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;![tupianalt](图片链接 “图片title”)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;图片也可以利用html标签来写&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;p align=&amp;#34;center&amp;#34;&amp;gt;&#xA;  &amp;lt;img src=&amp;#34;./云台实物.png&amp;#34; width=&amp;#34;550&amp;#34;/&amp;gt;&#xA;&amp;lt;/p&amp;gt;&#xA;&amp;lt;p align=&amp;#34;center&amp;#34;&amp;gt;&#xA;  &amp;lt;em&amp;gt;图 1: 云台机械图纸&amp;lt;/em&amp;gt;&#xA;&amp;lt;/p&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;This is the footnote;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
        </item><item>
            <title>🚀 Vim 编辑器快捷键极速指南</title>
            <link>https://largeoyos.github.io/post/vim-shortcuts/</link>
            <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/vim-shortcuts/</guid>
            <description>&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;基础移动与跳转&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;(&lt;/code&gt; / &lt;code&gt;)&lt;/code&gt;&lt;/strong&gt;：移动到句首 / 句尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;{&lt;/code&gt; / &lt;code&gt;}&lt;/code&gt;&lt;/strong&gt;：移动到段首 / 段尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-&lt;/code&gt;&lt;/strong&gt;：移动到上一行行首。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;+&lt;/code&gt;&lt;/strong&gt; 或 &lt;strong&gt;&lt;code&gt;Enter&lt;/code&gt;&lt;/strong&gt;：移动到下一行行首。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;0&lt;/code&gt;&lt;/strong&gt;：移动到&lt;strong&gt;绝对行首&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;^&lt;/code&gt;&lt;/strong&gt;：移动到行内&lt;strong&gt;第一个非空字符&lt;/strong&gt;，也就是常说的&lt;strong&gt;软行首&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;$&lt;/code&gt;&lt;/strong&gt;：移动到行尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;|&lt;/code&gt;&lt;/strong&gt;：移动到当前行第 &lt;code&gt;n&lt;/code&gt; 列；未配合数字时可近似理解为移动到行首位置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;gg&lt;/code&gt;&lt;/strong&gt;：跳到文首。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;G&lt;/code&gt;&lt;/strong&gt;：跳到文尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;nG&lt;/code&gt;&lt;/strong&gt;、&lt;strong&gt;&lt;code&gt;ngg&lt;/code&gt;&lt;/strong&gt; 或 &lt;strong&gt;&lt;code&gt;:n&lt;/code&gt;&lt;/strong&gt;：跳到第 &lt;code&gt;n&lt;/code&gt; 行，例如 &lt;strong&gt;&lt;code&gt;35G&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;w&lt;/code&gt; / &lt;code&gt;W&lt;/code&gt;&lt;/strong&gt;：向后移动一个单词；&lt;strong&gt;&lt;code&gt;W&lt;/code&gt;&lt;/strong&gt; 会忽略标点。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;b&lt;/code&gt; / &lt;code&gt;B&lt;/code&gt;&lt;/strong&gt;：向前移动一个单词；&lt;strong&gt;&lt;code&gt;B&lt;/code&gt;&lt;/strong&gt; 会忽略标点。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;e&lt;/code&gt; / &lt;code&gt;E&lt;/code&gt;&lt;/strong&gt;：移动到单词末尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;%&lt;/code&gt;&lt;/strong&gt;：在成对符号之间跳转，如 &lt;strong&gt;&lt;code&gt;() [] {}&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;f&lt;/code&gt; / &lt;code&gt;F&lt;/code&gt; + 字符&lt;/strong&gt;：在当前行内向前 / 向后查找并跳到该字符。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;t&lt;/code&gt; / &lt;code&gt;T&lt;/code&gt; + 字符&lt;/strong&gt;：在当前行内向前 / 向后查找，并停在目标字符的前一个位置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;;&lt;/code&gt; / &lt;code&gt;,&lt;/code&gt;&lt;/strong&gt;：重复 / 反向重复上一次 &lt;strong&gt;&lt;code&gt;f/F/t/T&lt;/code&gt;&lt;/strong&gt; 跳转。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;插入与基础编辑&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;i&lt;/code&gt;&lt;/strong&gt;：在光标前进入插入模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;I&lt;/code&gt;&lt;/strong&gt;：在行首进入插入模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;a&lt;/code&gt;&lt;/strong&gt;：在光标后进入插入模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;A&lt;/code&gt;&lt;/strong&gt;：在行尾进入插入模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;o&lt;/code&gt;&lt;/strong&gt;：在下方新开一行并进入插入模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;O&lt;/code&gt;&lt;/strong&gt;：在上方新开一行并进入插入模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;x&lt;/code&gt;&lt;/strong&gt;：删除光标后的一个字符，相当于 &lt;strong&gt;Delete&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;X&lt;/code&gt;&lt;/strong&gt;：删除光标前的一个字符，相当于 &lt;strong&gt;Backspace&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;r&lt;/code&gt;&lt;/strong&gt;：替换当前字符。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;R&lt;/code&gt;&lt;/strong&gt;：进入&lt;strong&gt;替换模式&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;u&lt;/code&gt;&lt;/strong&gt;：撤销。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + R&lt;/code&gt;&lt;/strong&gt;：重做。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;J&lt;/code&gt;&lt;/strong&gt;：合并当前行与下一行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;~&lt;/code&gt;&lt;/strong&gt;：切换当前字符的大小写。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;amp;&lt;/code&gt;&lt;/strong&gt;：重复执行上一次替换命令。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + A&lt;/code&gt;&lt;/strong&gt;：将光标下的数字加 &lt;code&gt;1&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + X&lt;/code&gt;&lt;/strong&gt;：将光标下的数字减 &lt;code&gt;1&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;删除、修改与替换&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;dw&lt;/code&gt;&lt;/strong&gt;：删除到下一个单词开头。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;de&lt;/code&gt;&lt;/strong&gt;：删除到当前单词末尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;dd&lt;/code&gt;&lt;/strong&gt;：删除整行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;d$&lt;/code&gt;&lt;/strong&gt;：从当前光标删除到行尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;d^&lt;/code&gt;&lt;/strong&gt;：从当前光标删除到软行首。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;cc&lt;/code&gt;&lt;/strong&gt;：修改整行，删除后直接进入插入模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ce&lt;/code&gt;&lt;/strong&gt;：修改到当前词尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;C&lt;/code&gt;&lt;/strong&gt;：从当前光标修改到行尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;S&lt;/code&gt;&lt;/strong&gt;：重写当前整行，作用同 &lt;strong&gt;&lt;code&gt;cc&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;s&lt;/code&gt;&lt;/strong&gt;：替换当前字符并进入插入模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ci{&lt;/code&gt;&lt;/strong&gt;：修改当前大括号 &lt;strong&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/strong&gt; 内的内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;dt&lt;/code&gt; + 字符&lt;/strong&gt;：删除直到目标字符前。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ct&lt;/code&gt; + 字符&lt;/strong&gt;：修改直到目标字符前。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:[范围]s/旧/新/[标志]&lt;/code&gt;&lt;/strong&gt;：执行替换命令。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;常用范围：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;.&lt;/code&gt;&lt;/strong&gt;：当前行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;1&lt;/code&gt;&lt;/strong&gt;：文首。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;$&lt;/code&gt;&lt;/strong&gt;：文尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;%&lt;/code&gt;&lt;/strong&gt;：全文。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;a,b&lt;/code&gt;&lt;/strong&gt;：指定行范围，例如 &lt;strong&gt;&lt;code&gt;1,10&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;.+5&lt;/code&gt;&lt;/strong&gt;：当前行往后 &lt;code&gt;5&lt;/code&gt; 行。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;常用标志：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;g&lt;/code&gt;&lt;/strong&gt;：行内全局替换。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;c&lt;/code&gt;&lt;/strong&gt;：逐个确认替换。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;补充：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;使用 &lt;strong&gt;&lt;code&gt;\&amp;lt;旧\&amp;gt;&lt;/code&gt;&lt;/strong&gt; 可以匹配&lt;strong&gt;完整单词&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;复制、粘贴与缩进&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;yy&lt;/code&gt;&lt;/strong&gt;：复制当前整行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Y&lt;/code&gt;&lt;/strong&gt;：默认情况下等同于 &lt;strong&gt;&lt;code&gt;yy&lt;/code&gt;&lt;/strong&gt;，也是复制整行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;3yy&lt;/code&gt;&lt;/strong&gt;：复制从当前行开始的 &lt;code&gt;3&lt;/code&gt; 行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;yw&lt;/code&gt;&lt;/strong&gt;：复制当前单词。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;y$&lt;/code&gt;&lt;/strong&gt;：从光标复制到行尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;y^&lt;/code&gt;&lt;/strong&gt;：从当前光标复制到软行首。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;0y$&lt;/code&gt;&lt;/strong&gt;：从绝对行首复制到行尾，&lt;strong&gt;不包含额外换行语义&lt;/strong&gt;的“整行文字”复制场景很常用。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;^y$&lt;/code&gt;&lt;/strong&gt;：从第一个非空字符复制到行尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;p&lt;/code&gt;&lt;/strong&gt;：粘贴到光标后或下一行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;P&lt;/code&gt;&lt;/strong&gt;：粘贴到光标前或上一行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;/strong&gt;：整行向右缩进。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;&amp;lt;&lt;/code&gt;&lt;/strong&gt;：整行向左缩进。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:%y&lt;/code&gt;&lt;/strong&gt;：复制全文。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:%d&lt;/code&gt;&lt;/strong&gt;：删除全文。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ggvG&lt;/code&gt;&lt;/strong&gt; 或 &lt;strong&gt;&lt;code&gt;Gvgg&lt;/code&gt;&lt;/strong&gt;：全选全文。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:%y+&lt;/code&gt;&lt;/strong&gt;：复制全文到&lt;strong&gt;系统剪贴板&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;quot;+p&lt;/code&gt;&lt;/strong&gt;：从&lt;strong&gt;系统剪贴板&lt;/strong&gt;粘贴。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;5&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;查找、滚动与定位&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/&lt;/code&gt;&lt;/strong&gt;：向下查找关键字。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;?&lt;/code&gt;&lt;/strong&gt;：向上查找关键字。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;*&lt;/code&gt; / &lt;code&gt;#&lt;/code&gt;&lt;/strong&gt;：向下 / 向上查找当前光标所在单词。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;H&lt;/code&gt;&lt;/strong&gt;：跳到当前屏幕顶部。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;M&lt;/code&gt;&lt;/strong&gt;：跳到当前屏幕中间。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;L&lt;/code&gt;&lt;/strong&gt;：跳到当前屏幕底部。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;zz&lt;/code&gt;&lt;/strong&gt;：将当前行置于屏幕中央。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;zt&lt;/code&gt;&lt;/strong&gt;：将当前行置于屏幕顶部。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;zb&lt;/code&gt;&lt;/strong&gt;：将当前行置于屏幕底部。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + F&lt;/code&gt;&lt;/strong&gt;：向下翻一页。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + B&lt;/code&gt;&lt;/strong&gt;：向上翻一页。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + D&lt;/code&gt;&lt;/strong&gt;：向下翻半页。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + U&lt;/code&gt;&lt;/strong&gt;：向上翻半页。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + E&lt;/code&gt;&lt;/strong&gt;：屏幕向下滚动一行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Y&lt;/code&gt;&lt;/strong&gt;：屏幕向上滚动一行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + G&lt;/code&gt;&lt;/strong&gt;：显示当前文件状态信息。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;文本对象与结构化操作&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;yi(&lt;/code&gt;&lt;/strong&gt;：复制括号 &lt;strong&gt;&lt;code&gt;()&lt;/code&gt;&lt;/strong&gt; 内部内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ya(&lt;/code&gt;&lt;/strong&gt;：复制包含括号在内的内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;yi&amp;quot;&lt;/code&gt;&lt;/strong&gt;：复制双引号 &lt;strong&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/strong&gt; 内的内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;yit&lt;/code&gt;&lt;/strong&gt;：复制 HTML / XML 标签内部内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;yiw&lt;/code&gt;&lt;/strong&gt;：复制当前&lt;strong&gt;小单词&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;yiW&lt;/code&gt;&lt;/strong&gt;：复制当前&lt;strong&gt;大单词&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;v%&lt;/code&gt;&lt;/strong&gt;：选中匹配符号之间的内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;d%&lt;/code&gt;&lt;/strong&gt;：删除匹配符号之间的内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;y%&lt;/code&gt;&lt;/strong&gt;：复制匹配符号之间的内容。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;格式化、代码块与可视模式&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;=&lt;/code&gt;&lt;/strong&gt;：执行自动缩进 / 格式化操作。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;==&lt;/code&gt;&lt;/strong&gt;：格式化当前行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;=G&lt;/code&gt;&lt;/strong&gt;：从当前行格式化到文件末尾。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;gg=G&lt;/code&gt;&lt;/strong&gt;：格式化全文。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;=i{&lt;/code&gt;&lt;/strong&gt;：格式化当前大括号块内部内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;gv&lt;/code&gt;&lt;/strong&gt;：重新选中上一次的可视区域。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;gn&lt;/code&gt;&lt;/strong&gt;：选中下一个搜索匹配项。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;8&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;寄存器、标记与跳转历史&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;寄存器常用项：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;quot;&lt;/code&gt;&lt;/strong&gt;：无名寄存器，默认复制、删除、粘贴都走这里。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;0&lt;/code&gt;&lt;/strong&gt;：最近一次 &lt;strong&gt;yank&lt;/strong&gt; 的内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;1-9&lt;/code&gt;&lt;/strong&gt;：最近 &lt;code&gt;9&lt;/code&gt; 次删除历史。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;+&lt;/code&gt;&lt;/strong&gt;：系统剪贴板寄存器。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;.&lt;/code&gt;&lt;/strong&gt;：上一次插入模式输入的内容，只读。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;%&lt;/code&gt;&lt;/strong&gt;：当前文件名，只读。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;#&lt;/code&gt;&lt;/strong&gt;：上一个编辑过的文件名。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:reg&lt;/code&gt;&lt;/strong&gt;：查看所有寄存器。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;标记与跳转：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ma&lt;/code&gt;&lt;/strong&gt;：在当前位置打上名为 &lt;code&gt;a&lt;/code&gt; 的标记。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;&#39;a&lt;/code&gt;&lt;/strong&gt;：跳到标记 &lt;code&gt;a&lt;/code&gt; 所在行的行首。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;`a&lt;/code&gt;&lt;/strong&gt;：跳到标记 &lt;code&gt;a&lt;/code&gt; 的精确位置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt; &lt;/code&gt; ``&lt;/strong&gt;：跳回上一次光标停留的位置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;`.&lt;/code&gt;&lt;/strong&gt;：跳回上一次修改的位置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;`^&lt;/code&gt;&lt;/strong&gt;：跳回上一次退出插入模式的位置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:marks&lt;/code&gt;&lt;/strong&gt;：查看所有标记。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:delmarks a&lt;/code&gt;&lt;/strong&gt;：删除标记 &lt;code&gt;a&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:delmarks!&lt;/code&gt;&lt;/strong&gt;：删除全部标记。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + O&lt;/code&gt; / &lt;code&gt;Ctrl + I&lt;/code&gt;&lt;/strong&gt;：在跳转历史中后退 / 前进。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;9&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;缓冲区、标签页与窗口管理&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;缓冲区与标签页：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:ls&lt;/code&gt;&lt;/strong&gt;：列出当前所有缓冲区。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:b 编号&lt;/code&gt;&lt;/strong&gt;：切换到指定缓冲区。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;gt&lt;/code&gt; / &lt;code&gt;gT&lt;/code&gt;&lt;/strong&gt;：切换到下一个 / 上一个标签页。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;n gt&lt;/code&gt;&lt;/strong&gt;：跳到第 &lt;code&gt;n&lt;/code&gt; 个标签页。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:bn&lt;/code&gt; / &lt;code&gt;:bp&lt;/code&gt;&lt;/strong&gt;：切换到下一个 / 上一个缓冲区。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:#&lt;/code&gt;&lt;/strong&gt;：显示当前行号。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;窗口与分屏：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;h/j/k/l&lt;/code&gt;&lt;/strong&gt; 或 &lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;w&lt;/code&gt;&lt;/strong&gt;：在窗口之间切换。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;s&lt;/code&gt;&lt;/strong&gt;：水平分屏。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;v&lt;/code&gt;&lt;/strong&gt;：垂直分屏。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;q&lt;/code&gt;&lt;/strong&gt;：关闭当前窗口。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;o&lt;/code&gt;&lt;/strong&gt;：只保留当前窗口，关闭其他窗口。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;+&lt;/code&gt; / &lt;code&gt;-&lt;/code&gt;&lt;/strong&gt;：增大 / 减小当前窗口高度。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/strong&gt;：增大 / 减小当前窗口宽度。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;=&lt;/code&gt;&lt;/strong&gt;：让所有窗口等宽等高。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;_&lt;/code&gt;&lt;/strong&gt;：将当前窗口高度最大化。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;|&lt;/code&gt;&lt;/strong&gt;：将当前窗口宽度最大化。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;H/J/K/L&lt;/code&gt;&lt;/strong&gt;：移动当前窗口本身的位置，注意这里是&lt;strong&gt;大写&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt; + &lt;code&gt;r&lt;/code&gt;&lt;/strong&gt;：轮换窗口位置。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;10&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;插入模式专用快捷键&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + H&lt;/code&gt;&lt;/strong&gt;：退格，删除前一个字符。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt;&lt;/strong&gt;：删除前一个单词。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + U&lt;/code&gt;&lt;/strong&gt;：删除当前行中光标前的所有内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + N&lt;/code&gt;&lt;/strong&gt;：补全下一个候选项。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + P&lt;/code&gt;&lt;/strong&gt;：补全上一个候选项。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + T&lt;/code&gt;&lt;/strong&gt;：增加当前行缩进。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + D&lt;/code&gt;&lt;/strong&gt;：减少当前行缩进。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + O&lt;/code&gt;&lt;/strong&gt;：临时回到&lt;strong&gt;普通模式&lt;/strong&gt;执行一个命令，执行后立即回到插入模式。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;11&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;命令行模式快捷键&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:&lt;/code&gt;&lt;/strong&gt;：进入命令行模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + F&lt;/code&gt;&lt;/strong&gt;：打开命令历史窗口，可像编辑文本一样编辑历史命令。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt;&lt;/strong&gt;：删除前一个单词。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + R&lt;/code&gt; + 寄存器名&lt;/strong&gt;：把寄存器内容插入到命令行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + R&lt;/code&gt; &lt;code&gt;Ctrl + W&lt;/code&gt;&lt;/strong&gt;：把当前光标下的单词直接插入到命令行。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;12&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;保存与退出&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:w&lt;/code&gt;&lt;/strong&gt;：保存。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:wq&lt;/code&gt;&lt;/strong&gt;：保存并退出。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ZZ&lt;/code&gt;&lt;/strong&gt;：保存并退出。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;:q!&lt;/code&gt;&lt;/strong&gt;：强制退出，不保存。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ZQ&lt;/code&gt;&lt;/strong&gt;：强制退出，不保存。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item><item>
            <title>🛠️ VSCode 高效开发快捷键速查</title>
            <link>https://largeoyos.github.io/post/vscode-shortcuts/</link>
            <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://largeoyos.github.io/post/vscode-shortcuts/</guid>
            <description>&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;光标与选择&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + L&lt;/code&gt;&lt;/strong&gt;：选中当前整行；在终端中可用于清屏。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + D&lt;/code&gt;&lt;/strong&gt;：选中当前光标下的单词，再次按下可继续选中下一个相同单词。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Shift + L&lt;/code&gt;&lt;/strong&gt;：一次性选中所有与当前选中内容相同的词。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Alt + ↑ / ↓&lt;/code&gt;&lt;/strong&gt;：在当前光标上方或下方添加光标，进行&lt;strong&gt;多光标编辑&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;行操作与基础编辑&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Alt + ↑ / ↓&lt;/code&gt;&lt;/strong&gt;：将当前行或选中的代码块向上或向下移动。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Alt + Shift + ↑ / ↓&lt;/code&gt;&lt;/strong&gt;：向上或向下复制当前行或选中的代码块。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Enter&lt;/code&gt;&lt;/strong&gt;：在下方新起一行插入。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Shift + Enter&lt;/code&gt;&lt;/strong&gt;：在上方新起一行插入。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Shift + K&lt;/code&gt;&lt;/strong&gt;：删除当前整行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + /&lt;/code&gt;&lt;/strong&gt;：对当前行或选中内容进行&lt;strong&gt;注释/取消注释&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Alt + Shift + A&lt;/code&gt;&lt;/strong&gt;：添加或取消&lt;strong&gt;块注释&lt;/strong&gt;（如 &lt;code&gt;/* ... */&lt;/code&gt;）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + X&lt;/code&gt;&lt;/strong&gt;：清除行尾空格。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Shift + Alt + F&lt;/code&gt;&lt;/strong&gt;：格式化当前文件。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;导航、搜索与代码查看&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + G&lt;/code&gt;&lt;/strong&gt;：跳转到指定行号。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + P&lt;/code&gt;&lt;/strong&gt;：快速搜索并跳转到文件。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + F&lt;/code&gt;&lt;/strong&gt;：在当前文件中查找。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + H&lt;/code&gt;&lt;/strong&gt;：在当前文件中替换。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;F12&lt;/code&gt;&lt;/strong&gt;：跳转到定义。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Alt + F12&lt;/code&gt;&lt;/strong&gt;：预览定义，不离开当前位置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + I&lt;/code&gt;&lt;/strong&gt;：显示悬浮提示。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Space&lt;/code&gt;&lt;/strong&gt;：强制触发代码补全提示。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + .&lt;/code&gt;&lt;/strong&gt;：打开&lt;strong&gt;快速修复&lt;/strong&gt;建议。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, V&lt;/code&gt;&lt;/strong&gt;：在侧边栏预览 Markdown。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, D&lt;/code&gt;&lt;/strong&gt;：在资源管理器中定位当前文件。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;重构与代码折叠&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;F2&lt;/code&gt;&lt;/strong&gt;：重命名变量、函数等符号，并同步更新引用。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + 0&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;折叠全部&lt;/strong&gt;代码块。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + J&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;展开全部&lt;/strong&gt;代码块。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + [&lt;/code&gt;&lt;/strong&gt;：递归折叠当前区域。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + ]&lt;/code&gt;&lt;/strong&gt;：递归展开当前区域。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + 2&lt;/code&gt;&lt;/strong&gt;：折叠所有二级区块；同理可使用 &lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + 1&lt;/code&gt;&lt;/strong&gt; 到 &lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + 7&lt;/code&gt;&lt;/strong&gt; 折叠对应级别。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;5&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;编辑器与窗口管理&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Enter&lt;/code&gt;&lt;/strong&gt;：固定当前编辑器标签页。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + ← / →&lt;/code&gt;&lt;/strong&gt;：将当前编辑器移动到左侧或右侧分屏。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + \&lt;/code&gt;&lt;/strong&gt;：分屏。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Alt + 数字键&lt;/code&gt;&lt;/strong&gt;：在不同的编辑器标签页之间快速切换。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Alt + ← / →&lt;/code&gt;&lt;/strong&gt;：在不同的编辑器分组之间快速切换。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + W&lt;/code&gt;&lt;/strong&gt;：关闭当前编辑器标签页或窗口。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, W&lt;/code&gt;&lt;/strong&gt;：关闭所有已保存的文件。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + J&lt;/code&gt;&lt;/strong&gt;：显示或隐藏底部面板。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Z&lt;/code&gt;&lt;/strong&gt;：进入&lt;strong&gt;禅模式&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;工作区与侧边栏面板&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Shift + E&lt;/code&gt;&lt;/strong&gt;：聚焦到&lt;strong&gt;资源管理器&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + B&lt;/code&gt;&lt;/strong&gt;：显示或隐藏&lt;strong&gt;侧边栏&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Shift + F&lt;/code&gt;&lt;/strong&gt;：打开&lt;strong&gt;全局搜索&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Shift + G&lt;/code&gt;&lt;/strong&gt;：打开&lt;strong&gt;源代码管理 / Git&lt;/strong&gt; 面板。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Shift + D&lt;/code&gt;&lt;/strong&gt;：打开&lt;strong&gt;调试&lt;/strong&gt;面板。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + Shift + X&lt;/code&gt;&lt;/strong&gt;：打开&lt;strong&gt;扩展&lt;/strong&gt;面板。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;设置、语言与文件操作&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, Ctrl + S&lt;/code&gt;&lt;/strong&gt;：打开快捷键设置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, S&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;全部保存&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl + K, M&lt;/code&gt;&lt;/strong&gt;：更改当前文件的语言模式。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
